Я работаю над приложением для редактирования видео для iOS, в настоящее время я пытаюсь добавить плавные переходы в приложение.
Например:
Мое видео составлено с использованием 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 сейчас. Есть идеи?