我正在使用AVAudioEngine.inputNode录制音频。一切正常,直到我需要在录制时播放其他音频。我正在使用具有许多音轨的自定义AVComposition创建AVPlayer和设置播放器项目,它的播放效果很好。但是,当我在初始化AVPlayer之后尝试录制音频时,安装水龙头时发生了崩溃:
[avae] AVAEInternal.h:76 required condition is false: [AVAudioIONodeImpl.mm:1093:SetOutputFormat: (format.sampleRate == hwFormat.sampleRate)]
然后我添加了以下打印件:
let inputNode = audioEngine.inputNode
print(inputNode.inputFormat(forBus: 0))
let recordingFormat = inputNode.inputFormat(forBus: 0)
print(recordingFormat, inputNode.inputFormat(forBus: 0))
此输出是此:
<AVAudioFormat 0x2820da6c0: 1 ch, 44100 Hz, Float32>
<AVAudioFormat 0x2820da800: 1 ch, 48000 Hz, Float32> <AVAudioFormat 0x2820da800: 1 ch, 48000 Hz, Float32>
或此:
<AVAudioFormat 0x2820da6c0: 1 ch, 44100 Hz, Float32>
<AVAudioFormat 0x2820da800: 1 ch, 44100 Hz, Float32> <AVAudioFormat 0x2820da800: 1 ch, 48000 Hz, Float32>
Ofc该代码可用于此打印,因为看起来在一次(或两次)inputFormat调用之后,该节点正在重新初始化。为什么会发生这种情况?修复它的好方法是什么?