关于iOS录屏功能躺过的坑,给有需要的人

       最近因为团队需要,所以抽空研究了一下iOS的录屏功能,找到的资料很少,但是还是挺有用的,需要感谢大家的分享精神。我在这里就只想说一下需要注意的几点问题。

1、由于我自建的项目是ARC模式的,所以在引入别人的“画板”是MRC的相关代码时,编译不过,因为兼容问题,所以需要在Cocoapods的配置文件里面使用代码更改,或者也可以在"Build Phases"设置中引入相关的文件(这种方式请百度)。下面是我配置的相关代码截图:

关于iOS录屏功能躺过的坑,给有需要的人_第1张图片
这是一些手动释放的类,把相关路径添加进来

2、在音频和视频合成的方法里面,根据本地路径读取到文件后,需要先哪array判断下,不然在某一个条件为空的情况下会引起崩溃。如下:

关于iOS录屏功能躺过的坑,给有需要的人_第2张图片
视频的数组也一样这样判断

3、录制成功后合成的文件大小决定关键presetName参数,我设置AVAssetExportPreset1280x720就已经足够,因为后续要做成SDK给别人使用,所以我提供变量给别人传递,但是必须要用系统定义的,否则后果自负。

关于iOS录屏功能躺过的坑,给有需要的人_第3张图片
合成成功后把输入地址传递出去

4、录制音频的格式要跟配置的参数一一对应,否则录制失败。比如wav格式的文件设置格式是kAudioFormatLinearPCM,caf的采样频率必须为kAudioFormatMPEG4AAC。当然这两种音频格式都可以合成MP4或者MOV文件。

关于iOS录屏功能躺过的坑,给有需要的人_第4张图片
一定要跟音频扩展名是对应关系

5、录制画面帧传递的size=self.captureLayer.bounds.size很关键,创建画布的时候取size的大小,但是设置视频参数用 videoSize = CGSizeMake(tmpsize.width*scaleFactor, tmpsize.height*scaleFactor);其中float scaleFactor = [[UIScreen mainScreen] scale];  如下:

关于iOS录屏功能躺过的坑,给有需要的人_第5张图片
视频参数配置
关于iOS录屏功能躺过的坑,给有需要的人_第6张图片
画布大小
关于iOS录屏功能躺过的坑,给有需要的人_第7张图片
每一帧的画面的大小

如果这些地方不设置对的话会导致播放的画面发送拉扯挤压,或者是后面CFDataGetBytes(image, CFRangeMake(0, CFDataGetLength(image)), destPixels)方法发生崩溃。

6、就是真机播放MP4文件的问题,如果平板或者手机上有下载“王者荣耀”的游戏,请先关掉再重启系统,不然没法播放你录制的视频文件。

就写到这里,放假了,有不对的地方欢迎指正。

录屏Demo  这是录屏Demo,声明非我原创,我只是做了调整和修改,给有需要的童鞋!

你可能感兴趣的:(关于iOS录屏功能躺过的坑,给有需要的人)