2

我正在尝试使用 ReplayKit 在我的应用程序中创建直播。基本上我想分享我的屏幕并查看其他用户的屏幕。

为了获得缓冲区,ReplayKit 提供了下一个函数:

func startCapture(handler captureHandler: ((CMSampleBuffer, RPSampleBufferType, Error?) -> Void)?, completionHandler: ((Error?) -> Void)? = nil)

所以这是我启动 ReplayKit 并获取缓冲区的方法:

private func startRecording() {
    RPScreenRecorder.shared().startCapture(handler: { (sampleBuffer, bufferType, error) in
        switch bufferType {

        case RPSampleBufferType.video:
            // Handle buffer and send it to server
            break

        case RPSampleBufferType.audioApp:
            break
        case RPSampleBufferType.audioMic:
            break
        }

    }, completionHandler: nil)
}

这很有效,但我面临下一个问题;如果屏幕不断变化,比如一个闪烁的按钮,当我将应用程序发送到后台并返回几次时,ReplayKit 会停止调用其捕获处理程序。

可能问题是这个功能startCapture是为了在有限的时间内录屏,而不是为了直播。

我在 Github 中做了一个示例,带有一个闪烁的按钮,显示了我遇到的问题;ReplayKit 正常运行,直到反复进入后台;然后它停止,让它再次工作的唯一方法是重新启动设备。

4

0 回答 0