2016-08-02 2 views
0

Я пытаюсь воспроизвести позиционное аудио, используя передний и задний каналы в комплекте Sprite, и тестирование на устройстве Apple TV.Возможно ли 5.1-канальный позиционный аудиовыход в комплекте Sprite?

Я использую следующий код:

let musicURL = NSBundle.mainBundle().URLForResource("music", withExtension: "m4a") 
    let music = SKAudioNode(URL: musicURL!) 

    addChild(music) 

    music.positional = true 
    music.position = CGPoint(x: 0, y: 0) 

    let moveForward = SKAction.moveToY(1024, duration: 2) 
    let moveBack = SKAction.moveToY(-1024, duration: 2) 


    let sequence = SKAction.sequence([moveForward, moveBack]) 
    let repeatForever = SKAction.repeatActionForever(sequence) 

    music.runAction(repeatForever) 

То, что я хочу сделать это звук, который прокручивается от переднего к задним каналам, но Sprite Kit, похоже, использует только стерео выход 2 канала.

Если я использую moveToX вместо moveToY, я получаю звуковое панорамирование слева направо.

У меня наверняка отсутствует код инициализации, чтобы сигнализировать, что я хочу выход звука 5.1, но я не уверен, что позиционная функция SKAudioNode работает только для 2-канального стереовыхода.

Это позиционное аудио с более чем двумя каналами, доступными в комплекте Sprite, или я должен использовать AVFoundation или даже OpenAL для этого?

Я пробовал аналогичный код с SceneKit, и кажется, что он также использует только 2 канала для позиционного звука.

+0

Из того, что я прочитал в документации, что причина может быть, что нижележащий AVAudioEnvironmentNode не настроена с надлежащей компоновки звукового канала. – xpereta

ответ

0

Звук не может быть размещен в трехмерном пространстве с использованием SceneKit. Вы не должны использовать SKAudioNode, но напрямую используйте AVFoundation для воспроизведения звука.

Сначала вы должны настроить аудио сессии, чтобы использовать выходную компоновку 5,1 канала:

let session = AVAudioSession.sharedInstance() 
session.setCategory(AVAudioSessionCategoryPlayback) 
session.setActive(true) 
session.setPreferredOutputNumberOfChannels(6) 

А затем проволоки в установке AVAudioEnvironmentNode для вывода 6 выходных каналов.

Отправной точкой можно найти в этом существующий ответ:

https://stackoverflow.com/a/35657416/563802

Смежные вопросы