jun-zhang / ScreenRecorderKit

iOS屏幕录制/屏幕直播框架

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Platform

ScreenRecorderKit

注意

现已支持cocoasPods

pod "ScreenRecorderKit"
  • 注意在开始录屏之前要先获取“图片”的权限,否则回导致,所有接口回调都会正常,但是回调方法中的NSData为空。后续的将权限的判断和索取加入到框架中
  • 如果最近有时间的画也会把录屏直播的东西加入进来

介绍

ScreenRecorderKit是一个基于ReplayKit封装的轻量级录屏框架。 WWDC关于Replaykit的部分参考:Go Live with ReplayKit 如果直接使用官方的ReplayKit,是没有办法直接获取录制视频的二进制数据的,而是会生成一个预览界面由用户选择保存相册或者是分享,这样的话就很难满足一些业务上的需求,ScreenRecorderKit先把视频存储到相册,然后再从相册中取视频资源转成二进制数据,方便业务上做处理。

本框架帮助开发者以一种更简单的方式处理App间的录屏冲突,App与系统之间的录屏冲突,以及其他异常的提示。并且可以保存到系统相册,代理方法里面可以获取到录屏视频的NSData数据,方便沙盒存储或者上传服务器。

特点

  • 轻松的处理App与App的录屏冲突、App与系统录屏的冲突、
  • 录屏中的异常问题。
  • 开始和结束录屏的方法均有成功和失败的回调。

使用

  1. 引用 在你需要调用录屏功能的地方ScreenRecordManager.h

设置 ScreenRecordDelegate 代理[ScreenRecordManager shareManager]; mgr.screenRecordDelegate = self;

  1. 开始和结束方法

开始录制

     [[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];
                
            }
            
        }];     
  1. 代理方法 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:@"生成二进制文件成功"];
        
    }
    
}

Requirements

  • iOS 9.0 and up
  • Xcode 7.0 and up

Installation

ScreenRecorderKit is not available through CocoaPods currently.

Author

Huanghong, chinahuanghong@gmail.com

Apps Integrated

License

ScreenRecorderKit is available under the MIT license. See the LICENSE file for more info.

About

iOS屏幕录制/屏幕直播框架

License:MIT License


Languages

Language:Objective-C 72.6%Language:Ruby 27.4%