2014-04-16 350 views
5

我遇到的問題是從視頻加載20張圖片花費的時間太長。我想要得到的縮略圖越多,我必須等待的時間越長。我使用的方法是generateCGImagesAsynchronouslyForTimes。有誰知道我爲什麼有這個問題?ios - 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

@ScorpianAlive面臨同樣的問題,您是否找到解決方案? – Sam

回答

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。

+1

這個答案對我不起作用。 –

+1

@SalmanKhakwani此答案對我無效 – Sam