【问题标题】:ios - generateCGImagesAsynchronouslyForTimes taking too longios - generateCGImagesAsynchronouslyForTimes 耗时太长
【发布时间】:2014-05-30 23:50:13
【问题描述】:

我遇到的问题是从视频中加载 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];

【问题讨论】:

  • 我也遇到了同样的问题,请问您有解决办法吗?
  • @ScorpianAlive 面临同样的问题,您找到解决方案了吗?

标签: ios image generator


【解决方案1】:

我知道你的问题。

生成缩略图需要很长时间,因为您将 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 的参考,Section Seeking - Repositioning the Playhead.

简答: 只需删除 requestedTimeToleranceAfter 和 requestedTimeToleranceBefore。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-07
    • 2018-02-27
    • 2013-05-28
    相关资源
    最近更新 更多