ReplayKit 的屏幕录制功能
苹果在 iOS 9 中新添加了 ReplayKit 库,主要作用就是 RPScreenRecorder 的屏幕录制功能。在 iOS 10 中,苹果又为 ReplayKit 添加了RPBroadcast 相关的类,主要用于视频直播。这篇文章说的是屏幕录制,以后可以研究一下苹果官方推出的的直播,还是蛮期待的。
关于屏幕录制的功能很简单,只涉及了三个类 RPScreenRecorder 、RPPreviewViewController 和 RPError。
相关的方法都在 RPScreenRecorder 里:
开始录制 :开始录制有两个方法
- (void)startRecordingWithHandler:(nullable void(^)(NSError * _Nullable error))handler;- (void)startRecordingWithMicrophoneEnabled:(BOOL)microphoneEnabled handler:(nullable void(^)(NSError * _Nullable error))handler;
调用第一个的作用只能录制屏幕的画面,无法录制声音。点击后会有授权信息,如图:
调用第二个方法会传递 microphoneEnabled 的布尔值,
如果设置为 NO ,效果和作用和调用第一个方法无异。如果设置为 YES ,会弹出如下授权信息:
注:选择了第一个,会在录制屏幕画面的同时,会录制手机以及外部环境的声音。
结束录制
- (void)stopRecordingWithHandler:(nullable void(^)(RPPreviewViewController * _Nullable previewViewController, NSError * _Nullable error))handler;
结束录制后,会有一个回调,返回一个 previewViewController 。该 ViewController 包含了录制好的视频预览图,顶部的返回和保存,以及底部的分享。 一般,我们只需要 present 出这个 ViewController。然后,点击保存就会自动存入相册 。也可以点击分享,直接分享到一些第三方。
代理方法
RPScreenRecorderDelegate
1、如果在录制的过程中,因为一些意外终止了录制,会调用这个方法,可以再此获取错误信息。(第一个方法在 iOS11 中已经被废弃调,可以用第二个方法)
- (void)screenRecorder:(RPScreenRecorder *)screenRecorder didStopRecordingWithError:(NSError *)error previewViewController:(nullable RPPreviewViewController *)previewViewController;- (void)screenRecorder:(RPScreenRecorder *)screenRecorder didStopRecordingWithPreviewViewController:(nullable RPPreviewViewController *)previewViewController error:(nullable NSError *)error;
2、下面这个代理方法是用来监听 ReplayKit 是否可用的,如果状态发生变化(比如录制过程中,切入设置,关闭权限。)会回调该方法。
- (void)screenRecorderDidChangeAvailability:(RPScreenRecorder *)screenRecorder;
注意事项:
1、我们是无法通过回调直接拿到视频文件的,只有等待存入相册后,我们再从相册读取。
2、点击开始录制的时候,到系统真正的开始录制会有大概 1-2s 的延迟,甚至会出现启动录制失败的现象。因此要做好提示处理。
另外,在 iOS11中 我们可以通过下面的方法获取屏幕录制的每一帧:
- (void)startCaptureWithHandler:(nullable void(^)(CMSampleBufferRef sampleBuffer, RPSampleBufferType bufferType, NSError * _Nullable error))captureHandler completionHandler:(nullable void(^)(NSError * _Nullable error))completionHandler API_AVAILABLE(ios(11.0), tvos(11.0));
该方法在准备完毕后调用 completionHandler,然后 在录制过程中,会不断回调 captureHandler ,我们可以通过返回的每一个 sampleBuffer ,获取到视频对应的每一帧图片。具体转换方法谷歌一下,很多。
当然,有开始就有停止:
- (void)stopCaptureWithHandler:(nullable void(^)(NSError * _Nullable error))handler API_AVAILABLE(ios(11.0), tvos(11.0));
我觉得 iOS11 这个获取每帧画面应该就是为了直播准备的。关于苹果官方的直播方案,下次再议。
ReplayKit 的屏幕录制功能相关推荐
- IOS ReplayKit RPScreenRecorder 的屏幕录制功能
IOS ReplayKit RPScreenRecorder 的屏幕录制功能 开始录制有两个方法: (void)startRecordingWithMicrophoneEnabled:(BOOL)mi ...
- python 屏幕录制_Python实现屏幕录制功能的代码
前段时间做视频时需要演示电脑端的操作,因此要用到屏幕录制,下载了个迅捷屏幕录制,但是没有vip录制的视频有水印且只能录制二分钟,于是鄙人想了下能不能通过万能的python来实现呢?经过一晚上的尝试发现 ...
- ios html录制视频,iPhone怎么录屏?玩转iOS14自带屏幕录制功能全攻略
原标题:iPhone怎么录屏?玩转iOS14自带屏幕录制功能全攻略 录屏是很多小伙伴,平时用的比较多的一项功能.苹果手机内置了录屏功能,无需下载安装第三方APP即可体验.不过,有一些小伙伴对iPhon ...
- android 实现屏幕录制功能,Android实现屏幕录制功能
本文实例为大家分享了Android实现屏幕录制功能的具体代码,供大家参考,具体内容如下 1.效果图: 2.添加依赖 dependencies { implementation fileTree(dir ...
- python屏幕录制与回放_Python实现屏幕录制功能的代码
前段时间做视频时需要演示电脑端的操作,因此要用到屏幕录制,下载了个迅捷屏幕录制,但是没有vip录制的视频有水印且只能录制二分钟,于是鄙人想了下能不能通过万能的python来实现呢?经过一晚上的尝试发现 ...
- android 实现屏幕录制功能,极速简单实现Android 屏幕录制编码为H264并且使用RTMP推流...
最近有使用到屏幕录制功能并需要将屏幕数据推送到服务器端.采用RTMP推送,MediaCodec编码,MediaProjection 获取屏幕数据. 1.录制屏幕 在Android5.0 后可以采用原生 ...
- python实现屏幕录制_Python实现屏幕录制功能的代码
前段时间做视频时需要演示电脑端的操作,因此要用到屏幕录制,下载了个迅捷屏幕录制,但是没有vip录制的视频有水印且只能录制二分钟,于是鄙人想了下能不能通过万能的python来实现呢?经过一晚上的尝试发现 ...
- android屏幕录制功能,Android利用ADB进行屏幕录制
前言 在写博客时,为了方便大家理解,我们经常需要把一些操作或动画录制成Gif,一般需要下载一个屏幕录制App将手机屏幕录制成视频(可能需要Root权限),然后导出到电脑,再转为Gif.今天就来教大家一 ...
- python实现屏幕视频录制_Python实现屏幕录制功能的代码
前段时间做视频时需要演示电脑端的操作,因此要用到屏幕录制,下载了个迅捷屏幕录制,但是没有vip录制的视频有水印且只能录制二分钟,于是鄙人想了下能不能通过万能的python来实现呢?经过一晚上的尝试发现 ...
最新文章
- 一些与算法有关的网站
- Linux模块机制浅析
- 不起作用 微信小程序 顶部json_微信小程序之 新建项目默认结构
- Crawler之Scrapy:Scrapy简介、安装、使用方法之详细攻略
- arm中的.a文件如何产生的_可变文件系统:如何在IPFS中处理文件?
- 读者来信(1)——项目经理,不要迷信制度!
- 【51单片机快速入门指南】5:软件SPI
- 科目三并不难 盘点科目三技巧
- Bootstrap 滚动监听插件Scrollspy 的方法
- linux乱码的文件怎么删除,如何删除Linux的乱码文件
- Win10专业版下如何禁用Windows Defender功能?
- 如何去定义一个jquery插件
- Scrapy分布式、去重增量爬虫的开发与设计
- HMM和Viterbi
- 星空之夜(哈希+DFS)
- 如何合并同一个磁盘里面的两个区(卷)
- 运维真的不是夕阳产业!(不谈技术)
- VP-Expert的下载安装以及如何运行
- 90%公链项目将死?那些号称超越以太坊的“颠覆者”咋样了?
- 大数据︱中国城市谁在腾飞?谁又在衰落?