无法在AVPlayer中使用GPUImage应用ChromaKey过滤器macOS

时间:2017-05-25 15:52:31

标签: swift macos swift3

我正在尝试在我的 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文件。

0 个答案:

没有答案