Kag*_*nar 8 video objective-c ios avplayer
我的iOS应用程序使用AVPlayer通过本地设备存储中的AAC音轨解码H.264视频.具有比特率尖峰的内容导致在播放尖峰之后音频不久(不到一秒)丢失,但视频播放正常继续.通过Safari播放视频似乎工作正常,并且这种行为在几种型号的iPhone上可重复,范围从6s到8加.
我一直在寻找生成的任何消息,代表调用错误信息或有趣的KVO,但到目前为止没有任何有用的信息.我可以做些什么来获得某些更详细的信息,这些信息可以指引我朝着正确的方向前进?
事实证明,AVPlayer 被配置为利用以自定义方式加载数据的方法。这些方法的实施未能遵循完全满足请求的模式。(Apple 文档对此含糊其辞。)AVPlayer 的视频部分反复要求更多数据,因此最终所有数据都被提取。然而,音频部分耐心地等待数据输入,因为既没有报告错误状态,也没有提供所有数据——假设数据处于待处理状态。
因此,简而言之,听起来视频处理代码中存在将丢失的数据视为某种形式的停顿并继续前进的规定,而音频则没有该功能。这是一个不错的设计——如果音频被切断,它会非常明显,而且它也是迄今为止较小的流,所以这种情况的可能性要小得多。
尽管在发布之前花了好几天的时间来解决这个问题,但缺乏任何有用的信号使得追查问题变得很困难。我最终推断,如果从流生成输出没有错误,那么问题一定出在流的传递中,一旦我开始调整数据加载代码,问题就暴露出来了。