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

时间:2013-09-14 16:22:10

标签: ios synchronization avfoundation avplayer avcapturesession

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

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

This question表示可以同时结束播放和录制,并确定从结果长度开始的初始偏移,但我不清楚如何让它们同时结束。我有两种情况:1)音频播放耗尽,2),用户点击“停止录制”按钮。

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

我可以使用其他媒体层来执行所需的同步吗?

相关:this question未得到答复。

1 个答案:

答案 0 :(得分:0)

如果您专门使用AVPlayer播放音频,我建议您使用AudioQueueServices。它的无缝和快速,因为它通过缓冲区和播放暂停读取缓冲区比AVPLlayer

更快

还有可能缺少[avPlayer prepareToPlay]的初始语句,这可能会导致在播放音频之前同步它的开销很大。 希望它可以帮到你。