【问题标题】:AVAudioSession RemoteIO playAndRecordAVAudioSession RemoteIO playAndRecord
【发布时间】:2018-05-01 23:56:12
【问题描述】:

我认为 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 的行为都不同。

【问题讨论】:

  • 您正在使用哪些 AVAudioSession 选项?仅蓝牙还是 A2DP?
  • 我只用蓝牙,有影响吗?

标签: ios11 avaudiosession audiounit remoteio


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多