AVAudioSession RemoteIO playAndRecord

时间:2017-11-18 07:22:40

标签: ios11 avaudiosession audiounit remoteio

我认为AVAudioSession API自iOS7以来已经发展了很多,并且经常令人困惑。我的目标是设置RemoteIO单元,从麦克风录制音频并通过耳机同时播放样本。如果没有耳机,则不要播放。如果存在蓝牙麦克风,则将其作为首选而不是耳机麦克风或USB麦克风进行拾取。如果存在单独的耳机,则通过它回放样本。如果相同的蓝牙麦克风也具有耳机功能,那么避免它播放样本,因为它将导致环回造成混乱。

完成这项工作的正确API是什么?目前我使用的是以下代码,但它并没有完成全部工作。

   AVAudioSession *session = [AVAudioSession sharedInstance];


    NSUInteger bluetoothOpt = AVAudioSessionCategoryOptionAllowBluetooth;


    if (![session setCategory:AVAudioSessionCategoryPlayAndRecord withOptions:bluetoothOpt | AVAudioSessionCategoryOptionMixWithOthers error:nil]) {
        NSLog(@"Could not set audio session category");
    }

我应该使用AVAudioSessionCategoryMultiRoute吗?如何选择首选输入和输出? iOS 11上的所有内容,因为我看到API的行为方式不同。

1 个答案:

答案 0 :(得分:0)

这些要求对于使用AVAudioSession来说太复杂了。 使用渲染回调在remoteIO中手动控制。 在AVAudioSession.sharedInstance()。currentRoute中,您可以获得输出和输入。