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」或者只是一個很大的數字。
以前有人跑過這個嗎?
感謝, 約拿單
也許問題來自於呼叫方? 「現在」在哪裏計算? – Emanuel
「現在」只是myPlayer.currentItem.currentTime,我想抓住圖像的時間。我還應該提到,在添加setRequestedTolerance之前,它工作正常,但不夠準確 –
我用MPPlayer和生成的拇指指甲是你好嗎 –