iOS - 应用 CIFilter 合并多个视频

iOS - Merge multiple videos applying CIFilter

我想将两个或多个视频(存储在磁盘上)合并到一个文件中。它与 AVAssetExportSession 配合得很好。但下一个问题是为每个视频应用不同的 CIFilter。为了将 CIFilter 应用于一个视频,我使用了 AVMutableVideoComposition(asset:applyingCIFiltersWithHandler:) 是否可以合并两个(和模式)AVMutableVideoCompositions 而无需将每个带有过滤器的视频分别保存在磁盘上?还是我应该为此目的使用 AVAssetReader/Writer

是的,这是可能的。然而,不幸的是,它有点复杂。而且你需要更多的胶水代码。

您可以通过实现实现 AVVideoCompositing 协议的自定义合成器来完全自定义多个视频的合成方式(以及之前的单个帧会发生什么)。 Whosebug 上有一个 old example project from Apple showcasing the whole process. There's also 和答案,你可以参考。

基本思想是在自定义合成器的 startRequest(_:) method 中实现过滤器和合成逻辑。在那里您可以访问所有输入视频的帧。因此,您可以根据自己的喜好对它们进行处理和组合。