首页 文章

iOS如何将USB设备的特定通道设置为音频播放器? AVFoundation

提问于
浏览
4

我正在使用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 回答

  • 0

    哇 - 我不知道自从 AVPlayer 在iOS 4中出现以来_1295384已经开发了 . 然而,这里我们在2016年, AVAudioPlayerchannelAssignments 而花哨的流媒体,视频播放字幕 AVPlayer 则没有 .

    但我认为你不能通过一个 AVAudioPlayer 播放两个文件 AB ,因为每个玩家只能打开一个文件 . 离开了

    • 创建两个播放器( player(A)player(B) )并将每个播放器的 channelAssignments 设置为音频设备输出通道的一半,处理同步播放器的乐趣,或者

    • 创建一个四通道文件, AB ,并通过一个播放器播放,分配 channelAssignments 上面找到的完整四个通道,处理略微非标准音频文件的乐趣 .

    理智检查:你的 session.outputNumberOfChannels 返回4?

    就个人而言,当我做这种事情时,我创建了一个4通道远程io音频单元,因为我发现更高级别的API一旦你做了一些不寻常的事情就会引起太多的心痛 . 我也使用 AVAudioSessionCategoryMultiRoute 因为我不需要这个 .

    尽管没有程序输出(如remoteIO音频单元),您也可以使用 AVAudioEngine 来做你想要的 .

相关问题