Error de MediaPlayer de Android (1, -2147483648)

Tengo dos videos diferentes que estoy intentando cargar en un VideoView usando

 videoView.setVideoURI(Uri.parse(url)); 

Los dos videos, sean video 1 y video 2 , tienen las siguientes especificaciones (extraídas usando ffmpeg -i ); De hecho, son dos codificaciones diferentes del mismo video:

  1. Video 1:

     Seems stream 0 codec frame rate differs from container frame rate: 180000.00 (180000/1) -> 90000.00 (180000/2) Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '4fbfd5ece4b0932236fc234d.mp4': Metadata: major_brand : mp42 minor_version : 0 compatible_brands: mp42isomavc1 creation_time : 2011-12-03 04:43:46 genre : Trailer artist : Paramount Pictures title : Captain America: The First Avenger - Theatrical Trailer #2 encoder : HandBrake 4344svn 2011111001 date : 2011 Duration: 00:02:30.67, start: 0.000000, bitrate: 6738 kb/s Stream #0.0(und): Video: h264 (High), yuv420p, 1920x800 [PAR 1:1 DAR 12:5], 6575 kb/s, 23.97 fps, 90k tbr, 90k tbn, 180k tbc Metadata: creation_time : 2011-12-03 04:43:46 Stream #0.1(eng): Audio: aac, 48000 Hz, stereo, s16, 159 kb/s Metadata: creation_time : 2011-12-03 04:43:46 
  2. Video 2:

     Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '500416ea44aeb4b95d5ae8a0_hd.mp4': Metadata: major_brand : isom minor_version : 512 compatible_brands: isomiso2avc1mp41 creation_time : 2011-12-03 04:43:46 title : Captain America: The First Avenger - Theatrical Trailer #2 artist : Paramount Pictures date : 2011 encoder : Lavf53.32.100 genre : Trailer Duration: 00:02:30.69, start: 0.000000, bitrate: 2045 kb/s Stream #0.0(und): Video: h264 (High), yuv420p, 1280x720 [PAR 27:20 DAR 12:5], 1889 kb/s, 23.99 fps, 90k tbr, 180k tbn, 180k tbc Metadata: creation_time : 2011-12-03 04:43:46 Stream #0.1(eng): Audio: aac, 44100 Hz, stereo, s16, 151 kb/s Metadata: creation_time : 2011-12-03 04:43:46 

Soy consciente de que el apoyo de AAC vino con Honeycomb, y por lo tanto he probado los videos con varios dispositivos; Los resultados se dan a continuación:

  1. SGS II with custom 4.0.3 OS(Sensation ROM 3.4 with CF-Root kernel) - Video 1:OK - Video2:OK
  2. SGS I with Samsung 2.3.3 OS - Video 1:error (1, -2147483648) - Video 2:OK
  3. SGS I with custom 4.0.3 OS(ICS SGS TEAM ROM with Devil kernel) - Video 1:error (1, -2147483648) - Video 2:OK
  4. Nexus One with original 2.3.6 OS - Video 1:See (1) below - Video 2:See (2) below
  5. Emulator with 2.2 OS - Video 1:error (1, -2147483648) - Video 2:error (1, -2147483648)
  6. Emulator with 4.0.3 OS - Video 1:error (1, -2147483648) - Video 2:error (1, -2147483648)

Ambos vídeos funcionan bien en Google Chrome en un PC. Podría ser útil agregar que en el caso de OK, el video y el audio funcionan correctamente. En el caso de error (1, -2147483648), se emite el mismo registro de todos los dispositivos (excepto Nexus One):

 07-18 10:25:10.996: I/MediaPlayer(17860): uri is:http://s3-eu-west-1.amazonaws.com/cf-templates-k6ohn88yswx5-eu-west-1/videos/4fbc88e7e4b0b0896e877764/4fbfd5ece4b0932236fc234d.mp4 07-18 10:25:10.996: I/MediaPlayer(17860): path is null 07-18 10:25:10.996: D/MediaPlayer(17860): Couldn't open file on client side, trying server side 07-18 10:25:39.859: D/MediaPlayer(17860): getMetadata 07-18 10:25:45.070: E/MediaPlayer(17860): error (1, -2147483648) 07-18 10:25:45.074: E/MediaPlayer(17860): Error (1,-2147483648) 07-18 10:25:45.078: D/VideoView(17860): Error: 1,-2147483648 

En el caso (1), el siguiente registro es emitido desde Nexus One, y el video nunca se carga:

 07-18 13:49:20.115: D/MediaPlayer(10109): Couldn't open file on client side, trying server side 07-18 13:49:20.115: I/StagefrightPlayer(68): setDataSource('http://s3-eu-west-1.amazonaws.com/cf-templates-k6ohn88yswx5-eu-west-1/videos/4fbc88e7e4b0b0896e877764/4fbfd5ece4b0932236fc234d.mp4') 07-18 13:49:20.135: I/NuHTTPDataSource(68): connect to s3-eu-west-1.amazonaws.com:80/cf-templates-k6ohn88yswx5-eu-west-1/videos/4fbc88e7e4b0b0896e877764/4fbfd5ece4b0932236fc234d.mp4 @0 07-18 13:49:20.155: I/ActivityManager(98): Displayed com.woisio/.video.VideoActivity: +450ms 07-18 13:49:20.795: I/NuCachedSource2(68): Keep alive 07-18 13:49:22.185: I/OMXCodec(68): [OMX.qcom.video.decoder.avc] allocating 4 buffers of size 460800 on input port 07-18 13:49:22.195: I/OMXCodec(68): [OMX.qcom.video.decoder.avc] allocating 8 buffers of size 2304000 on output port 07-18 13:49:25.325: D/dalvikvm(9499): GC_EXPLICIT freed 13K, 50% free 2726K/5379K, external 1625K/2137K, paused 116ms 07-18 13:49:27.525: I/NuCachedSource2(68): Keep alive 07-18 13:49:28.235: I/NuCachedSource2(68): Cache full, done prefetching for now 07-18 13:49:30.275: D/dalvikvm(9902): GC_EXPLICIT freed 8K, 50% free 2714K/5379K, external 1625K/2137K, paused 69ms 07-18 13:49:34.255: D/Finsky(9066): [1] 5.onFinished: Installation state replication succeeded. 07-18 13:49:35.855: I/NuCachedSource2(68): Keep alive 07-18 13:49:39.055: D/dalvikvm(9911): GC_EXPLICIT freed 22K, 50% free 2710K/5379K, external 1625K/2137K, paused 38ms 07-18 13:49:42.575: I/NuCachedSource2(68): Keep alive 07-18 13:49:43.285: I/NuCachedSource2(68): Keep alive 07-18 13:49:44.095: D/dalvikvm(9918): GC_EXPLICIT freed 7K, 50% free 2708K/5379K, external 1625K/2137K, paused 66ms 07-18 13:49:49.085: D/dalvikvm(9925): GC_EXPLICIT freed 15K, 49% free 3268K/6407K, external 1625K/2137K, paused 50ms 07-18 13:49:50.925: I/NuCachedSource2(68): Keep alive 07-18 13:49:54.115: D/dalvikvm(6756): GC_EXPLICIT freed 9K, 44% free 3774K/6727K, external 1625K/2137K, paused 77ms 07-18 13:49:57.685: I/NuCachedSource2(68): Keep alive 07-18 13:49:58.375: I/NuCachedSource2(68): Keep alive 07-18 13:49:59.105: D/dalvikvm(9066): GC_EXPLICIT freed 385K, 53% free 3186K/6727K, external 1625K/2137K, paused 66ms 07-18 13:50:05.955: I/NuCachedSource2(68): Keep alive 07-18 13:50:06.045: D/dalvikvm(8047): GC_EXPLICIT freed 9K, 47% free 3830K/7111K, external 1625K/2137K, paused 86ms 07-18 13:50:09.465: I/3gw.Service(488): Mobile Network not connected - not roaming 07-18 13:50:12.765: I/NuCachedSource2(68): Keep alive 07-18 13:50:13.465: I/NuCachedSource2(68): Keep alive 07-18 13:50:18.775: I/WindowManager(98): Setting rotation to 3, animFlags=0 07-18 13:50:18.795: I/ActivityManager(98): Config changed: { scale=1.0 imsi=286/2 loc=en_US touch=3 keys=1/1/2 nav=3/1 orien=2 layout=34 uiMode=17 seq=34} 07-18 13:50:18.895: D/dalvikvm(169): GC_EXTERNAL_ALLOC freed 108K, 48% free 3253K/6215K, external 5172K/5180K, paused 37ms 07-18 13:50:21.005: I/NuCachedSource2(68): Keep alive 07-18 13:50:21.265: D/dalvikvm(98): GC_EXPLICIT freed 394K, 42% free 6631K/11335K, external 4458K/5567K, paused 109ms 

En el caso (2), se arroja el siguiente registro desde Nexus One y como se puede ver, termina con un error (1, -2147483648):

 07-18 13:47:03.595: D/MediaPlayer(10059): Couldn't open file on client side, trying server side 07-18 13:47:03.595: I/StagefrightPlayer(68): setDataSource('http://s3-eu-west-1.amazonaws.com/cf-templates-k6ohn88yswx5-eu-west-1/videos/4ff4514444aec3d2f9f07ead/500416ea44aeb4b95d5ae8a0_hd.mp4') 07-18 13:47:03.605: I/NuHTTPDataSource(68): connect to s3-eu-west-1.amazonaws.com:80/cf-templates-k6ohn88yswx5-eu-west-1/videos/4ff4514444aec3d2f9f07ead/500416ea44aeb4b95d5ae8a0_hd.mp4 @0 07-18 13:47:03.625: I/ActivityManager(98): Displayed com.woisio/.video.VideoActivity: +505ms 07-18 13:47:05.355: I/OMXCodec(68): [OMX.qcom.video.decoder.avc] allocating 4 buffers of size 460800 on input port 07-18 13:47:05.355: I/OMXCodec(68): [OMX.qcom.video.decoder.avc] allocating 8 buffers of size 1382400 on output port 07-18 13:47:05.365: I/NuCachedSource2(68): Keep alive 07-18 13:47:08.375: D/MediaPlayer(10059): getMetadata 07-18 13:47:08.745: D/dalvikvm(9925): GC_EXPLICIT freed 651K, 49% free 3275K/6407K, external 1625K/2137K, paused 68ms 07-18 13:47:09.205: I/3gw.Service(488): Mobile Network not connected - not roaming 07-18 13:47:11.565: I/NuCachedSource2(68): Cache full, done prefetching for now 07-18 13:47:12.095: I/NuCachedSource2(68): Keep alive 07-18 13:47:14.245: W/QCvdec(68): H264_Utils::check_header 07-18 13:47:14.245: W/QCvdec(68): check_header: start code 33 07-18 13:47:14.245: W/QCvdec(68): H264_Utils::check_header 07-18 13:47:14.245: W/QCvdec(68): check_header: start code 10 07-18 13:47:14.245: W/QCvdec(68): Parsing Error unsupported profile or level 07-18 13:47:14.245: W/QCvdec(68): ETB in Invalid State 07-18 13:47:14.245: E/OMXCodec(68): [OMX.qcom.video.decoder.avc] ERROR(0x8000100a, 0) 07-18 13:47:14.245: E/MediaPlayer(10059): error (1, -2147483648) 07-18 13:47:14.285: E/MediaPlayer(10059): Error (1,-2147483648) 07-18 13:47:14.285: D/VideoView(10059): Error: 1,-2147483648 

Por lo que he leído, el error (1, -2147483648) puede corresponder a codecs no compatibles, metadatos dañados o encabezados de archivo incorrectos. Si es así, ¿podría apuntarme en la dirección correcta para usar cuál códec? Gracias.

Sólo para aclarar algo para cualquiera que lea esta pregunta basada en el título.

Cuando se mira el valor de error (1, -2147483648), el valor '1' corresponde a la constante en MediaPlayer.MEDIA_ERROR_UNKNOWN .

-2147483648 corresponde a hexadecimal 0x80000000 que se define como UNKNOWN_ERROR en frameworks / native / include / utils / Errors.h

Esto muestra que la fuente del error es difícil de precisar ya que es un valor de retorno genérico, lanzado por codec y problemas de compatibilidad como se mencionó anteriormente, pero también cancelaciones de subprocesos y varios otros tipos.

Para su problema, recomendaría consultar los formatos de soporte compatibles con Android con versiones compatibles de Android y ver si el tipo de codificación es la causa de su problema, pero como se mencionó anteriormente la respuesta de error desconocido puede estar causada por una serie de problemas.

Para streaming, el sitio de Android tiene una nota:

Para los contenedores 3GPP y MPEG-4, el átomo moov debe preceder a cualquier átomo mdat, pero debe tener éxito el átomo ftyp.

Tengo el mismo error antes de mover el átomo moov . Para solucionar esto, puedes usar mp4Box con este comando:

 MP4Box -hint output.mp4 

La mayoría de mis videos se pueden transmitir después de eso. Si no funciona, intente esto con ffmpeg:

 ffmpeg -i input.flv -f mp4 -vcodec libx264 -vprofile baseline -acodec libfaac -ar 16k -ab 32k output.mp4 MP4Box -hint output.mp4 

Hay otras herramientas que puedes encontrar aquí .

Tenga cuidado con el tipo de soporte y la resolución de su dispositivo. Error de error (1, -2147483648) menudo, aparecen cuando su tipo de medios de vídeo, codecs o resolución no es compatible con su dispositivo.

Compruebe el tipo de soporte admitido por Android en la documentación:

https://developer.android.com/guide/appendix/media-formats.html

Por ejemplo, podemos notar que el dispositivo por encima de 3.0 soporta. Mp4, pero no todos ellos son compatibles con HD 720p.

Tuve un problema similar. En mi caso, el video funcionaría bien cuando lo descargue al teléfono primero y después lo reproduzca. Pero cuando intenté utilizar HTTP progresivo conseguiría el mismo error observado en el OP.

Comprobé que los átomos ftyp, moov y mdat estaban en el orden correcto. Resultó que el problema era el valor del campo ftyp. Se puso a 'qt'. Utilicé MP4Box para extraer las pistas y crear un nuevo archivo mp4 que tenía el ftyp puesto a 'isom'. Este nuevo archivo funcionó bien para el Progresivo HTTP.

También obtengo el mismo problema de error MEDIA_ERROR_UNKNOWN para reproducir vídeo (rtsp).

En mi caso estoy encontrando problema con mi wifi. Algunas razones de seguridad wifi está restringido para el protocolo RTSP. Así que estoy enfrentando este problema de error MEDIA_ERROR_UNKNOWN. Una vez verifique con sus permisos de red.

Cuando me muevo a los datos móviles para reproducir vídeo, funciona bien para mí. Puede ser que esto sea provechoso quienquiera que hace frente al mismo tipo de error :).

En mi caso, el error se debió a que el reproductor multimedia no tenía permisos de archivo en el video almacenado localmente. Intente almacenar el video en el directorio /mnt/sdCARD .

Yo estaba enfrentando el mismo problema, Pero lo que hice en mi lado es

En primer lugar, detengo el reproductor multimedia y luego lo libero.

MMediaPlayer.stop (); MMediaPlayer.release ();

Resolví esto de manera similar a la forma declarada en la respuesta de @ nam-trung, sin embargo como mis videos ya eran h264 y mp4 todo lo que necesitaba hacer era ejecutar lo siguiente en cada archivo:

 ffmpeg -i input.mp4 -vprofile baseline output.mp4 

Después de eso, los videos funcionaron en VideoView cuando se ejecutan en todos los dispositivos que he probado en la API de ejecución v19 a través de v25.

En mi caso, este problema fue causado por una URL de medios con espacios! Aquí está la solución:

 mMediaPlayer.setDataSource(source.replaceAll(" ", "%20")); 
  • Cómo jugar rtsp live stream desde android? (Rtsp: // someserver: port / live / 001204A006F5.stream)
  • Android :: VideoView dentro de un ScrollView
  • Cómo activar FullScreen con VideoView Android
  • Android VideoView pantalla completa con controles de barra de navegación superpuestos
  • Forzar el vídeo para que se reproduzca en Orientación vertical sólo con MediaPlayer y VideoView
  • Android 4.1 - RTSP con VideoView y MediaController
  • Fragmento retenido no retenido
  • Vídeo Frame by Frame buscando
  • Reproductor multimedia con YouTube?
  • VideoView - MediaController no aparece
  • Transmisión de video en vivo entre dos teléfonos Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.