我们还能通过设置 video composition 的 animationTool 属性来使用 Core Animation Framework 框架的强大能力。比如:设置视频水印、视频标题、动画浮层等。
在 video composition 中使用 Core Animation 有两种不同的方式:
添加一个 Core Animation Layer 作为独立的 composition track
直接使用 Core Animation Layer 在视频帧中渲染动画效果
下面的代码展示了后面一种使用方式,在视频区域的中心添加水印:
CALayer *watermarkLayer = <#CALayer representing your desired watermark image#>; CALayer *parentLayer = [CALayer layer]; CALayer *videoLayer = [CALayer layer]; parentLayer.frame = CGRectMake(0, 0, mutableVideoComposition.renderSize.width, mutableVideoComposition.renderSize.height); videoLayer.frame = CGRectMake(0, 0, mutableVideoComposition.renderSize.width, mutableVideoComposition.renderSize.height); [parentLayer addSublayer:videoLayer]; watermarkLayer.position = CGPointMake(mutableVideoComposition.renderSize.width/2, mutableVideoComposition.renderSize.height/4); [parentLayer addSublayer:watermarkLayer]; mutableVideoComposition.animationTool = [AVVideoCompositionCoreAnimationTool videoCompositionCoreAnimationToolWithPostProcessingAsVideoLayer:videoLayer inLayer:parentLayer]; 一个完整示例这里的示例将展示如何合并两个 video asset tracks 和一个 audio asset track 到一个视频文件,其中大体步骤如下:
创建一个 AVMutableComposition 对象,添加多个 AVMutableCompositionTrack 对象
在各个 composition tracks 中添加 AVAssetTrack 对应的时间范围
检查 video asset track 的 preferredTransform 属性决定视频方向
使用 AVMutableVideoCompositionLayerInstruction 对象对视频进行图形变换
设置 video composition 的 renderSize 和 frameDuration 属性
导出视频文件
保存视频文件到相册