我正在尝试使用AVAudioEngine
和在 Swift iOS 应用程序中播放位置音频AVAudioEnvironmentNode
。我可以成功地很好地播放音频并听到它空间化的声音,在立体声输出之间切换,但只能在模拟器中。当我在 iPhone 上运行相同的应用程序时,音频会在双耳中播放,而不是在源移动时平移。我需要做一些特殊的配置吗,比如手动处理设备音频输出?
我像这样初始化音频引擎和播放器:
let audioEngine = AVAudioEngine()
let audioEnv = AVAudioEnvironmentNode()
audioEngine.attach(audioEnv)
audioEngine.connect(
audioEnv,
to: audioEngine.mainMixerNode,
format: audioEnv.outputFormat(forBus: 0)
)
try audioEngine.start()
let player = AVAudioPlayerNode()
audioEngine.attach(player)
audioEngine.connect(
player,
to: audioEnv,
format: AVAudioFormat(standardFormatWithSampleRate: 44100, channels: 1)
)
player.scheduleFile(...)
player.play()
我的源文件是单声道.wav
。
在未来的某个时候,我会改变玩家的位置:
player.position = AVAudio3DPoint(x: 5, y: 0, z: 0)
这应该只(或大部分)在一只耳朵上播放。在 iOS 模拟器中运行时,它完全符合我的预期。但是,在实际设备上,无论player.position
设置什么,它都只会在双耳中均匀播放。我怀疑它与audioEngine
.
想法?