iOS为长视频创建缩略图

时间:2015-10-26 01:38:24

标签: ios objective-c avassetimagegenerator

您好我想从我的视频创建一个缩略图,长2.46分钟,68 Mb。 我用这段代码创建了缩略图:

transient

问题是缩略图总是为零,但如果我将视频长度减少到15秒,它将创建缩略图。 我能为超过15秒的电影制作缩略图吗?

感谢

1 个答案:

答案 0 :(得分:0)

这样使用AVAssetImageGenerator的方式有效:

AVURLAsset *asset=[[AVURLAsset alloc] initWithURL:videoURL options:nil];
AVAssetImageGenerator *generator = [[AVAssetImageGenerator alloc] initWithAsset:asset];
generator.appliesPreferredTrackTransform=TRUE;

CGFloat videoLenght=((float)asset.duration.value)/((float)asset.duration.timescale);
CMTime thumbTime = CMTimeMakeWithSeconds(videoLenght,2.0);

AVAssetImageGeneratorCompletionHandler handler = ^(CMTime requestedTime, CGImageRef im, CMTime actualTime, AVAssetImageGeneratorResult result, NSError *error){
    if (result != AVAssetImageGeneratorSucceeded) {
        NSLog(@"couldn't generate thumbnail, error:%@", error);
    }else{
        UIImage *image=[self.class scaledImage:[UIImage imageWithCGImage:im]];
        [self performSelectorOnMainThread:@selector(setVideoImage:) withObject:image  waitUntilDone:NO];
    }
};

[generator generateCGImagesAsynchronouslyForTimes:[NSArray arrayWithObject:[NSValue valueWithCMTime:thumbTime]] completionHandler:handler];  

(videoLenght,2.0)是快照发生的时间,在这种情况下是视频的一半,我不建议你使用固定的截屏时间,因为如果时间超出界限,图像将为零。