AVFoundation视频剪辑的整体工作流程
所属分类:ios | 发布于 2025-04-16
AVFoundation视频剪辑的整体工作流程
第一步:创建一个或多个AVAsset。AVAsset是有时间的,模拟音视频实体的对象。
第二步:创建AVComposition、AVVideoComposition以及AVAudioMix。
AVComposition指定了音视频轨道的时间对齐。
AVVideoComposition指定了视频轨道在任何给定时间点的几何变化与混合。
AVAudioMix管理音频轨道的混合参数。
这三个对象是视频剪辑最主要的三个类,可以把第一个类的作用理解为摆放音视频轨道,第二个类处理视频混合,第三个类处理音频混合。
第三步,使用这三个对象来创建AVPlayerItem,并从中创建一个AVPlayer来播放编辑效果。也可以使用这三个对象来创建AVAssetExportSession,用来将编辑结果写入文件。
AVComposition
AVComposition是一个或多个AVCompositionTrack音视频轨道的集合。其中AVCompositionTrack又可以包含来自多个AVAsset的AVAssetTrack。上图的例子中,将两个AVAsset中的音视频AVAssetTrack组合到AVComposition的音视频AVCompositionTrack中。
AVVideoComposition
AVVideoComposition可以用来指定渲染大小、渲染缩放以及帧率。图中紫色部分包含了有一组指令,这些指令存储了混合的参数。有了这些混合的参数之后,可以通过自定义的Compositor来混合对应的图像帧。
整体工作流程如图所示,接受指令,把原视频帧通过合成器,生成合成后的帧,输出给播放器或者导出器。
AVAudioMix
AVAudioMix在AVComposition的音视频轨道上处理音频。包含一组AVAudioMixInputParameters,每个Parameters对应一个音频的AVCompositionTrack。上图的示例中可以看到AVCompositionTrack和AVAudioMixInputParameters是一一对应的。