在AVFoundation中,如何同步录制和播放

Bjo*_*che 10 synchronization avfoundation ios avcapturesession avplayer

我有兴趣在iOS中使用AVCaptureSession录制媒体,同时使用AVPlayer播放媒体(具体来说,我正在播放音频和录制视频,但我不确定这是否重要).

问题是,当我稍后将结果媒体重新播放时,它们会不同步.是否可以通过确保同时开始播放和录制,或通过发现它们之间的偏移来同步它们?我可能需要同步大约10毫秒.假设我总能捕获音频(因为用户可能使用耳机)是不合理的,因此通过分析原始和录制的音频进行同步不是一种选择.

这个问题表明,可以同时结束播放和录制并从那里确定最终偏移的初始偏移,但我不清楚如何让它们同时结束.我有两种情况:1)音频播放耗尽,2),用户点击"停止录制"按钮.

这个问题建议启动,然后应用一个固定的,但可能依赖于设备的延迟,这显然是一个黑客,但如果它对音频足够好,显然值得考虑视频.

我可以使用另一个媒体层来执行所需的同步吗?

相关:这个问题没有答案.

小智 0

如果您专门使用 AVPlayer 来播放音频,我建议您使用 AudioQueueServices 来播放音频。它无缝且快速,因为它逐个缓冲区读取并且播放暂停比 AVPLlayer 更快

也有可能您错过了 [avPlayerprepareToPlay] 的初始语句,这可能会导致在播放音频之前同步产生大量开销。希望对您有帮助。