Правильно кадрируйте CALayers поверх видео-свифта - PullRequest
2 голосов
/ 17 января 2020

У меня есть приложение, в котором вы можете перемещать изображения и текст на видео, например, истории в Snapchat и Instagram. Я использую AVMutableVideoComposition для добавления изображений и текста к видео в качестве CALayers. Но когда я сохраняю видео, положение и размер изображений и текстов в сохраненном видео полностью отключаются. Я провел некоторое исследование и обнаружил, что мне нужно вычислить масштаб видеокадра до масштаба кадра представления и умножить значения x, y, width и height слоев на этот масштаб, но он все еще не работает

let size = videoTrack.naturalSize.applying(videoTrack.preferredTransform)
let scale: CGFloat = (size.width) / (self.view.frame.size.width)
let imageLayer = CALayer()
imageLayer.contents = image.image?.cgImage
imageLayer.frame = CGRect(x: (image.frame.origin.x) * scale, y: (image.frame.origin.y) * scale, width: (image.frame.size.width) * scale, height(image.frame.size.height) * scale)
...