Thanks to @ eric-d who found this post: iOS Take some screenshots
I managed to find out that the addition:
assetImgGenerate.requestedTimeToleranceAfter = kCMTimeZero; assetImgGenerate.requestedTimeToleranceBefore = kCMTimeZero;
... my function will do the trick.
My updated function looks like this:
func generateThumnail(url : NSURL, fromTime:Float64) -> UIImage { var asset :AVAsset = AVAsset.assetWithURL(url) as! AVAsset var assetImgGenerate : AVAssetImageGenerator = AVAssetImageGenerator(asset: asset) assetImgGenerate.appliesPreferredTrackTransform = true assetImgGenerate.requestedTimeToleranceAfter = kCMTimeZero; assetImgGenerate.requestedTimeToleranceBefore = kCMTimeZero; var error : NSError? = nil var time : CMTime = CMTimeMakeWithSeconds(fromTime, 600) var img : CGImageRef = assetImgGenerate.copyCGImageAtTime(time, actualTime: nil, error: &error) var frameImg : UIImage = UIImage(CGImage: img)! return frameImg } var grabTime = 1.22 img = generateThumnail(urlVideo, fromTime: Float64(grabTime))
arpo Aug 30 '15 at 13:53 on 2015-08-30 13:53
source share