gpt4 book ai didi

ios - 将单声道音频数据传递给 AVAudioEnvironmentNode

转载 作者:搜寻专家 更新时间:2023-11-01 05:37:18 25 4
gpt4 key购买 nike

我正在尝试使用 AVAudioEnvironmentNode 为我正在开发的游戏生成 3D 空间化声音。 AVAudioEnvironmentNode 文档指出,“重要的是要注意,只有到环境节点的单声道连接格式的输入才会被空间化。如果输入是立体声,则音频会在不被空间化的情况下通过。目前不支持超过 2 个 channel 的连接格式的输入。”我确实发现是这样的。当我将具有两个 channel 的音频缓冲区加载到 AudioPlayerNode 并将该节点连接到 AVAudioEnvironmentNode 时,输出声音不是空间化的。我的问题是,如何将单声道数据发送到 AVAudioEnvironmentNode

我已经尝试使用 Audacity 创建单声道 .wav 文件,并以编程方式加载带有正弦波数据的 AVAudioPCMBuffer。我发现无论哪种方式,当我创建单 channel 音频缓冲区并尝试将缓冲区加载到 AudioPlayerNode 时,我的程序都会崩溃并出现以下错误:

2016-02-17 06:36:07.695 Test Scene[1577:751557] 06:36:07.694 ERROR:
[0x1a1691000] AVAudioPlayerNode.mm:423: ScheduleBuffer: required condition is false: _outputFormat.channelCount == buffer.format.channelCount 2016-02-17 06:36:07.698 Test Scene[1577:751557] *** Terminating app due to uncaught exception 'com.apple.coreaudio.avfaudio', reason: 'required condition is false: _outputFormat.channelCount == buffer.format.channelCount'

检查 AVAudioPlayerNode 输出总线确实表明它需要 2 个 channel 。我不清楚如何更改,或者是否应该更改。

我声明我在使用 AVFoundation 或一般音频数据方面经验很少。如果您能提供任何帮助,我们将不胜感激。

最佳答案

我希望你已经解决了这个问题,但对于其他人:

将 AVAudioPlayerNode 连接到 AVAudioMixerNode 或它可以连接到的任何其他节点时,您需要指定那里的 channel 数:

audioEngine.connect(playerNode, to: audioEngine.mainMixerNode, format: AVAudioFormat.init(standardFormatWithSampleRate: 96000, channels: 1))

您可以在 Audacity 中检查文件的采样率是否为 96000,或者在 Finder 中检查“获取信息”。

关于ios - 将单声道音频数据传递给 AVAudioEnvironmentNode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35456385/

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