ios – generateCGImagesAsynchronouslyForTimes tomando demasiado time

El problema que tengo es que cargar 20 imágenes del video toma demasiado time. Cuantas más miniaturas desee get, más time tendré que esperar. El método que uso es generateCGImagesAsynchronouslyForTimes. ¿Alguien sabe por qué tengo este problema?

AVAssetImageGenerator *generator = [[AVAssetImageGenerator alloc] initWithAsset:asset]; generator.appliesPrefernetworkingTrackTransform = 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]; 

Conozco tus problemas.

Se necesita mucho time para generar miniaturas porque establece requestedTimeToleranceAfter y requestedTimeToleranceBefore son kCMTimeZero.

Respuesta larga: si se trata de TimeTolerance específico, se cambiará por precisión en lugar de performance. si solo quieres una miniatura de video, entonces no necesitas generar una miniatura con una alta precisión.

Es similar con seekToTime con tolerancia. Referencia de https://developer.apple.com/library/ios/documentation/AudioVideo/Conceptual/AVFoundationPG/Articles/02_Playback.html#//apple_ref/doc/uid/TP40010188-CH3-SW3 , Section Seeking-Repositioning of the Playhead .

Respuesta corta: simplemente quite requestedTimeToleranceAfter y requestedTimeToleranceBefore.