我正在尝试使用AVAudioEnvironmentNode
为我正在开发的游戏制作 3D 空间化声音。文档指出,“重要的AVAudioEnvironmentNode
是要注意,只有与环境节点具有单声道连接格式的输入才会被空间化。如果输入是立体声,则音频会通过而不被空间化。目前连接格式超过 2 的输入不支持频道。” 我确实发现情况确实如此。当我将具有两个通道的音频缓冲区加载到 anAudioPlayerNode
并将节点连接到 anAVAudioEnvironmentNode
时,输出声音不是空间化的。我的问题是,如何将单声道数据发送到AVAudioEnvironmentNode
?
我尝试.wav
使用正弦波数据创建单声道文件Audacity
以及以AVAudioPCMBuffer
编程方式加载正弦波数据。我发现无论哪种方式,当我创建单通道音频缓冲区并尝试将缓冲区加载到AudioPlayerNode
. 时,我的程序崩溃并出现以下错误:
2016-02-17 06:36:07.695 测试场景 [1577:751557] 06:36:07.694 错误:
[0x1a1691000] AVAudioPlayerNode.mm:423:ScheduleBuffer:所需条件为 false:_outputFormat.channelCount == buffer.format.channelCount 2016-02-17 06:36:07.698 测试场景 [1577:751557] *** 由于未捕获的异常“com.apple.coreaudio.avfaudio”而终止应用程序,原因:“所需条件为假:_outputFormat.channelCount == 缓冲区.format.channelCount'
检查AVAudioPlayerNode
输出总线确实表明它需要 2 个通道。我不清楚如何改变它,或者即使它应该改变。
我规定我通常很少有处理AVFoundation
音频数据的经验。您能提供的任何帮助将不胜感激。