【发布时间】:2015-10-08 22:57:26
【问题描述】:
我编写了一个小应用程序来使用AVCaptureMovieFileOutput 捕获音频和视频,效果很好。用于自动收集多天的实验数据,偶尔开启一次记录10-15秒。
但在分析数据时,我们发现音频和视频同步似乎存在一些偏差。为了帮助测试这一点,我们设置了一个闪烁的 LED 和一个音调,并在几天内记录了它的短片段。到第五天,音频出现了大约 250 毫秒的延迟(不是很大,但在观看时很明显)。下图显示了使用相同的AVFoundation 库读回的数据(以确保解码媒体没有问题)。绘制了视频的平均强度(以显示 LED 闪光灯),下面绘制了原始音频。
这有点神秘,我希望尝试找出可能导致此问题的原因,以便我可以修复它或解决它。到目前为止,我的理论是:
纯粹的硬件问题(我们使用 NTSC 加密狗),其中关于信号数字化或加密狗上的时钟的某些东西存在某种偏差或漂移。我对要调查的硬件方面了解的不够多。
与音频和视频的帧持续时间计数有关的舍入问题,随着时间的推移会累积轻微的偏移。如果是这种情况,我们可能会计算出预期的偏移量并进行调整。
我意识到这是AVCaptureMovieFieldOutput 使用的一个极端案例,但我会重视其他人的任何反馈。
我怀疑这是否是特定于代码的,但往往是更广泛的实现细节。该代码与 AVFoundation 文档中的标准电影捕捉示例非常相似,具有帧精确的开始时间。该项目位于GitHub。
【问题讨论】:
标签: video avfoundation