#
这里说的视频制作并不是从摄像头录制视频,而是如何将一帧一帧的图片合成一个视频文件。这里我们所使用到的类是AVAssetWriter,它的使用方式比较固定,且代码也比较多。
首先是设定好AVAssetWriter
|
|
配置好AVAssetWriter后,就可以往它写入每一帧的图像数据了。写入的方法如下。代码里面使用了代理模式,将每一帧的context传递给了代理,由代理去完成绘制后,把这个context写入到视频。
|
|
留意到上面的代码是运行在一个串行队列中,但是这个串行队列是运行在全局队列中,配置如下,写在了init方法里面。
|
|
为了能自动调用writeVideoFrame方法,使用了一个DisplayLink,在开始导出视频的时候,初始化这个DisplayLink并将它加入到runloop。使用DisplayLink的好处是能获得和屏幕刷新率一样的频率。在录屏的时候也可以使用这个视频导出类。
|
|
绘制完成或者取消后,必须对一些用到的对象进行清理,避免内存泄露。
|
|