AVFoundation – AVCompositionTrackSegment 可变轨道片段

ChatGPT 3.5 国内中文镜像站免费使用啦


零基础 Object-C 学习路线推荐 : Object-C 学习目录 >> Object-C 基础

零基础 Object-C 学习路线推荐 : Object-C 学习目录 >> Object-C 线程

零基础 Object-C 学习路线推荐 : Object-C 学习目录 >> OpenGL ES

零基础 Object-C 学习路线推荐 : Object-C 学习目录 >> GPUImage

零基础 Object-C 学习路线推荐 : Object-C 学习目录 >> AVFoundation

零基础 Object-C 学习路线推荐 : Object-C 学习目录 >> CocoaPods


一.前言


1.AVAsset

Assets  可以来自一个文件或用户的相册,可以理解为多媒体资源,通过 URL 作为一个 asset 对象的标识. 这个 URL 可以是本地文件路径或网络流;


2.AVAssetTrack

AVAsset 包含很多轨道 AVAssetTrack的结合,如 audio, video, text, closed captions, subtitles…


3.AVComposition / AVMutableComposition

使用  AVMutableComposition  类可以增删 AVAsset 来将单个或者多个 AVAsset 集合到一起,用来合成新视频。除此之外,若想将集合到一起的视听资源以自定义的方式进行播放,需要使用 AVMutableAudioMix 和 AVMutableVideoComposition 类对其中的资源进行协调管理;


4.AVMutableVideoComposition

AVFoundation 类 API 中最核心的类是 AVVideoComposition / AVMutableVideoComposition 。

AVVideoComposition / AVMutableVideoComposition 对两个或多个视频轨道组合在一起的方法给出了一个总体描述。它由一组时间范围和描述组合行为的介绍内容组成。这些信息出现在组合资源内的任意时间点。

AVVideoComposition / AVMutableVideoComposition 管理所有视频轨道,可以决定最终视频的尺寸,裁剪需要在这里进行;


5.AVMutableCompositionTrack

AVMutableCompositionTrack多个 AVAsset 集合到一起合成新视频中轨道信息,有音频轨、视频轨等,里面可以插入各种对应的素材(画中画,水印等);


6.AVMutableVideoCompositionLayerInstruction

AVMutableVideoCompositionLayerInstruction 主要用于对视频轨道中的一个视频处理缩放、模糊、裁剪、旋转等;


7.AVMutableVideoCompositionInstruction

表示一个指令,决定一个 timeRange 内每个轨道的状态,每一个指令包含多个 AVMutableVideoCompositionLayerInstruction ;而 AVVideoComposition 由多个 AVVideoCompositionInstruction 构成;

AVVideoCompositionInstruction 所提供的最关键的一段数据是组合对象时间轴内的时间范围信息。这一时间范围是在某一组合形式出现时的时间范围。要执行的组全特质是通过其 AVMutableVideoCompositionLayerInstruction 集合定义的。


8.AVAssetExportSession

AVAssetExportSession 主要用于导出视频;


9.AVAssetTrackSegment

AVAssetTrackSegment 不可变轨道片段;


10.AVCompositionTrackSegment

AVCompositionTrackSegment 可变轨道片段,继承自 AVAssetTrackSegment;


二.简介

AVCompositionTrackSegment 继承自 AVAssetTrackSegment ,AVAssetTrack的一个片段,由URL,轨道标识符和从源轨道到合成轨道的时间映射组成。通常使用这个类将组合的低级表示形式保存到选择的存储格式中,并从存储中重新构造它们。


1.创建空白轨道片段

/*
*函数描述:根据时间范围创建空白轨道片段
*
*参数:
*   timeRange:空 AVCompositionTrack 片段的时间范围;
*
*返回值:返回表示空轨道片段;
*/

+ (instancetype)compositionTrackSegmentWithTimeRange:(CMTimeRange)timeRange;

- (instancetype)initWithTimeRange:(CMTimeRange)timeRange;

2.根据url创建轨道片段

/*
*函数描述:根据 url 创建空白轨道片段
*
*参数:
*   URL:媒体文件;
*   timeRange:空 AVCompositionTrack 片段的时间范围;
*   trackID:轨道标识符,指定要由轨道段呈现的容器文件的轨道;
*   sourceTimeRange:轨道段要呈现的容器文件轨道的时间范围;
*   targetTimeRange:合成轨道的时间范围,在此期间将呈现轨道段;
*
*返回值:返回表示轨道片段;
*/


+ (instancetype)compositionTrackSegmentWithURL:(NSURL *)URL
                    trackID:(CMPersistentTrackID)trackID
            sourceTimeRange:(CMTimeRange)sourceTimeRange
            targetTimeRange:(CMTimeRange)targetTimeRange;

- (instancetype)initWithURL:(NSURL *)URL
                    trackID:(CMPersistentTrackID)trackID
            sourceTimeRange:(CMTimeRange)sourceTimeRange
            targetTimeRange:(CMTimeRange)targetTimeRange;

三.猜你喜欢


ChatGPT 3.5 国内中文镜像站免费使用啦
© 版权声明
THE END
喜欢就支持一下吧
点赞2 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容