AVFoundation位置音频在iOS设备上不起作用

问题描述 投票:0回答:1

我正在尝试使用AVAudioEngineAVAudioEnvironmentNode在Swift iOS应用中播放位置音频。我可以成功播放音频,并听得到空间化效果,在立体声的两个输出之间切换,但是仅在模拟器中。当我在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的配置有关。

想法?

ios swift avfoundation ios-simulator avaudioplayernode
1个回答
0
投票

尝试设置:

audioEnv.renderingAlgorithm = .HRTFHQ // or .HRTF
© www.soinside.com 2019 - 2024. All rights reserved.