2013-12-23 2 views
1

Я пытаюсь создать эскиз изображения из видео в определенный временный код. Я использую AVPlayer и это метод, который я написал:Создание эскизов из AVPlayer ios

-(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, но с тех пор большинство из раз. Я получаю эту ошибку:

Error Domain=AVFoundationErrorDomain Code=-11800 "The operation could not be completed"

Хотя, иногда это нормально работает. Когда я печатаю, при получении этой ошибки «actualTime» я вижу, что это «inf» или «nan» или просто очень большое число.

Кто-нибудь наткнулся на это раньше?

Спасибо, Yonathan

+0

Возможно, проблема исходит от вызывающего абонента? где «сейчас» рассчитывается? – Emanuel

+0

«Сейчас» - это просто myPlayer.currentItem.currentTime, время, когда я хочу захватить изображение. Я должен также упомянуть, что перед добавлением setRequestedTolerance он работал нормально, но не достаточно точно –

+0

Я использовал MPPlayer и генерировал палец ногтей, это хорошо для вас –

ответ

0

Проблема в создании так много примеров, поэтому вам нужно DEALLOCATE

 Смежные вопросы

  • Нет связанных вопросов^_^