我一直在摆弄 AVAudioSinkNodes,在我看来它并不局限于 44100 采样率。
就我而言,当我在连接输入和接收器节点后检查它们的采样率时,我得到以下信息:
Input node sample rates:
IF <AVAudioFormat 0x600002527700: 2 ch, 48000 Hz, Float32, non-inter>
OF <AVAudioFormat 0x60000250fac0: 2 ch, 48000 Hz, Float32, non-inter>
Sink node sample rates:
IF <AVAudioFormat 0x60000250fbb0: 2 ch, 44100 Hz, Float32, non-inter>
OF <AVAudioFormat 0x60000250fb60: 2 ch, 44100 Hz, Float32, non-inter>
但一旦我将它们连接在一起,我得到以下结果:
Input node sample rates:
IF <AVAudioFormat 0x600002527980: 1 ch, 48000 Hz, Float32>
OF <AVAudioFormat 0x600002506760: 2 ch, 48000 Hz, Float32, non-inter>
Sink node sample rates:
IF <AVAudioFormat 0x600002506710: 2 ch, 48000 Hz, Float32, non-inter>
OF <AVAudioFormat 0x600002505db0: 2 ch, 48000 Hz, Float32, non-inter>
我是使用音频框架的新手,但这似乎表明接收器节点的采样率不是硬编码的。
您的连接,
audioEngine.connect(audioEngine.inputNode, to: sinkNode, format: nil)
好像和我的不一样。无论正确与否,我明确指定格式为audioEngine.inputNode.outputFormat(forBus: 0)
这导致了所示的设置。不确定这是否有影响。