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