【发布时间】:2020-02-05 04:49:18
【问题描述】:
我正在使用新的 AVAudioSourceNode 提供要通过我的音频接口播放的样本流。
但是我发现 AVAudioSourceNode 正在选择它自己的格式设置。
engine.connect(srcNode, to: engine.mainMixerNode, format: stimulusFormat)
我使用上面的代码行将我的源节点连接到我的主混音器,格式为“stimulusFormat” 我已使用以下方式设置此格式:
let stimulusFormat = AVAudioFormat(commonFormat: .pcmFormatFloat32,
sampleRate: Double(sampleRate),
channels: 1,
interleaved: format.isInterleaved)
(使用 interleaved 参数查询输出期望看到的内容)。但是,每当我查询 srcNode (AVAudioSourceNode) 的格式时,控制台都会返回
<AVAudioFormat 0x600002131810: 2 ch, 44100 Hz, Float32, non-inter>
很明显,在连接代码行中没有设置流格式。我也尝试过更改首选采样率,但这仍然不会更改 AVSourceNode 采样率。我的音频引擎中的其他所有东西都以 48000Hz 运行,所以我不确定它是从哪里得到这个数字的。
try AVAudioSession.sharedInstance().setCategory(.playAndRecord)
try AVAudioSession.sharedInstance().setPreferredSampleRate(Double(sampleRate))
谁能建议一种定义流格式的方法?
【问题讨论】:
标签: swift audio avfoundation core-audio avaudioengine