最近因为团队需要,所以抽空研究了一下iOS的录屏功能,找到的资料很少,但是还是挺有用的,需要感谢大家的分享精神。我在这里就只想说一下需要注意的几点问题。
1、由于我自建的项目是ARC模式的,所以在引入别人的“画板”是MRC的相关代码时,编译不过,因为兼容问题,所以需要在Cocoapods的配置文件里面使用代码更改,或者也可以在"Build Phases"设置中引入相关的文件(这种方式请百度)。下面是我配置的相关代码截图:
2、在音频和视频合成的方法里面,根据本地路径读取到文件后,需要先哪array判断下,不然在某一个条件为空的情况下会引起崩溃。如下:
3、录制成功后合成的文件大小决定关键presetName参数,我设置AVAssetExportPreset1280x720就已经足够,因为后续要做成SDK给别人使用,所以我提供变量给别人传递,但是必须要用系统定义的,否则后果自负。
4、录制音频的格式要跟配置的参数一一对应,否则录制失败。比如wav格式的文件设置格式是kAudioFormatLinearPCM,caf的采样频率必须为kAudioFormatMPEG4AAC。当然这两种音频格式都可以合成MP4或者MOV文件。
5、录制画面帧传递的size=self.captureLayer.bounds.size很关键,创建画布的时候取size的大小,但是设置视频参数用 videoSize = CGSizeMake(tmpsize.width*scaleFactor, tmpsize.height*scaleFactor);其中float scaleFactor = [[UIScreen mainScreen] scale]; 如下:
如果这些地方不设置对的话会导致播放的画面发送拉扯挤压,或者是后面CFDataGetBytes(image, CFRangeMake(0, CFDataGetLength(image)), destPixels)方法发生崩溃。
6、就是真机播放MP4文件的问题,如果平板或者手机上有下载“王者荣耀”的游戏,请先关掉再重启系统,不然没法播放你录制的视频文件。
就写到这里,放假了,有不对的地方欢迎指正。
录屏Demo 这是录屏Demo,声明非我原创,我只是做了调整和修改,给有需要的童鞋!