Получить все кадры из видео

Я пытаюсь получить все кадры из некоторого видео, но кажется, что вместо 255 разных кадров я получаю 8 разных кадров, но каждый из этих 8 кадров повторяется 30 раз.

мой код (проблема с массивом imagesForVideo):

    imagesForVideo = []
    imagesForVideoCGI = []
    var timesArray:[NSValue] = []

    let generator:AVAssetImageGenerator = AVAssetImageGenerator(asset: sourceAsset)

    for var i = 0; i < numberOfFrames - 1; i++ {
        var actualTime : CMTime = CMTimeMake(0, 0)
        let duration:CMTime = CMTimeMake(Int64(i), Int32(30))
        let frameRef:CGImageRef = try! generator.copyCGImageAtTime(duration, actualTime: &actualTime)
        let tempImage:UIImage = UIImage(CGImage: frameRef)
        let nsDuration = NSValue.init(CMTime: duration)
        timesArray.append(nsDuration)

        imagesForVideoCGI.append(frameRef)
        imagesForVideo.append(tempImage)
    }
generator.generateCGImagesAsynchronouslyForTimes(timesArray, completionHandler: {(_, im:CGImage?, _, _, e:NSError?) in self.addingImages(im)})

а также

func addingImages(im: CGImage?) {

    if let img = im {
        imagesForVideoCGI.append(img)
        let justImage = UIImage(CGImage: img)
        imagesForVideo.append(justImage)
    }
    else {
        print("Fail")
    } 
}

Что я здесь не так?

0 ответов

Другие вопросы по тегам