我有一个AVMutableComposition,其中包含两个轨道(每个轨道分别用于视频和音频),该轨道组合了多个视频(作为段:AVCompositionTrackSegment
)进行播放。我必须对选定的视频而不是整个作品应用过滤器(如果我总共有4个细分,请在第二和第四细分中说)。例如,如果用户选择在视频2上应用滤镜,那么我将使用AVMutableVideoComposition(asset: AVAsset, applyingCIFiltersWithHandler: (AVAsynchronousCIImageFilteringRequest) -> Void)
在合成的各个持续时间内应用该滤镜。一切正常。
现在,我想使用一些使用GPUImage
库创建的自定义过滤器。所以我的问题是GPUImage
是否有API可以在选定的细分市场或AVMutableComposition
的特定持续时间内应用过滤器?这样,我既可以将CIFilter
用于内置过滤器,也可以将GPUImage
用于自定义过滤器。
是的,您可以在这里使用AVVideoCompositing,在视频合成中,您可以使用自定义合成器,在其中您可以将每个轨道定义为轨道ID,然后通过这个trackId,您将获得frameBuffer,并且可以对该帧缓冲区执行任何操作,就像可以使用gpuImage用于自定义过滤器,也可以使用Metal来创建自定义过滤器。苹果工程师在该主题中有一个示例项目,您可以看到它。参考链接:https://developer.apple.com/documentation/avfoundation/avvideocompositing?language=objchttps://github.com/ElfSundae/AVDemo/tree/master/AVCustomEdit