Я пытаюсь создать эскиз изображения из видео в определенном временном коде. Я использую AVPlayer, и это метод, который я написал:
-(UIImageView *) generateCommentThumbnail: (CMTime) now{
AVAssetImageGenerator *gen = [[AVAssetImageGenerator alloc] initWithAsset:videoAsset];
gen.appliesPreferredTrackTransform = YES;
NSError *error = nil;
CMTime actualTime;
[gen setRequestedTimeToleranceAfter:kCMTimeZero];
[gen setRequestedTimeToleranceBefore:kCMTimeZero];
CGImageRef image = [gen copyCGImageAtTime:now actualTime:&actualTime error:&error];
UIImage *thumb = [[UIImage alloc] initWithCGImage:image];
UIImageView *iv = [[UIImageView alloc] initWithImage:thumb];
NSLog(@"%f , %f",CMTimeGetSeconds(now),CMTimeGetSeconds(actualTime));
NSLog(@"%@",error);
return iv;
}
чтобы получить изображение с точностью до кадра, я использовал setsetRequestedTimeToleranceBefore:kCMTimeZero и setRequestedTimeToleranceAfter:kCMTimeZero, но с тех пор в большинстве случаев я получаю эту ошибку:
Домен ошибки = AVFoundationErrorDomain Code = -11800 «Операция не может быть завершена»
Хотя, иногда работает нормально. Когда я печатаю, получая эту ошибку, «actualTime» я вижу, что это «inf» или «nan» или просто очень большое число.
кто-нибудь сталкивался с этим раньше?
Спасибо, Йонатан