Я пытаюсь создать своего рода приложение для караоке, которое будет воспроизводить музыку в фоновом режиме, пока пользователь поет.В наушниках все работает нормально, но когда я пытаюсь записывать и объединять аудиофайлы, когда на динамике, я сталкиваюсь с некоторыми проблемами синхронизации.
Я проигрываю аудиофайл и сразу начинаю запись.После того, как запись завершена, я одновременно проигрываю и записанный аудиофайл, и оригинальный саундтрек, и кажется, что происходит небольшая задержка между звуком обоих файлов при воспроизведении через 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 секунды для воспроизведения во всем мирено я бы предпочел узнать причину возникновения этой проблемы и найти решение.