У меня начался сбой, которого раньше не было при инициализации записи с ошибкой:
[avae] AVAEInternal.h:70:_AVAE_Check: required condition is false: [AVAudioIONodeImpl.mm:911:SetOutputFormat: (format.sampleRate == hwFormat.sampleRate)]
Кажется, это хитрая ошибка , которую некоторые люди также получают с AudioKit .
В этом случае, похоже, что-то связано с использованием частоты дискретизации 48k вместо 44.1k. Однако в моем случае, используя аудио движок, я вообще не устанавливаю частоты дискретизации.
Мой код в основном шаблонный для записи. Сбой происходит по следующей строке:
inputNode.installTap(onBus: 0, bufferSize: 4096, format: recordingFormat) { (buffer, when) in
print("got here")//never gets here
Кто-нибудь может подсказать, как это исправить при использовании audioengine для записи?
Спасибо за любые предложения.
Редактировать
Вот как я создаю формат записи:
let recordingFormat = inputNode.outputFormat(forBus: 0)
А вот как выглядит формат записи в отладчике ... похоже, он установлен на 44.1k:
po recordingFormat
<AVAudioFormat 0x282b1e580: 1 ch, 44100 Hz, Float32>
inputNode выглядит так:
po inputNode
<AVAudioInputNode: 0x280a0eb70>
(lldb) p inputNode
(AVAudioInputNode) $R4 = 0x0000000280a0eb70 {
AVFoundation.AVAudioIONode = {
baseAVAudioNode@0 = <extracting data from value failed>
}
}
Редактировать 2:
Кажется, проблема связана с тем, что Apple изменила формат ввода на 48k, как объяснено 1037 *:
Это иллюстрирует несоответствие:
print("wrong rate---> session rate: \(AVAudioSession.sharedInstance().sampleRate) input rate: \(recordingFormat.sampleRate)")
Однако это исправление с использованием avaudioconverter кажется невероятно сложным. Как другие люди имеют дело с этим?