91 votes

Erreur Android MediaPlayer (1, -2147483648)

J'ai deux vidéos que je suis en train de charger dans un VideoView aide

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

Les deux vidéos, qu'ils soient vidéo 1 et vidéo 2, ont les caractéristiques suivantes (extraites à l'aide d' ffmpeg -i); en fait, ils sont deux codages différents de la même vidéo:

  1. Vidéo 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. Vidéo 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
    

Je suis conscient que AAC soutien, Nid d'abeille, et donc j'ai testé les vidéos avec plusieurs appareils; les résultats sont donnés ci-dessous:

  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)

Les deux vidéos de jouer fine dans Google Chrome sur un PC. Il pourrait être utile d'ajouter que, dans le cas OK, la vidéo et l'audio à la fois jouer correctement. Dans l'erreur, paragraphe 1, de -2147483648) cas, le même journal est vomie par tous les appareils (à l'exception de 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

Dans le (1) cas, la suite du journal est vomie par Nexus One, et la vidéo ne se charge jamais:

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

Dans les deux (2) cas, la suite du journal est vomie par Nexus One et comme vous pouvez le voir, se termine avec une erreur (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

De ce que j'ai lu, le message d'erreur (1, -2147483648) peut correspondre à la non prise en charge des codecs, de la corruption des métadonnées ou incorrecte de fichier d'en-têtes. Si c'est le cas, pourriez-vous m'indiquer la bonne direction à utiliser le codec? Merci.

123voto

sturrockad Points 638

Juste pour clarifier quelque chose pour toute personne lisant cette question, basée sur le titre.

Lorsque l'on regarde la valeur de l'erreur (1, -2147483648), le " 1 " correspond à la constante dans MediaPlayer.MEDIA_ERROR_UNKNOWN.

-2147483648 correspond à hexadécimale 0x80000000 qui est définie comme UNKNOWN_ERROR dans des cadres/native/include/utils/Erreurs.h

Cela montre que l'erreur de la source est difficile à cerner car il est relativement générique de la valeur de retour, lancé par le codec et les problèmes de compatibilité comme mentionné ci-dessus, mais également thread annulations et plusieurs autres types.

Pour votre question, je voudrais vous recommandons de consulter le Android pris en charge les Formats de Média compatible avec les versions d'Android et de voir si le type d'encodage est la cause de votre problème, mais comme mentionné ci-dessus l'Inconnu de réponse d'Erreur peut être provoquée par un certain nombre de problèmes.

7voto

Jul Points 3909

Pour la diffusion, l'Android site a une note:

Pour le 3GP et MPEG-4 conteneurs, le moov atom doit précéder toute mdat les atomes, mais doit réussir l'ftyp atome.

J'ai eu le même message d'erreur avant de déplacer l' moov atom. Afin de résoudre ce problème, vous pouvez utiliser mp4Box avec cette commande:

MP4Box -hint output.mp4 

La plupart de mes vidéos en flux après que. Si cela ne fonctionne pas, essayez-le avec ffmpeg:

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

Il existe d'autres outils que vous pouvez trouver ici.

1voto

jdramer Points 91

J'ai eu un problème similaire. Dans mon cas, la vidéo jouerait très bien quand je l'ai téléchargé pour le téléphone d'abord, puis l'a joué. Mais quand j'ai essayé d'utiliser Progressive HTTP, je voudrais obtenir le même message d'erreur indiqué dans l'OP.

J'ai vérifié que le ftyp, moov et mdat atomes étaient dans le bon ordre. Il s'est avéré que le problème a été que la valeur de la ftyp champ. Il a été mis à 'qt '. J'ai utilisé MP4Box d'extraire les pistes et créer un nouveau fichier mp4 qui avait le ftyp mis à 'isom'. Ce nouveau fichier a bien fonctionné pour le progrès HTTP.

0voto

droiding Points 31

Dans mon cas, l'erreur était due au fait que le lecteur multimédia ne disposait pas d'autorisations de fichier sur la vidéo stockée localement. Essayez de stocker la vidéo dans le répertoire /mnt/sdCARD .

0voto

Stancho Stanchev Points 211

en fait j'ai le même problème - vraiment, il semble que la Vidéo 2 format est plus portable dans le monde Android:

mon expérience:

Vidéo 2 format fonctionne bien sur les prochains appareils:

  • Samsung Galaxy Nexus ( Android 4.1.1 ) Vidéo 1 fonctionne bien aussi
  • Motorola XT901 ( Android 4.0.4 ) Vidéo 1 ne fonctionne pas
  • Lenovo ThinkPad Tablet ( Android 4.0.3 )

intéressant, c'est qu'il ressemble à l'ffmpeg crée .mp4 fichiers Vidéo 2 format par defaut

J'ai un fichier nommé 1.mp4, qui ont la Vidéo de format de 1, et juste avec:

ffmpeg -i 1.mp4 2.mp4

J'ai eu la Vidéo 2 de format dans le fichier 2.mp4

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X