AVAudioSourceNode如何设置设置格式

时间:2019-10-07 21:11:07

标签: swift audio avfoundation core-audio avaudioengine

我正在使用新的AVAudioSourceNode提供通过我的音频接口播放的样本流。

但是我发现AVAudioSourceNode正在选择它自己的格式设置。

engine.connect(srcNode, to: engine.mainMixerNode, format: stimulusFormat)

我使用上面的代码行以“ stimulusFormat”格式将源节点连接到主混音器 我使用以下方法设置了这种格式:

let stimulusFormat = AVAudioFormat(commonFormat: .pcmFormatFloat32,
        sampleRate: Double(sampleRate),
        channels: 1,
        interleaved: format.isInterleaved)

(交错参数查询输出期望看到的内容)。但是,每当我查询srcNode(AVAudioSourceNode)的格式时,控制台都会返回

<AVAudioFormat 0x600002131810:  2 ch,  44100 Hz, Float32, non-inter>

因此很明显,流的格式未在代码的连接行中设置。我也尝试过更改首选的采样率,但是这仍然不会更改AVSourceNode采样率。音频引擎中的其他所有内容都以48000Hz运行,因此我不确定从何处获得此数字。

try AVAudioSession.sharedInstance().setCategory(.playAndRecord)
try AVAudioSession.sharedInstance().setPreferredSampleRate(Double(sampleRate))

有人可以建议一种定义流格式的方法吗?

1 个答案:

答案 0 :(得分:0)

尝试

engine.connect(srcNode, to: engine.mainMixerNode, format: srcNode.inputFormat(forBus: 0))