Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/99.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ios-生成系统同步40次花费的时间太长_Ios_Image_Generator - Fatal编程技术网

ios-生成系统同步40次花费的时间太长

ios-生成系统同步40次花费的时间太长,ios,image,generator,Ios,Image,Generator,我的问题是从视频中加载20幅图像花费的时间太长。我想要的缩略图越多,等待的时间就越长。我使用的方法是同步生成框架。有人知道我为什么会有这个问题吗 AVAssetImageGenerator *generator = [[AVAssetImageGenerator alloc] initWithAsset:asset]; generator.appliesPreferredTrackTransform = YES; generator.requestedTimeToleranceAfter = k

我的问题是从视频中加载20幅图像花费的时间太长。我想要的缩略图越多,等待的时间就越长。我使用的方法是同步生成框架。有人知道我为什么会有这个问题吗

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];
我知道你的问题

生成缩略图需要很多时间,因为您将requestedTimeOranceAfter和requestedTimeOranceBefore设置为kCMTimeZero

长答案: 如果您指定了特定的时间公差,它将转向精度而不是性能。如果你只想视频缩略图,那么你不需要生成高精度的缩略图

这与seekToTime相似,但也有一定的容忍度。参考,部分寻求重新定位播放头

简短回答:
只需删除RequestedTimeolaranceAfter和RequestedTimeolaranceBefore即可。

我遇到了同样的问题,你有什么解决方案吗?@ScorpianAlive面对同样的问题,你找到解决方案了吗?