ios - generateCGImagesAsynchronouslyForTimes花费太长时间

时间:2014-04-16 08:21:06

标签: ios image generator

我遇到的问题是从视频加载20张图片需要太长时间。我想要获得的缩略图越多,我就越需要等待。我使用的方法是generateCGImagesAsynchronouslyForTimes。有谁知道为什么我有这个问题?

AVAssetImageGenerator *generator = [[AVAssetImageGenerator alloc] initWithAsset:asset];
generator.appliesPreferredTrackTransform = YES;
generator.requestedTimeToleranceAfter = kCMTimeZero;
generator.requestedTimeToleranceBefore = kCMTimeZero;
CGSize maxSize = CGSizeMake(320, 180);
generator.maximumSize = maxSize;
AVAssetImageGeneratorCompletionHandler handler = ^(CMTime requestedTime, CGImageRef im, CMTime actualTime, AVAssetImageGeneratorResult result, NSError *error){

    if (result != AVAssetImageGeneratorSucceeded) {
        NSLog(@"couldn't generate thumbnail, error:%@", error);
    }

    UIImage *frameImage = [UIImage imageWithCGImage:im];
    dispatch_async(dispatch_get_main_queue(), ^{
        [_frameImageView setImage:frameImage];
    });
};
[generator generateCGImagesAsynchronouslyForTimes:timeArray completionHandler:handler];

1 个答案:

答案 0 :(得分:0)

我知道你的问题。

生成缩略图需要花费大量时间,因为您设置了requestedTimeToleranceAfter和requestedTimeToleranceBefore是kCMTimeZero。

长答案: 如果您具有特定的TimeTolerance,则会针对精度而非性能进行转换。如果您只是想要视频缩略图,那么您不需要生成具有高精度的缩略图。

与seekToTime类似,具有容差。参考https://developer.apple.com/library/ios/documentation/AudioVideo/Conceptual/AVFoundationPG/Articles/02_Playback.html#//apple_ref/doc/uid/TP40010188-CH3-SW3,寻找 - 重新定位播放头。

简答: 只需删除requestedTimeToleranceAfter和requestedTimeToleranceBefore。