最近,我一直在关注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
中玩耍。
我认识到我可以将AVVideoComposition
与AVExportSession
一起使用,但这只允许我在黑色背景上渲染我的Alpha视频(而不是我需要的图像或视频) )。
是否可以在另一个视频的上方叠加现在“已被背景去除”的Alpha通道并进行处理?