我尝试在使用 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/