美文网首页音视频
OC之视频插入CoreAnimation层工具AVVideoCo

OC之视频插入CoreAnimation层工具AVVideoCo

作者: 苏沫离 | 来源:发表于2018-10-20 00:47 被阅读0次

    AVVideoCompositionCoreAnimationTool 继承自NSObject,用于将Core Animation合并到视频合成中的对象。

    任何动画都将在视频的时间轴上非实时的执行,因此应该:

    • 将动画的beginTime属性设置为AVCoreAnimationBeginTimeAtZero而不是0(CoreAnimation替换为CACurrentMediaTime);
    • removedOnCompletion设置为NO,使动画不会自动删除;
    • 避免使用与UIView对象关联的图层。

    、创建合成工具

    1、将核心动画层添加到视频合成中
    + (instancetype)videoCompositionCoreAnimationToolWithAdditionalLayer:(CALayer *)layer
    asTrackID:(CMPersistentTrackID)trackID;
    

    将核心动画层添加到视频合成中:

    • 参数layer:要添加的Core Animation层。
    • 参数trackID:用于标识轨道的trackIDtrackID不应该匹配源中的任何实际trackID

    可以使用此方法将Core Animation图层包含为视频合成中的单个轨道输入。视频合成指令应引用应包含渲染动画的trackID

    2、使用核心动画层构成合成视频帧
    + (instancetype)videoCompositionCoreAnimationToolWithPostProcessingAsVideoLayer:(CALayer *)videoLayer
    inLayer:(CALayer *)animationLayer;
    

    使用核心动画层构成合成视频帧:

    • 参数videoLayer:一个视频层。
    • 参数animationLayer:动画层。

    将合成的视频帧放在videoLayer中并渲染animationLayer以生成最终帧。
    videoLayer应该在animationLayer子层树中;animationLayer不应来自或添加到另一个图层树。

    3、使用Core Animation层组合合成的视频帧
    + (instancetype)videoCompositionCoreAnimationToolWithPostProcessingAsVideoLayers:(NSArray<CALayer *> *)videoLayers
    inLayer:(CALayer *)animationLayer;
    

    使用Core Animation层组合合成的视频帧:

    • 参数videoLayers:一组视频层
    • 参数animationLayer:动画层。

    复制每个videoLayer中的合成视频帧,并渲染animationLayer以生成最终帧。videoLayers应该在animationLayer的子层树中。
    animationLayer不应该来自另一层树,也不应该添加到另一层树。

    注意:在iOS中,支持UIView的层实例通常会翻转它们的内容,这是由-contentsAreFlipped方法定义的。可能需要在图层层次结构中插入其geometryFlipped属性设置为YES的CALayer实例,以便在图层备份UIView时将图层附加到接收器时获得相同的结果。

    相关文章

      网友评论

        本文标题:OC之视频插入CoreAnimation层工具AVVideoCo

        本文链接:https://www.haomeiwen.com/subject/bdxyzftx.html