swift - 使用 RPScreenRecorder 开始捕获保存屏幕录制

标签 swift ios11 cmsamplebuffer rpscreenrecorder

我正在尝试使用 RPScreenRecorder.shared().startCapture 将屏幕录制保存到 firebase。我知道如何从 AVCapture 保存视频,但不知道如何处理 CMSampleBuffer 来创建文件以保存到 firebase。请帮助我在任何地方都找不到这方面的文档,这是方法调用:

 let recorder = RPScreenRecorder.shared()
 if #available(iOS 11.0, *) {
            recorder.startCapture(handler: { (videoBuffer, bufferType, error) in
                print(videoBuffer)
                print(bufferType)

            }, completionHandler: { (error) in

            })
        } else {
            // Fallback on earlier versions
        }

即使指向正确的方向也会有所帮助,但我不知道如何将示例缓冲区保存为可以作为视频播放的文件

最佳答案

RPScreenRecorder.shared().startCapture(handler: { (sample, bufferType, error) in
            if CMSampleBufferDataIsReady(sample)
            {
                self.showOverlayWindow()

                if self.assetWriter.status == AVAssetWriterStatus.unknown 
                {
                    self.assetWriter.startWriting()
                    self.assetWriter.startSession(atSourceTime: CMSampleBufferGetPresentationTimeStamp(sample))
                }

                if self.assetWriter.status == AVAssetWriterStatus.failed {
                    print("Error occured, status = \(self.assetWriter.status.rawValue), \(self.assetWriter.error!.localizedDescription) \(String(describing: self.assetWriter.error))")
                    return
                }

                if (bufferType == .video)
                {
                    if self.videoInput.isReadyForMoreMediaData
                    {
                        self.videoInput.append(sample)
                    }
                }
            }

        }) { (error) in
            debugPrint(error)
        }

详细代码可见here

关于swift - 使用 RPScreenRecorder 开始捕获保存屏幕录制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46945152/

相关文章:

SwiftUI:拖入空列表时崩溃

ios - Xcode 9.2 说我的 "iPhone has recently restarted"并且不会运行

ios - 从麦克风捕获音频时,我陷入了内存泄漏或音频中的过多静电之间

macos - 使用 AVFoundation (OSX) 向视频添加过滤器 - 如何将生成的图像写回 AVWriter?

ios - 在 Swift 中创建 CMSampleBuffer 的副本会返回 OSStatus -12743(无效媒体格式)

swift - 如何在以下情况下 swift 使用枚举?

ios - 我希望 SWIFT/Scenekit 中的所有对象都在地板上有阴影

ios - 从通知中心删除重复的远程通知

swift - MFMessageComposer 取消按钮在 iOS 11 中不可见

NavigationBar 中的 iOS 11 Logo 和标题