gpt4 book ai didi

swift - 具有非默认但仍为设备原生采样率的 AVAudioSinkNode

转载 作者:行者123 更新时间:2023-12-03 19:15:26 28 4
gpt4 key购买 nike

我已经配置了 AVAudioSinkNode附于 AVAudioEngineinputNode像这样:

let sinkNode = AVAudioSinkNode() { (timestamp, frames, audioBufferList) -> OSStatus in
print("SINK: \(timestamp.pointee.mHostTime) - \(frames) - \(audioBufferList.pointee.mNumberBuffers)")
return noErr
}

audioEngine.attach(sinkNode)
audioEngine.connect(audioEngine.inputNode, to: sinkNode, format: nil)
audioEngine.prepare()

do {
try audioEngine.start()
print("AudioEngine started.")
} catch {
print("AudioEngine did not start!")
}

我已经将它单独配置为使用“内置麦克风”设备(我确定它确实使用过)。

如果我将麦克风的采样率设置为 44100(在所有 Mac 上使用 Apple 提供的“音频 MIDI 设置”应用程序),一切都会按预期进行:
AudioEngine started.
SINK: 692312319180567 - 512 - 2
SINK: 692312348024104 - 512 - 2
SINK: 692312359634082 - 512 - 2
SINK: 692312371244059 - 512 - 2
SINK: 692312382854036 - 512 - 2
...

但是,如果我使用“音频 MIDI 设置”应用程序(由 Apple 在所有 Mac 上提供),并将麦克风的采样率更改为任何值 除了 44100(比如 48000) ,则汇节点 似乎没有做任何事情 (不打印任何东西)。

当然,最初我试图以编程方式修改麦克风的采样率。但后来我发现,当我通过标准的“音频 MIDI 设置”应用程序更改设备采样率时,也会发生同样的情况。因此,我用于设置采样率的代码无需在此处发布。

有谁知道 AVAudioSinkNode允许的采样率硬编码到其中 ?

我找不到任何其他解释......

最佳答案

我一直在玩弄 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)这导致了显示的设置。不确定这是否有区别。

关于swift - 具有非默认但仍为设备原生采样率的 AVAudioSinkNode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60837320/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com