2013-12-23 34 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」或者只是一個很大的數字。

以前有人跑過這個嗎?

感謝, 約拿單

+0

也許問題來自於呼叫方? 「現在」在哪裏計算? – Emanuel

+0

「現在」只是myPlayer.currentItem.currentTime,我想抓住圖像的時間。我還應該提到,在添加setRequestedTolerance之前,它工作正常,但不夠準確 –

+0

我用MPPlayer和生成的拇指指甲是你好嗎 –

回答

0

問題是要創建這麼多的情況下,所以你需要解除分配