我认为,自iOS7以来,AVAudioSession API已经发生了相当大的变化,并且常常令人困惑。我的目标是设置一个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都有不同的表现。
发布于 2017-11-22 00:39:58
这些要求太复杂了,不能用AVAudioSession来实现。使用render回调在remoteIO中进行手动控制。在AVAudioSession.sharedInstance().currentRoute中,您可以获得输出和输入。
https://stackoverflow.com/questions/47363640
复制相似问题