Android MediaPlayer - 有时即使播放音频也不会播放视频
我正在开发一个Android应用程序,我正在使用Android SDK在我的应用程序中播放一些视频。当我在应用中播放视频时,大约五分之一的音频在没有视频的情况下播放。这不是一个简单的编码错误,因为大多数时候视频可以完美地播放。MediaPlayer
我认为我的代码中的争用条件导致了这个错误。但是,我添加了许多调试语句,当视频无法播放时,所有内容似乎都已正确设置。
我已经扫描了网络和SO试图找到解决方案,但没有一个是足够的(见下文)。
以前有人遇到过这种类型的问题吗?如果是这样,你做了什么?
类似问题:
更多细节:
- 我在两部手机上遇到了这个错误。在Samsung Charge视频上,80%的时间播放,20%的时间有音频但没有视频。在T-Mobile彗星上,情况要糟糕得多。视频只播放大约10%的时间。
- 这不是文件的问题,我已经尝试了各种视频文件和编解码器,并得到了同样的问题。
- 这不是存储介质的问题。我尝试过播放视频时,当它存储在内部存储和SD卡上时,两者都没有区别。我甚至在播放之前尝试读取一些文件,希望系统会缓存它,但这似乎也没有帮助。
更新:
我一直在调试这个并查看logcat。我发现当视频工作时,logcat中会出现如下内容:
09-28 00:09:03.651: VERBOSE/PVPlayer(10875): setVideoSurface(0x65638)
但是,当视频无法播放时,看起来有一个空条目:
09-28 00:03:35.284: VERBOSE/PVPlayer(10875): setVideoSurface(0x0)
更新 2:
当视频无法播放时,函数 MediaPlayer.OnInfoListener 带有参数和 。我查看了Android代码库,试图确定未知错误35的含义。我遇到了pv_player_interface.h的文件,它指示错误代码35对应于称为.我用谷歌搜索了那个术语,它把我带到了一个名为.该文件给了我以下难以理解的解释:what==MEDIA_ERROR_UNKNOWN(0x1)
extra==35
PVMFInfoTrackDisable
pvmf_return_codes.pdf
4.34. PVMFInfoTrackDisable
禁用轨道的通知。这个是基于每轨的。对于未压缩的音频/视频格式,在选择内容中可用的轨道的过程中,如果解码器不支持该轨道,则会发送 PVMFInfoTrackDisable 事件。如有必要,该事件将按轨道发送一次。
我觉得我已经走了很长的路,但我并没有更接近找到答案......仍在调查中。