我正在尝试在我的 macOS 项目中使用 GPUImage 库。我通过AVPlayer和AVPlayerItem播放视频。
我需要将绿色背景转换为透明。
经过3天的尝试,我无法实现。
- 我尝试了 GPUImageChromaKeyFilter ,但它没有用。它没有删除绿色背景。
- 之后我添加了 GPUImageAlphaBlendFilter ,这只能用于第二张图片,在我的情况下我无法使用它,我也试过透明图像而且我得到了黑色背景。
在这种情况下,我真的很感谢你的帮助。
请找到以下代码。
import GPUImage
var movieFile: GPUImageMovie!
var chromaKeyfilter: GPUImageChromaKeyFilter!
var blendFilter:GPUImageAlphaBlendFilter!
var inputImage: GPUImagePicture!
var filterView: GPUImageView!
func initializePlayer(){
player = AVPlayer.init()
/* AlpaBlend
*/
blendFilter = GPUImageAlphaBlendFilter()
blendFilter.mix = 1.0
/* ChromaKey
*/
chromaKeyfilter = GPUImageChromaKeyFilter()
/* ImagePicture
*/
let blendImageName = "transparent.png"
let imgC = NSImage.init(named: blendImageName)
inputImage = GPUImagePicture.init(image: imgC)
inputImage.processImage()
inputImage.addTarget(blendFilter)
chromaKeyfilter.addTarget(blendFilter)
/* Player
*/
let path = Bundle.main.path(forResource: "video1", ofType: "mp4")
let sampleURL = URL.init(fileURLWithPath: path!)
let playerItem = AVPlayerItem(url: sampleURL)
player.replaceCurrentItem(with: playerItem)
/* ImageMovie
*/
movieFile = GPUImageMovie.init(playerItem: playerItem)
movieFile.runBenchmark = true
movieFile.playAtActualSpeed = true
movieFile.addTarget(chromaKeyfilter)
/* ImageView (videoView)
*/
filterView = GPUImageView.init(frame: self.container.bounds)
self.view.addSubview(filterView)
filterView.setBackgroundColorRed(0.0, green: 0.0, blue: 0.0, alpha: 1.0)
blendFilter.addTarget(filterView)
movieFile.startProcessing()
self.player.play()
}
如果需要,请查找附件transparent.png文件。