安卓棉花糖系统“无法播放此视频”错误

5

我正在升级一款应用到安卓6.0。一切似乎都很好,除了在尝试播放来自远程源的某些视频时遇到问题。它们在我们的非Marshmallow设备上播放得很好(具体而言,我有一个Galaxy S3运行4.1.2的Jelly Bean系统,完全可以播放相同的视频,没有问题)。我们已经测试了多个6.0设备,问题似乎只局限于这个操作系统。

当尝试在简单的videoview中播放视频时,我会收到一个警报提示“无法播放此视频”。

我以前在4.1.2上也遇到过其他视频的问题,认为可能是编解码器问题,我想再次可能就是罪魁祸首。所有无法播放的视频都具有以下共同点:

  • AAC
  • H.264
  • MPEG-4 SDSM
  • MPEG-4 ODSM

当我尝试启动具有videoview的活动时,这就是logcat输出的内容。

201-801/? D/audio_hw_primary﹕ out_set_parameters: enter: usecase(1: low-latency-playback) kvpairs: routing=2
201-800/? D/audio_hw_primary﹕ select_devices: out_snd_device(2: speaker) in_snd_device(0: none)
201-800/? D/msm8974_platform﹕ platform_send_audio_calibration: sending audio calibration for snd_device(2) acdb_id(15)
201-800/? D/audio_hw_primary﹕ enable_snd_device: snd_device(2: speaker)
201-800/? D/audio_hw_primary﹕ enable_audio_route: apply and update mixer path: low-latency-playback
777-1257/? I/MediaFocusControl﹕ AudioFocus  requestAudioFocus() from android.media.AudioManager@f9138b2 req=1flags=0x0
4591-4591/? W/MediaPlayer﹕ Couldn't open file on client side; trying server side: java.io.FileNotFoundException: No content provider: http://videopath.mp4
201-5605/? D/NuPlayer﹕ onSetVideoSurface(0xb48c2700, no video decoder)
777-811/? I/ActivityManager﹕ Displayed com.example.i.PityTheFooActivity: +108ms
1139-1139/? I/Keyboard.Facilitator﹕ onFinishInput()
201-5606/? E/GenericSource﹕ Failed to init from data source!
201-5605/? D/NuPlayerDriver﹕ notifyListener_l(0xb60986a0), (100, 1, -2147483648)
4591-4605/? E/MediaPlayer﹕ error (1, -2147483648)
4591-4591/? E/MediaPlayer﹕ Error (1,-2147483648)
4591-4591/? D/VideoView﹕ Error: 1,-2147483648

这是与Marshmallow相关的已知问题,还是视频本身有问题?

你真的认为 http://videopath.mp4 可以播放吗?请更正你的路径然后再试一次! - Muhammad Babar
那只是一个无用的URL,用于stackoverflow问题。我在我的代码中有一个实际的URL... - Riot Goes Woof
2
似乎已经修复了:https://code.google.com/p/android/issues/detail?id=191218不知道什么时候会发布... - a person
1个回答

4

使用ODSM / SDSM编解码器的视频可以避免去交错化,但是Android Marshmallow似乎无法识别ODSM / SDSM编解码器并需要对视频进行去交错化处理。在此之前的操作系统版本通常不会播放未进行去交错化处理的视频,唯一的例外是视频文件包含ODSM或SDSM编解码器。

我认为这可能是由于Quicktime支持问题造成的,可能需要作为Android Marshmallow的缺陷来开放,但也有可能是Google的意图。


1
那么这是什么意思呢?我对视频编解码器并不熟悉,只是希望最新的设备可以播放与旧设备相同的文件。 - a person
1
底线是,去交错你的视频,然后再试一次。如果这些不是你的视频,或者你没有文件访问权限,那么你就有点棘手了。移动设备对支持哪些视频非常挑剔。这不是你可以在代码中修复的问题。 - Riot Goes Woof
基本上不要使用 .mov 文件。我使用 .mp4 文件解决了这个问题。 - 6rchid

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接