首页 > 解决方案 > replayKit RPSampleBufferType 没有视频

问题描述

我正在使用 ReplayKit 来录制屏幕。但是,我对视频缓冲区有一个非常奇怪的问题。当用户点击录制按钮时,会调用以下方法;

       rpScreenRecorder.startCapture { (sampleBuffer, bufferType, error) in
        if let error = error {
            print(error.localizedDescription)
        }
        
        switch bufferType {
        case .video:
            print("video")
        case .audioApp:
            print("audioApp")
        case .audioMic:
            print("audioMic")
        @unknown default:
            print("default")
        }
    } completionHandler: { (error) in
        if let error = error {
            print(error.localizedDescription)
        }
    }

问题是,bufferType 没有 video。当我打印所有案例时,audioMic 和 audioApp 将永远返回,但 video 永远不会返回。

当我删除应用程序并再次安装时,我只能在第一次启动时轻松重复此问题。它在其他情况下按预期工作。

ps:在问这个问题之前我看了其他问题。他们都没有解决问题。

标签: iosswiftreplaykit

解决方案


经过几天几夜的解决这个问题,我终于想出了一个解决方案。

简单地说,原因是关于主窗口

主窗口对于回放套件很重要,因为它正在记录主窗口。

我正在使用不同的窗口来隐藏录制视频中的一些视图。我还更改了主窗口的 windowLevel。今天,我注意到删除与主窗口相关的所有调整都解决了这个问题。(其他窗口无效。)


推荐阅读