Запись звука с фоновым звуком не синхронизируется при воспроизведении со звуком - PullRequest
0 голосов
/ 13 декабря 2018

Я пытаюсь создать своего рода приложение для караоке, которое будет воспроизводить музыку в фоновом режиме, пока пользователь поет.В наушниках все работает нормально, но когда я пытаюсь записывать и объединять аудиофайлы, когда на динамике, я сталкиваюсь с некоторыми проблемами синхронизации.

Я проигрываю аудиофайл и сразу начинаю запись.После того, как запись завершена, я одновременно проигрываю и записанный аудиофайл, и оригинальный саундтрек, и кажется, что происходит небольшая задержка между звуком обоих файлов при воспроизведении через AVAudioPlayer (эта проблема непоявляются при использовании наушников, поскольку записанный звук не воспроизводит музыку в фоновом режиме из порта динамика).

Я попытался использовать SCRecorder для записи файла (так как я должен также объединить видео) и использовать только AVAudioRecorder оба, и в обоих случаях есть небольшая задержка.Обычно вы не сможете сказать, но мне нужно одновременно воспроизвести запись и исходный файл, чтобы он имел эхо.Так как звук имеет много ударов, он также выглядит совершенно не в духе.

Также, если я объединяю все файлы, начиная с 0-й секунды, используя AVMutableComposition, задержка все еще приводит меня ксчитаю, что сама запись имеет задержку, хотя я запускаю методы record и play одновременно:

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

Теперь проблема решена, если я принудительно добавлю задержку в 0,1 секунды для воспроизведения во всем мирено я бы предпочел узнать причину возникновения этой проблемы и найти решение.

...