No se pueden reproducir ciertos videos
Estoy intentando reproducir películas en el dispositivo Android desde nuestro servidor. No es un servidor de medios, sino un servidor Apache regular. Utilizamos la misma API para acceder a los videos en el iPhone y funciona bien.
En el dispositivo Android, ciertos videos funcionan y otros no. Todos fueron creados de la misma manera, excepto que la mayoría de los que no funcionan están compuestos de imágenes fijas y audio.
- Inserción de un vídeo en MediaStore
- Cómo obtener el ID de video de YouTube, incluidos los parámetros
- Problema de transmisión en vivo de Android RTSP
- Intención de tomar video en android
- Reproducción de vídeo nativa de Android con canal alfa
Hemos intentado volver a codificarlos con Videora, e intentamos insinuarlos con MP4Box. Todos los videos juegan perfectamente bien cuando se almacenan en la tarjeta SD. También hemos intentado descargar primero el video del servidor a la tarjeta SD, guardarlo como un archivo y luego reproducirlo desde el archivo, pero tampoco funciona.
La ayuda sería asombrosa. Estoy enormemente confundido. Gracias.
Editar – Logcat:
01-19 08:19:12.669: DEBUG/MediaPlayer(1878): Couldn't open file on client side, trying server side 01-19 08:19:14.119: INFO/ActivityManager(1172): Displayed activity com.myproject/.VideoClass: 1966 ms (total 1966 ms) 01-19 08:19:15.779: ERROR/PlayerDriver(1071): Command PLAYER_INIT completed with an error or info UNKNOWN PVMFStatus 01-19 08:19:15.789: ERROR/MediaPlayer(1878): error (200, -32) 01-19 08:19:15.789: ERROR/MediaPlayer(1878): Error (200,-32) 01-19 08:19:15.789: DEBUG/VideoView(1878): Error: 200,-32 01-19 08:19:15.849: WARN/PlayerDriver(1071): PVMFInfoErrorHandlingComplete
UPDATE : Aquí un pastebin del análisis de video para tres videos diferentes. Los primeros flujos de la aplicación desde el servidor. El segundo video no se transmitirá, pero puede descargarse y reproducirse desde el dispositivo. El tercero no puede ser transmitido o descargado para ser reproducido. Http://pastebin.com/9qChSkFz
WTF.
- Cómo utilizar un solo jugador para los anuncios y el vídeo con google android Exoplayer
- Cómo implementar el chat de voz y video
- Uso de VideoView, cómo eliminar el mensaje de alerta "no se puede reproducir este video"?
- Convertir secuencias de entrada de vídeo a RTMP
- Android frente a la cámara está grabando videos entre 7,5 y 8,0 - setVideoFrameRate no funciona - Samsung galaxy s2
- Android MediaPlayer parpadea al reproducir vídeos en Android 4.2.2
- MediaMuxer no puede hacer MP4 que son streamable
- ¿Cómo desarrollar un reproductor de video que recibe transmisión de video en la difusión wi-fi / multidifusión?
He corrido en el mismo problema, y después de dar inicialmente para arriba, he encontrado una solución.
Me topé con la siguiente página http://developer.android.com/guide/appendix/media-formats.html que dice:
Para los contenedores 3GPP y MPEG-4, el átomo moov debe preceder a cualquier átomo mdat, pero debe tener éxito el átomo ftyp.
Después de hacer un poco de excavación, descubrí que este es exactamente el problema. El video grabado desde ciertos teléfonos Android (creo que pre 2.3) coloca el átomo moov al final del archivo. Esto los hace inmejorables. Algunos google le mostrará que este es un problema común con los archivos MP4 y los reproductores flash en particular, ya que se hicieron para transmitir vídeo.
Incluso hay un código de error específico para esto en MediaPlayer (pero no vi estos registrados) MediaPlayer # MEDIA_ERROR_NOT_VALID_FOR_PROGRESSIVE_PLAYBACK.
Mi solución es ejecutar el archivo de vídeo a través de una herramienta externa para mover el átomo moov al inicio. Terminé usando MP4Box: http://gpac.wp.institut-telecom.fr/mp4box/ y el comando
MP4Box -inter 500 original.mp4 -out fixed.mp4
Espero que ayude a alguien más!
- ¿Transmitirá TIME_TICK en sueño profundo?
- Referencia para buenos patrones de diseño de la interfaz de usuario de Android