在本文中,您将了解如何使用 Swift 和 AVMutableVideoComposition 向视频剪辑添加文本叠加层。本文中的代码使用 Swift 5。使用示例代码为 Swift Playground克隆此存储库。
配置
要访问AVFoundation和CoreImage对象,请务必将这些导入添加到您的代码中
import AVFoundation
import CoreImage.CIFilterBuiltins
导入CIFilterBuiltins可让您在使用CIFilters. 否则,只需导入CoreImage. 但是随后您将需要使用字符串访问过滤器属性。
在处理视频剪辑和电影文件时,基本的起点是AVAsset类。该类结合了构成电影的所有定时视频和音频轨道。此外,可能还有字幕和定时元数据或字幕。
创建视频组合
为资产创建视频合成后,您可以将其应用于AVPlayerItem在屏幕上显示或AVAssetExportSession写入文件。本教程的组合将使用init(asset:applyingCIFiltersWithHandler:)初始化器。然后,您可以将CIFilters 应用于视频的每一帧。
首先,AVAsset使用其 URL 加载电影文件。
//Fetch a URL for the movie from the bundle
let waterfallURL = Bund