ios - 为单个视频添加多个滤镜

标签 ios swift gpuimage

我尝试在使用 GPUImage2 保存的视频上重复添加滤镜,但当我应用第二个滤镜时,会出现以下错误:

Warning: tried to add target beyond target's input capacity --> Pipeline.swift: addTarget(_:atTargetIndex:): 43

并且所选过滤器不适用。在应用任何新过滤器之前,我尝试从过滤器和 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)")
    }

}

最佳答案

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)")
}

关于ios - 为单个视频添加多个滤镜,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54437519/

相关文章:

ios - 如何使用静态图像源获得 GPUImage 动画?

ios - GPUImage过滤视频

ios - 可以为 UISlider 的 UIImage Thumb 设置动画吗?

ios - xcode 获取 UITabBar 高度

Swift - 将重载函数分配给变量

java - 您能否将 Kotlin 接口(interface)的范围限定为仅与某些类一起使用?

ios - GPUImagePicture 与 GPUImageView 目标?

android - Android 和 iOS 的 Unity 命令行参数

html - whatsapp html 链接不适用于 iphone 8,chrome

ios - 侧边菜单警告 : attempt to push a View Controller from where its navigationController == nil in swift