我正在使用新的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))
有人可以建议一种定义流格式的方法吗?
答案 0 :(得分:0)
尝试
engine.connect(srcNode, to: engine.mainMixerNode, format: srcNode.inputFormat(forBus: 0))