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