AVFoundation позиционный звук не работает на устройстве iOS
Я пытаюсь воспроизвести позиционное аудио в приложении Swift для iOS, используя AVAudioEngine
а также 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
,
Мысли?
0 ответов
Попробуйте установить:
audioEnv.renderingAlgorithm = .HRTFHQ // or .HRTF