gpt4 book ai didi

ios - Sprite Kit 中是否可以输出 5.1 声道位置音频?

转载 作者:行者123 更新时间:2023-12-03 01:52:12 25 4
gpt4 key购买 nike

我正在尝试使用 Sprite Kit 中的前后 channel 播放位置音频,并在 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 个以上 channel 的位置音频,或者我应该为此求助于 AVFoundation 甚至 OpenAL?

我已经用 SceneKit 尝试过类似的代码,它似乎也只使用 2 个 channel 用于位置音频。

最佳答案

无法使用 SceneKit 在 3D 空间中定位声音。您不应该使用 SKAudioNode 而是直接使用 AVFoundation 来播放声音。

首先,您必须设置 Audio Session 以使用 5.1 声道输出布局:

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

然后连接一个 AVAudioEnvironmentNode 设置以输出 6 个输出 channel 。

在这个现有的答案中可以找到一个起点:

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

关于ios - Sprite Kit 中是否可以输出 5.1 声道位置音频?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38729992/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com