首页 > 解决方案 > 我需要逐帧编辑视频,并将这些帧再次转换为视频

问题描述

我需要逐帧编辑视频。如果我在帧中提取视频(使用图像方法),应用程序由于内存而崩溃。

3 分钟的视频超过了 1GB 的限制。

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
}

标签: iosswiftavfoundationvideo-editing

解决方案


推荐阅读