AVAudioEngine.inputNode.inputFormat(forBus:0)在初始化AVPlayer几次调用后发生更改

问题描述 投票:1回答:1

我正在使用AVAudioEngine.inputNode录制音频。一切正常,直到我需要在录制时播放其他音频。我正在使用具有许多音轨的自定义AVComposition创建AVPlayer和设置播放器项目,它的播放效果很好。但是,当我在初始化AVPlayer之后尝试录制音频时,安装水龙头时发生了崩溃:

[avae]            AVAEInternal.h:76    required condition is false: [AVAudioIONodeImpl.mm:1093:SetOutputFormat: (format.sampleRate == hwFormat.sampleRate)]

然后我添加了以下打印件:

let inputNode = audioEngine.inputNode
print(inputNode.inputFormat(forBus: 0))
let recordingFormat = inputNode.inputFormat(forBus: 0)
print(recordingFormat, inputNode.inputFormat(forBus: 0))

此输出是此:

<AVAudioFormat 0x2820da6c0:  1 ch,  44100 Hz, Float32>
<AVAudioFormat 0x2820da800:  1 ch,  48000 Hz, Float32> <AVAudioFormat 0x2820da800:  1 ch,  48000 Hz, Float32>

或此:

<AVAudioFormat 0x2820da6c0:  1 ch,  44100 Hz, Float32>
<AVAudioFormat 0x2820da800:  1 ch,  44100 Hz, Float32> <AVAudioFormat 0x2820da800:  1 ch,  48000 Hz, Float32>

Ofc该代码可用于此打印,因为看起来在一次(或两次)inputFormat调用之后,该节点正在重新初始化。为什么会发生这种情况?修复它的好方法是什么?

ios avfoundation avaudioengine
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.