- (void)videoToThumbImage:(NSURL *)videoUrl {
AVURLAsset *asset=[[AVURLAsset alloc] initWithURL:videoUrl options:nil];
__block AVAssetImageGenerator *generator = [[[AVAssetImageGenerator alloc] initWithAsset:asset] autorelease];
[asset release];
generator.appliesPreferredTrackTransform = YES;
generator.apertureMode = AVAssetImageGeneratorApertureModeEncodedPixels;
NSMutableArray *times = [[[NSMutableArray alloc] initWithCapacity:0] autorelease];
for (int i=0; i<14; i++) {
if (_allTime > 0) {
CMTime firstThird = CMTimeMake(_allTime*60*i/14,60);//设置CMTime取第几帧
[times addObject:[NSValue valueWithCMTime:firstThird]];
}
}
__block int j = 0;
AVAssetImageGeneratorCompletionHandler handler =
^(CMTime requestedTime, CGImageRef im, CMTime actualTime, AVAssetImageGeneratorResult result, NSError *error){
if (result == AVAssetImageGeneratorSucceeded) {
UIImage *thumbImg = [UIImage imageWithCGImage:im];
}
if (result == AVAssetImageGeneratorFailed) {
NSLog(@"Failed with error: %@", [error localizedDescription]);
}
if (result == AVAssetImageGeneratorCancelled) {
// NSLog(@"Canceled");
}
j++;
[self performSelectorOnMainThread:@selector(updateProgressWithImage:) withObject:thumbImg waitUntilDone:YES];
};
generator.requestedTimeToleranceAfter = kCMTimeZero;
generator.requestedTimeToleranceBefore = kCMTimeZero;
generator.maximumSize = self.view.frame.size;
[generator generateCGImagesAsynchronouslyForTimes:
(NSArray *)times completionHandler:handler];
}