2

我试图从一些视频中获取所有帧,但似乎不是得到 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")
    } 
}

我在这里做错了什么?

4

0 回答 0