现已支持cocoasPods
pod "ScreenRecorderKit"
- 注意在开始录屏之前要先获取“图片”的权限,否则回导致,所有接口回调都会正常,但是回调方法中的NSData为空。后续的将权限的判断和索取加入到框架中
- 如果最近有时间的画也会把录屏直播的东西加入进来
ScreenRecorderKit是一个基于ReplayKit封装的轻量级录屏框架。 WWDC关于Replaykit的部分参考:Go Live with ReplayKit 如果直接使用官方的ReplayKit,是没有办法直接获取录制视频的二进制数据的,而是会生成一个预览界面由用户选择保存相册或者是分享,这样的话就很难满足一些业务上的需求,ScreenRecorderKit先把视频存储到相册,然后再从相册中取视频资源转成二进制数据,方便业务上做处理。
本框架帮助开发者以一种更简单的方式处理App间的录屏冲突,App与系统之间的录屏冲突,以及其他异常的提示。并且可以保存到系统相册,代理方法里面可以获取到录屏视频的NSData数据,方便沙盒存储或者上传服务器。
- 轻松的处理App与App的录屏冲突、App与系统录屏的冲突、
- 录屏中的异常问题。
- 开始和结束录屏的方法均有成功和失败的回调。
- 引用
在你需要调用录屏功能的地方
ScreenRecordManager.h
设置 ScreenRecordDelegate 代理[ScreenRecordManager shareManager]; mgr.screenRecordDelegate = self;
- 开始和结束方法
开始录制
[[ScreenRecordManager shareManager] screenRecSuc:^{
NSLog(@"录制启动成功");
[weakself showToast:@"录制启动成功"];
} failure:^(DUErrorHandle *error) {
NSLog(@"%@", error.msg);
[weakself showToast: error.msg];
}];
结束录制
[[ScreenRecordManager shareManager] stopRecSuc:^{
} failure:^(DUErrorHandle *error) {
if (error.code == -2) { // -2是没有可以结束的录屏幕的进程
}else{
[weakself showToast: error.msg];
}
}];
- 代理方法
ScreenRecordManager
的录制状态发生了改变
-(void)recStateDidChange:(RecState)state withError:(NSError *)error{
if (error) {
[self showToast:[error localizedDescription]];
}else{
if (state == RecState_Rec) {
self.recBtn.selected = YES;
}else{
[self showToast:@"录屏结束"];
self.recBtn.selected = NO;
}
}
}
ScreenRecordManager
保存录屏视频到相册成功的代理方法
-(void)savedPhotoImage:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo{
if(error){
[self showToast:[error localizedDescription]];
}else{
[self showToast:@"保存相册成功"];
}
}
ScreenRecordManager
录屏视频的二进制文件获取,在这里你可以选择将二进制数转成.mp4文件或者将数据上传至服务器等等。
-(void)savedVideoData:(NSData *)data didFinishSavingWithError:(BOOL)isError{
if (isError) {
[self showToast:@"生成二进制文件错误"];
}else{
[self showToast:@"生成二进制文件成功"];
}
}
- iOS 9.0 and up
- Xcode 7.0 and up
ScreenRecorderKit is not available through CocoaPods currently.
Huanghong, chinahuanghong@gmail.com
ScreenRecorderKit is available under the MIT license. See the LICENSE file for more info.