我正在使用AVAudioplayer和AVAudiosession . 我有一个iPad和一个音频接口(声卡) .
这个音频接口有4个输出(2个立体声),一个闪电电缆,它从iDevice接收能量,效果很好 .
香港专业教育学院编写了一个简单的play()stop()AVAudioplayer工作正常但我需要设置音频接口的特定通道(1-2和3-4) . 我的想法是向每个输出/通道(1-2或3-4)发送两个音频(A和B)
我是_1295379的文档,它说: channelAssignments
用于播放器的asign通道 .
问题是:我创建了一个AVAudiosession,可以获取USBport设备的数据(声卡) . 我得到了:
let route = AVAudioSession.sharedInstance().currentRoute
for port in route.outputs {
if port.portType == AVAudioSessionPortUSBAudio {
let portChannels = port.channels
let sessionOutputs = route.outputs
let dataSource = port.dataSources
dataText.text = String(portChannels) + "\n" + String(sessionOutputs) + "\n" + String(dataSource)
}
}
日志:outputs
我必须采取哪些数据并使用 play()
发送音频?
1 回答
哇 - 我不知道自从
AVPlayer
在iOS 4中出现以来_1295384已经开发了 . 然而,这里我们在2016年,AVAudioPlayer
有channelAssignments
而花哨的流媒体,视频播放字幕AVPlayer
则没有 .但我认为你不能通过一个
AVAudioPlayer
播放两个文件A
和B
,因为每个玩家只能打开一个文件 . 离开了创建两个播放器(
player(A)
和player(B)
)并将每个播放器的channelAssignments
设置为音频设备输出通道的一半,处理同步播放器的乐趣,或者创建一个四通道文件,
AB
,并通过一个播放器播放,分配channelAssignments
上面找到的完整四个通道,处理略微非标准音频文件的乐趣 .理智检查:你的
session.outputNumberOfChannels
返回4?就个人而言,当我做这种事情时,我创建了一个4通道远程io音频单元,因为我发现更高级别的API一旦你做了一些不寻常的事情就会引起太多的心痛 . 我也使用
AVAudioSessionCategoryMultiRoute
因为我不需要这个 .尽管没有程序输出(如remoteIO音频单元),您也可以使用
AVAudioEngine
来做你想要的 .