播放带有声音的背景音乐时,声音不同步

时间:2018-12-13 20:23:23

标签: ios avaudioplayer avaudiorecorder avmutablecomposition

我要实现的目标是制作一种卡拉OK应用程序,在用户唱歌的同时在后台播放音乐。戴着耳机,一切似乎都可以正常工作,但是当我尝试在扬声器上录制和合并音频文件时,我面临一些同步问题。

我播放音频文件并立即开始录制。录制完成后,我同时播放了已录制的音频文件和原始配乐,并且似乎正在发生的事情是,当通过AVAudioPlayer播放时,两个文件的音频之间都有微小的延迟(此问题不会使用耳机时不会出现,因为录制的音频没有从扬声器端口在后台播放音乐)。

我尝试使用SCRecorder记录文件(因为我也必须合并视频),并且都只使用AVAudioRecorder,在两种情况下都略有延迟。通常,您无法分辨,但我必须同时播放录音和原始文件,以便它看起来有回声。由于音频中有很多节拍,所以它似乎也不合时宜。

如果我使用AVMutableComposition从第0秒开始合并所有文件,那么即使我启动record,仍然存在延迟,这使我相信录音本身存在延迟。和play方法同时使用:

func startRecording(){
    audioPlayer.play()
    videoRecorder?.record()
    delegate?.didStartRecording()
}
//prepareToRecord has been called way before during initialization of the class

现在,如果我为所有地方的播放强加0.1秒的延迟,问题就解决了,但我真的很想知道造成此问题的原因并找出解决方案。

0 个答案:

没有答案