iOS 如果我在录制期间播放 AVPlayer,ReplayKit 将停止录制麦克风
iOS ReplayKit stop recording microphone if i play AVPlayer during recording
我正在使用 ReplayKit 的 RPScreenRecorder.shared().startCapture
方法来录制屏幕和麦克风,但我遇到了一个问题。如果我在 ScreenRecording 时播放 AVPlayer,麦克风将停止录制音频。以下是两种情况。起初一切正常,但第二次录音不起作用。
启动AVPlayer然后开始录屏,AVPlayer的Audio停止,我的屏幕和麦克风开始录音
已开始录屏并且工作正常。然后我启动 AVPlayer,当 AVPlayer 播放音频时,录音停止
我认为这是系统限制
正如苹果官方文档中所写的那样
ReplayKit is incompatible with AVPlayer content.
您可以阅读详情here
经过大量挖掘后,我找到了解决方案。默认 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)
}
我正在使用 ReplayKit 的 RPScreenRecorder.shared().startCapture
方法来录制屏幕和麦克风,但我遇到了一个问题。如果我在 ScreenRecording 时播放 AVPlayer,麦克风将停止录制音频。以下是两种情况。起初一切正常,但第二次录音不起作用。
启动AVPlayer然后开始录屏,AVPlayer的Audio停止,我的屏幕和麦克风开始录音
已开始录屏并且工作正常。然后我启动 AVPlayer,当 AVPlayer 播放音频时,录音停止
我认为这是系统限制 正如苹果官方文档中所写的那样
ReplayKit is incompatible with AVPlayer content.
您可以阅读详情here
经过大量挖掘后,我找到了解决方案。默认 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)
}