Добавление нескольких фильтров в одно видео - PullRequest
0 голосов
/ 30 января 2019

Я пытаюсь несколько раз добавлять фильтры в сохраненное видео с помощью GPUImage2, но при применении второго фильтра выдается следующее сообщение об ошибке:

Предупреждение: попытка добавить цель за пределы входной мощности цели -> Конвейер.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)")
    }

}

1 Ответ

0 голосов
/ 04 марта 2019
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)")
}
...