在背景上渲染Alpha通道视频(AVFoundation,Swift)

时间:2018-12-21 00:11:01

标签: ios swift avfoundation

最近,我一直在关注this教程,该教程教会了我如何在iOS中播放带有Alpha通道的视频。在AVPlayer之类的内容上构建UIImageView一直很有效,这使我可以使自己的视频(已删除Alpha通道)看起来像在图像的顶部播放。

使用这种方法,我现在需要找到一种方法来将视频渲染/保存到用户设备中。这是我的代码,用于生成在AVPlayer中播放的Alpha视频;

let videoSize = CGSize(width: playerItem.presentationSize.width, height: playerItem.presentationSize.height / 2.0)

let composition = AVMutableVideoComposition(asset: playerItem.asset, applyingCIFiltersWithHandler: { request in
   let sourceRect = CGRect(origin: .zero, size: videoSize)
   let alphaRect = sourceRect.offsetBy(dx: 0, dy: sourceRect.height)
   let filter = AlphaFrameFilter()
   filter.inputImage = request.sourceImage.cropped(to: alphaRect)
                .transformed(by: CGAffineTransform(translationX: 0, y: -sourceRect.height))
   filter.maskImage = request.sourceImage.cropped(to: sourceRect)
   return request.finish(with: filter.outputImage!, context: nil)

(为方便起见,它已被截短了一点,但我可以确认这种方法会正确返回一个AVVideoComposition,我可以在AVPlayer中玩耍。

我认识到我可以将AVVideoCompositionAVExportSession一起使用,但这只允许我在黑色背景上渲染我的Alpha视频(而不是我需要的图像或视频) )。

是否可以在另一个视频的上方叠加现在“已被背景去除”的Alpha通道并进行处理?

0 个答案:

没有答案