RPScreenRecorder startCaptureWithHandler:在示例处理程序中不返回麦克风声音

时间:2018-06-19 19:10:59

标签: objective-c microphone rpscreenrecorder

我正在尝试在iOS 11.4的iPad上使用RPScreenRecorder startCaptureWithHandler:completionHandler:api直接捕获音频和视频。它适用于应用程序屏幕,应用程序音频和摄像头,但是当我使用MikeEnabled = YES打开麦克风时,在回调中我无法获得麦克风的任何音频样本。

我在info.plist中添加了麦克风隐私使用密钥,但这没有帮助。

我不确定接下来可以做什么来尝试解决此问题。

谢谢。

1 个答案:

答案 0 :(得分:1)

此代码为我提供了包含实际麦克风音频的音频缓冲区(即使没有麦克风使用字符串或音频会话配置):

RPScreenRecorder *recorder = [RPScreenRecorder sharedRecorder];

recorder.microphoneEnabled = YES;

[recorder startCaptureWithHandler:^(CMSampleBufferRef sampleBuffer, RPSampleBufferType bufferType, NSError* error) {
    NSLog(@"Capture %@, %li, %@", sampleBuffer, (long)bufferType, error);
    if (RPSampleBufferTypeAudioMic == bufferType) {
        // Do something with mic audio
    }
} completionHandler:^(NSError* error) {
    NSLog(@"startCapture: %@", error);
}];

有一个权限对话框,询问您是“允许屏幕和麦克风”,“仅允许屏幕”还是“不允许”。您是否可以仅点击屏幕? N.B.我不知道如何重置此对话框。

另一种可能性是您正在设置microphoneEnabled 之后开始捕获?那可能行不通。不,这对我也有用。

先前的猜测

您可能需要激活录音AVAudioSession

try! AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryRecord)  // or AVAudioSessionCategoryPlayAndRecord!
try! AVAudioSession.sharedInstance().setActive(true)