Ios 立体声麦克风通过AVAudioEngine?

Ios 立体声麦克风通过AVAudioEngine?,ios,swift,audio,core-audio,avaudioengine,Ios,Swift,Audio,Core Audio,Avaudioengine,我正在尝试使用AVAudioEngine创建一个图形,它从设备麦克风获取输入,并支持立体声输出 现在,图表如下所示: audioEngine.connect(microphoneNode!, to: microphoneInputMixer, format: inputSessionFormat!) audioEngine.connect(microphoneInputMixer, to: summingMixer, format: inputSessionFormat!) audioEngin

我正在尝试使用AVAudioEngine创建一个图形,它从设备麦克风获取输入,并支持立体声输出

现在,图表如下所示:

audioEngine.connect(microphoneNode!, to: microphoneInputMixer, format: inputSessionFormat!)
audioEngine.connect(microphoneInputMixer, to: summingMixer, format: inputSessionFormat!)
audioEngine.connect(summingMixer, to: mainMixerNode!, format: inputSessionFormat!)
[audioEngine.inputNode]-->[Mic输入混音器节点]-->[Summing mixer节点]-->[audioEngine.mainMixerNode]

由于
audioEngine.inputNode
的输出是
1ch,48000 Hz,Float32
,我想在麦克风后运行一个混音器节点,这样我就可以a)将信号发送到多个音频单元,b)转换为立体声信号,以便进行更有趣的布线、平移等

但是,只有当我将整个图形设置为与输入格式
1ch,48000 Hz,Float32
相匹配时,音频直通才起作用,如下所示:

audioEngine.connect(microphoneNode!, to: microphoneInputMixer, format: inputSessionFormat!)
audioEngine.connect(microphoneInputMixer, to: summingMixer, format: inputSessionFormat!)
audioEngine.connect(summingMixer, to: mainMixerNode!, format: inputSessionFormat!)
我有两个格式变量,mono
inputSessionFormat
和stereo
outputSettingFormat
,即
2 ch,44100 Hz,Float32,非inter


正如我从AVAudioMixerNode了解到的,它应该处理格式转换,但在这种情况下,它拒绝播放音频,除非所有连接都设置为相同的(单声道)格式。我还使用
AVAudioConnectionPoint
测试了这段代码,但没有效果。

只有AVAudioEngine的inputNode和outputNodes具有固定格式。连接到/从这些设备时,请使用
nil
。混频器将在其输入和输出格式之间进行隐式转换。使用
nil
连接到
microhoneInputMixer
,并使用所需格式从
microhoneInputMixer
连接。
mainMixerNode
将采用任何输入格式,无法设置其输出格式

let desiredFormat = AVAudioFormat(standardFormatWithSampleRate: 44100, channels: 2)
audioEngine.connect(microphoneNode!, to: microphoneInputMixer, format:nil)
audioEngine.connect(microphoneInputMixer, to: summingMixer, format: desiredFormat)
audioEngine.connect(summingMixer, to: mainMixerNode!, format: desiredFormat)