Анимация кадров AVPlayerIOS

Программируем под IOS
Ответить
Anonymous
 Анимация кадров AVPlayer

Сообщение Anonymous »

Я разрабатываю приложение, которое включает в себя функцию воспроизведения видео с покадровой анимацией.
Вы можете увидеть пример этой функции.
Я уже пытался добавить CAKeyFrameAnimation в подуровень AVSynchronizedLayer, но с ним возникли некоторые проблемы.
Я также уже пытался выполнить предварительную визуализацию видео с помощью AVAssetExportSession, и это работает отлично. Но это очень медленно. Для рендеринга видео требуется до 3 минут.
Может быть, есть другие подходы, чтобы это работало?
Обновить:
Вот как я реализовал анимацию с помощью AVSynchronizedLayer:
let fullScreenAnimationLayer = CALayer()
fullScreenAnimationLayer.frame = videoRect
fullScreenAnimationLayer.geometryFlipped = true

values: [NSValue] = [], times: [NSNumber] = []

// fill values array with positions of face center for each frame
values.append(NSValue(CATransform3D: t))

// fill times with corresoinding time for each frame
times.append(NSNumber(double: (Double(j) / fps) / videoDuration)) // where fps = 25 (according to video file fps)

...

let transform = CAKeyframeAnimation(keyPath: "transform")
transform.duration = videoDuration
transform.calculationMode = kCAAnimationDiscrete
transform.beginTime = AVCoreAnimationBeginTimeAtZero
transform.values = values
transform.keyTimes = times
transform.removedOnCompletion = false
transform.fillMode = kCAFillModeForwards
fullScreenAnimationLayer.addAnimation(transform, forKey: "a_transform")

...

if let syncLayer = AVSynchronizedLayer(playerItem: player.currentItem) {
syncLayer.frame = CGRect(origin: CGPointZero, size: videoView.bounds.size)
syncLayer.addSublayer(fullScreenAnimationLayer)
videoView.layer.addSublayer(syncLayer)
}


Подробнее здесь: https://stackoverflow.com/questions/321 ... -animation
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»