机器人的MediaPlayer误差(1,-2147483648)(Android MediaPlay

2019-06-17 11:30发布

我有我想要两个不同的视频加载到一个VideoView使用

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

两个视频,让他们视频1视频2,具有以下规格(使用提取ffmpeg -i ); 事实上,它们是同一个视频的两个不同的编码:

  1. 视频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. 视频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 

据我所知,支持AAC带着蜂窝,因此,我测试了几个设备上的视频; 该结果如下:

  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)

这两部影片在谷歌的Chrome PC玩罚款。 这可能是有益的补充,在正常情况下,视频和音频都正常播放。 在错误(1,-2147483648)的情况下,相同的日志从所有设备喷出(除了Nexus之一):

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

在(1)情况下,以下日志从Nexus One的喷出,视频从未加载:

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

在(2)情况下,以下日志从Nexus之一喷出和你可以看到,用一个错误(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

从我已阅读,错误(1,-2147483648)可以对应于不支持的编解码器,损坏的元数据或不正确的文件头。 如果是这样,你可以点我在为要使用的编解码器的正确方向? 谢谢。

Answer 1:

只是为了澄清一些对任何人读取基于标题这个问题。

当在误差值(1,-2147483648)看,“1”值对应于在恒定MediaPlayer.MEDIA_ERROR_UNKNOWN 。

-2147483648对应于在框架定义为UNKNOWN_ERROR /天然的/包括/ utils的/ Errors.h十六进制0x80000000的

这表明错误的来源是很难牵制,因为它是一个相当普通的返回值,如上面提到的,而且线程的取消和其他几种类型的编解码器和兼容性问题抛出。

对于您的问题,我建议您参考Android的支持的媒体格式兼容的Android版本,看看编码类型是你的问题的原因,但上面的未知错误响应,提到可以通过许多问题引起的。



Answer 2:

对于流媒体,Android的网站上有一张纸条:

用于3GPP和MPEG-4容器,该MOOV原子必须先于任何的mdat原子,但必须成功的FTYP原子。

我移动之前得到了同样的错误moov原子。 为了解决这个问题,你可以使用mp4Box使用这个命令:

MP4Box -hint output.mp4 

我的大部分视频可以后流。 如果它不工作,试试这个与ffmpeg的:

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

还有,你可以找到其他工具在这里 。



Answer 3:

我正面临着在Android P中的同样的错误(像素2 XL),但我需要做的就是把android:usesCleartextTraffic="true"我的AndroidManifest.xml的应用程序标签。



Answer 4:

把你的设备的支持的媒体类型和分辨率的照顾。 错误error (1, -2147483648)经常出现在你的视频媒体类型,编解码器,或分辨率不是您的设备支持。

签出文档中的Android支持的媒体类型:

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

例如,我们可以看到在3.0以上支持.MP4该设备,但不是所有的人都支持高清720p。



Answer 5:

我有一个类似的问题。 在我来说,当我第一次就下载到手机上,然后发挥它的视频将发挥很好。 但是,当我尝试使用渐进式HTTP我会得到在OP指出了同样的错误。

我验证了FTYP,MOOV和MDAT原子是按照正确的顺序。 原来,这个问题是FTYP字段的值。 它被设置为“QT”。 我用MP4Box提取音轨,并创建有FTYP设置为“ISOM”新的MP4文件。 这个新的文件渐进式HTTP工作的罚款。



Answer 6:

我也越来越播放视频(RTSP)相同MEDIA_ERROR_UNKNOWN错误的问题。

在我来说,我发现与我的WiFi问题。 一些安全方面的原因无线网络连接限制的RTSP协议。 所以,我现在面临这个MEDIA_ERROR_UNKNOWN错误问题。 一旦检查您的网络权限。

当我移动到播放视频的移动数据它的工作对我罚款。 可能这将是谁面临相同类型的错误:)很有帮助。



Answer 7:

我解决了这个同样在@南忠的回答规定的方式,但是我的影片已经H264MP4所有我需要做的是对每个文件运行以下内容:

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

在此之后,影片的所有在VideoView当我通过V25运行API V19测试的所有设备上运行的工作。



Answer 8:

在我的情况下,错误是由于没有在本地存储的视频文件权限的媒体播放器。 尝试将视频存储到/mnt/sdCARD目录。



Answer 9:

我正面临同样的问题,但我确实在我身边是

首先,我停止了媒体播放器,然后释放它。

mMediaPlayer.stop(); mMediaPlayer.release();



Answer 10:

在我而言,这个问题是由用空格媒体URL造成的! 这里是修复:

mMediaPlayer.setDataSource(source.replaceAll(" ", "%20"));


文章来源: Android MediaPlayer error (1, -2147483648)