iOS RePlayKit的使用

在iOS 11.0以上的系统中,ReplayKit支持了实时流的录制,iOS11前的系统只支持将录制的视频保存在本地沙盒。

//开启录屏模式
[[RPScreenRecorder sharedRecorder] startCaptureWithHandler:^(CMSampleBufferRef  _Nonnull sampleBuffer, RPSampleBufferType bufferType, NSError * _Nullable error) {
            if (!CMSampleBufferDataIsReady(sampleBuffer))
            {
                return;
            }
            //RPSampleBufferTypeVideo = 1,视屏声音
            // RPSampleBufferTypeAudioApp,App的声音
            // RPSampleBufferTypeAudioMic,Mic录制的声音
            switch (bufferType) {
                case RPSampleBufferTypeVideo:
                {
//视屏帧 可执行上传的操作
                }
                    break;
                case RPSampleBufferTypeAudioMic:
                {
//mic音频帧
                }
                    break;
                default:
                    break;
            }
        } completionHandler:^(NSError * _Nullable error) {
           
        }];

关闭录屏

//关闭录屏
[[RPScreenRecorder sharedRecorder] stopCaptureWithHandler:^(NSError * _Nullable error) {
       
        }];
代理方法RPScreenRecorderDelegate

//可能因为某种原因报错

- (void)screenRecorder:(RPScreenRecorder *)screenRecorder didStopRecordingWithError:(NSError *)error previewViewController:(nullable RPPreviewViewController *)previewViewController API_DEPRECATED("No longer supported", ios(9.0, 10.0), tvos(10.0,10.0));
- (void)screenRecorder:(RPScreenRecorder *)screenRecorder didStopRecordingWithPreviewViewController:(nullable RPPreviewViewController *)previewViewController error:(nullable NSError *)error API_AVAILABLE(ios(11.0), tvos(11.0));

我现在在录屏,这时候切到后台录屏的线程断开了,但是任务还存在,因为没有停止掉,所以我在delegate里面执行了关闭录屏,在回调中重新打开录屏,录屏流恢复上传

[screenRecorder stopCaptureWithHandler:^(NSError * _Nullable error) {
            //重新打开录屏
        }]
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容