Генерация миниатюр из AVPlayer ios

Я пытаюсь создать эскиз изображения из видео в определенном временном коде. Я использую 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» или просто очень большое число.

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

Спасибо, Йонатан


person Yonathan Gur-Zeev    schedule 23.12.2013    source источник
comment
Возможно, проблема исходит от звонящего? где сейчас рассчитывается?   -  person Emanuel    schedule 24.12.2013
comment
Сейчас просто myPlayer.currentItem.currentTime, время, когда я хочу захватить изображение. Я также должен упомянуть, что до добавления setRequestedTolerance он работал нормально, но недостаточно точно.   -  person Yonathan Gur-Zeev    schedule 24.12.2013
comment
я использовал MPPlayer и сгенерировал ногти для большого пальца, это нормально для вас   -  person Charan Giri    schedule 24.12.2013
comment
Спасибо, но я использую AVPlayer для точности seekToTime. Использование MPPlayer недостаточно точно.   -  person Yonathan Gur-Zeev    schedule 24.12.2013
comment
Вам когда-нибудь удавалось заставить это работать?   -  person NSAlexC    schedule 14.10.2014
comment
Я перестал пытаться через некоторое время :) Я вернусь к этому в ближайшее время и обновлю, если найду решение   -  person Yonathan Gur-Zeev    schedule 19.10.2014


Ответы (1)


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

person Murat Kaya    schedule 18.05.2016