如果我在录音期间播放 AVPlayer,iOS ReplayKit 会停止录音麦克风

Aja*_*ini 3 ios swift replaykit

我正在使用 ReplayKit 的RPScreenRecorder.shared().startCapture方法来录制屏幕和麦克风,但我遇到了一个问题。如果我在屏幕录制时播放 AVPlayer,麦克风会停止录制音频。下面是两种情况。首先,一切工作正常,但在第二次录音时不起作用。

  1. 启动AVPlayer,然后开始屏幕录制,AVPlayer的音频停止,我的屏幕和麦克风开始录制

  2. 开始屏幕录制并且工作正常。然后我启动 AVPlayer,当 AVPlayer 播放音频时,录音停止

Aja*_*ini 6

经过大量挖掘后,我找到了解决方案。默认AVFoundation允许一次使用麦克风或扬声器,并且 ReplayKit 与 AVPlayer 内容不兼容。因此,如果我们想同时使用它们,我们需要将AVAudioSession类别设置为AVAudioSessionCategoryMultiRoute

do {
    try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryMultiRoute)
} catch let error as NSError {
    print(error)
}

do {
    try AVAudioSession.sharedInstance().setActive(true)
} catch let error as NSError {
    print(error)
} 
Run Code Online (Sandbox Code Playgroud)