Запись моно AVAudioPCMBuffer в стерео AVAudioFile
Я использую AVAudioEngine для записи звука и сохраняю его как звуковой файл.
Пользователь может выбрать импорт аудиофайла, а затем он может продолжить запись в конце этого файла, если пожелает. Я получаю аудиоданные из импортированного файла, читая их в AVAudioPCMBuffer, который затем записываю в файл, в который я записываю. Это прекрасно работает, если импортируемый файл находится в стереофоническом режиме (поскольку файл, в который я пишу, также находится в стереофоническом режиме). Но если импортированный файл имеет моно, код вылетает, когда я пытаюсь записать AVAudioPCMBuffer в файл, просто потому, что количество каналов не совпадает.
Можно ли прочитать моно AVAudioPCMBuffer в AV AVAudioFile с форматом обработки, установленным на стерео? Могу ли я преобразовать буфер в стерео?
Вот пример того, как я получаю аудио буфер из импортированного файла:
let existingAudioFile = try AVAudioFile(forReading: existingFileUrl)
var audioFrameCount = AVAudioFrameCount(existingAudioFile.length)
let audioBuffer = AVAudioPCMBuffer(PCMFormat: existingAudioFile.processingFormat, frameCapacity: audioFrameCount) //Mono
try existingAudioFile.readIntoBuffer(audioBuffer)
И вот здесь я создаю AVAudioFile, в который пишу, используя AVAudioEngine:
self.audioFile = try AVAudioFile(forWriting: self.audioRecordURL, settings: self.engine.mainMixerNode.outputFormatForBus(0).settings) //This is in stereo
И, наконец, вот как я записываю аудио-буфер в файл:
try self.audioFile.writeFromBuffer(audioBuffer)
Если я конвертирую аудио в стерео, все работает.