我正在尝试使用Sprite Kit中的前后通道播放位置音频,并在Apple TV设备上进行测试 .
我正在使用以下代码:
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 Kit中可以实现超过2个通道的位置音频,还是应该使用AVFoundation甚至是OpenAL?
我用SceneKit尝试了类似的代码,它似乎也只使用2个通道来定位音频 .
1 回答
使用SceneKit无法在3D空间中定位声音 . 您不应该使用SKAudioNode,而是直接使用AVFoundation播放声音 .
首先,您必须设置音频会话以使用5.1声道输出布局:
然后连接AVAudioEnvironmentNode设置以输出6个输出通道 .
在现有的答案中可以找到一个起点:
https://stackoverflow.com/a/35657416/563802