为单个视频添加多个过滤器

问题描述 投票:0回答:1

我正在尝试使用GPUImage2在已保存的视频上重复添加过滤器,但是当我应用第二个过滤器时,它会给出以下错误:

警告:尝试添加超出目标输入容量的目标 - > Pipeline.swift:addTarget(_:atTargetIndex :):43

并且所选过滤器不适用。我尝试在应用任何新过滤器之前从filter和movieInput中删除目标,但没有任何效果。

这是我的代码:

var renderView = RenderView()
var movieInput:MovieInput!
var selectedFilter:ImageProcessingOperation!

func startVideoWithFilter(filter:ImageProcessingOperation){
    let bundleURL = Bundle.main.resourceURL!
    let movieURL = URL(string:"fileName.mp4", relativeTo:bundleURL)!

    filter.removeAllTargets()
    selectedFilter.removeAllTargets()

    if movieInput != nil{
        movieInput.removeAllTargets()
    }

    do {
        movieInput = try MovieInput(asset: AVAsset(url: movieURL), playAtActualSpeed: true, loop: true)
        movieInput.addTarget(filter)
        filter.addTarget(renderView)
        movieInput.runBenchmark = true
        movieInput.start()
    } catch {
        print("Couldn't process movie with error: \(error)")
    }

}
ios swift gpuimage
1个回答
0
投票
let vignetteFilter = Vignette()
let toonFilter = ToonFilter()

do {
    movieInput = try MovieInput(asset: AVAsset(url: movieURL), playAtActualSpeed: true, loop: true)
    movieInput --> vignetteFilter --> toonFilter --> renderView
    movieInput.runBenchmark = true
    movieInput.start()
} catch {
    print("Couldn't process movie with error: \(error)")
}
© www.soinside.com 2019 - 2024. All rights reserved.