Получить все кадры из видео
Я пытаюсь получить все кадры из некоторого видео, но кажется, что вместо 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")
}
}
Что я здесь не так?