Мне нужно редактировать видео кадр за кадром. Если я извлекаю видео в кадрах (используя подход изображения), приложение падает из-за памяти.
3 минуты видео превышает ограничение в 1 ГБ.
func getAllFrames() -> [UIImage] {
let duration: Float64 = CMTimeGetSeconds(asset.duration)
self.generator = AVAssetImageGenerator(asset: asset)
self.generator.appliesPreferredTrackTransform = true
self.images = []
let generator = AVAssetImageGenerator(asset: asset)
for index: Int in 0 ..< Int(duration) * 24 {
let time = NSValue(time: CMTime(seconds: Double(index), preferredTimescale: 60))
imageTime.append(time)
}
generator.generateCGImagesAsynchronously(forTimes: imageTime, completionHandler: { (_, cgImage, _, _, _) in
if let cgImage = cgImage {
self.images.append(UIImage(cgImage: cgImage))
print("Image size is ", UIImage(cgImage: cgImage).getImageSize())
}
})
self.generator = nil
return self.images
}