Видеопереходы в iOS - размытие, увеличение и т. Д. - PullRequest
2 голосов
/ 21 января 2020

Я работаю над приложением для редактирования видео для iOS, в настоящее время я пытаюсь добавить плавные переходы в приложение.

Например:
zoom transition

Мое видео составлено с использованием AVMutableVideoComposition и AVAssetTrack.
Я попытался вручную кодировать переходы с использованием AVVideoCompositionCoreAnimationTool и CAKeyframeAnimation для анимации CATransform3D:

// The values are arbitrary for simplicity
let animation = CAKeyframeAnimation(keyPath: "transform")
animation.duration=0.35
animation.values = [
                NSValue(caTransform3D:CATransform3DMakeScale(1, 1, 1)),
                NSValue(caTransform3D:CATransform3DMakeScale(2, 2, 2)),
                NSValue(caTransform3D:CATransform3DMakeScale(3, 3, 3)),
                NSValue(caTransform3D:CATransform3DMakeScale(4, 4, 4)),
                NSValue(caTransform3D:CATransform3DMakeScale(5, 5, 5)),
                NSValue(caTransform3D:CATransform3DMakeScale(4, 4, 4)),
                NSValue(caTransform3D:CATransform3DMakeScale(3, 3, 3)),
                NSValue(caTransform3D:CATransform3DMakeScale(2, 2, 2)),
                NSValue(caTransform3D:CATransform3DMakeScale(1, 1, 1))]

            animation.keyTimes = [0, 0.125, 0.250, 0.375 etc...]
            animation.beginTime = transitionStartTime
            videoLayer.add(animation, forKey:"transform")

Это работает как очень наивный трансфокатор, но в нем отсутствуют анимации искажения / деформации / размытия и т. Д. c ...
Мечта сделать так, как на рисунке выше, и я вижу 2 пути:
1. Я легко могу выполнить эти переходы в Adobe After Effects (см. Рисунок ниже). Есть идеи, как интегрировать это в iOS? Возможно, у вас есть идеи.
2. Выясните, как вручную анимировать размытие, искажение и деформацию видео в Swift, я проверил CIFilter, который выглядел хорошо, но поддерживает только ОС Ma c. Я рассматриваю GPUImage3 сейчас. Есть идеи?

adobe after effects zoom transition

...