iOS如何将USB设备的特定通道设置为音频播放器? AVFoundation
我正在使用AVAudioplayer和AVAudiosession。 我有一个iPad和一个音频接口(声卡)。
这个音频接口有4个输出(2个立体声),一个闪电线,它从iDevice接收能量,效果很好。
我编写了一个简单的play()stop()AVAudioplayer工作正常但我需要设置音频接口的特定通道(1-2和3-4)。 我的想法是向每个输出/通道(1-2或3-4)发送两个音频(A和B)
我已经阅读了AVAudioplayer的文档,它说: 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) } }
记录: 输出
我必须采取哪些数据并使用play()
发送音频?
哇 – 自从AVPlayer
在iOS 4中问世以来,我根本不知道AVAudioPlayer
已经开发了。然而,我们在2016年, AVAudioPlayer
拥有channelAssignments
而花哨的流媒体, AVPlayer
播放字幕的video则没有 。
但我认为你不能通过一个AVAudioPlayer
播放两个文件A
和B
,因为每个播放器只能打开一个文件。 离开了
-
创建两个玩家(
player(A)
和player(B)
)并将每个player(B)
的channelAssignments
设置为音频设备输出通道的一半,处理同步玩家的乐趣, 或者 -
创建一个四通道文件
AB
,并通过一个播放器播放,为上面找到的完整四个通道分配channelAssignments
,处理略微非标准音频文件的乐趣。
完整性检查:你的session.outputNumberOfChannels
返回4吗?
就个人而言,当我做这种事情时,我创建了一个4通道远程io音频单元,因为我发现更高级别的API会在你做任何有点不寻常的事情时引起太多的心痛。 我也使用AVAudioSessionCategoryMultiRoute
因为我没有任何> 2声道声卡,所以我必须拼凑耳机插孔加USB声卡才能获得4个声道,但你不应该需要这个。
尽管没有程序输出(如remoteIO音频单元),您也可以使用AVAudioEngine
来执行您想要的操作。