首页 文章

AVAudioSession RemoteIO playAndRecord

提问于
浏览
0

我认为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

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

相关问题