2012-03-09 82 views
1

我正在創建一個iPhone應用程序,用戶可以在該應用程序中捕捉視頻,當他完成該視頻時,該視頻的第一幀應顯示爲縮略圖圖像。 如何顯示該圖像,我的意思是如何提取第一幀視頻? Thanks-如何在iPhone App中將第一幀視頻顯示爲縮略圖圖像?

+0

? – Pochi 2012-03-09 06:13:30

+0

做一些搜索的人..谷歌的第一個選項給你這個鏈接http://stackoverflow.com/a/4330647/919545 – 2012-03-09 06:17:06

+0

@Ankit Srivastava我搜索,但我沒有得到這個鏈接。可能是我正在使用不同的關鍵詞進行搜索!非常感謝! – Developer 2012-03-09 06:26:55

回答

5

有兩種選擇: -

1)使用的MPMoviePlayerController。

MPMoviePlayerController *moviePlayer = [[MPMoviePlayerController alloc] 
             initWithContentURL:videoURL]; 
moviePlayer.shouldAutoplay = NO; 
UIImage *thumbnail = [moviePlayer thumbnailImageAtTime:time 
        timeOption:MPMovieTimeOptionNearestKeyFrame]; 

2)您使用的捕獲視頻什麼方法使用AVURLAsset

AVURLAsset *asset=[[AVURLAsset alloc] initWithURL:self.url options:nil]; 
AVAssetImageGenerator *generator = [[AVAssetImageGenerator alloc] initWithAsset:asset]; 
generator.appliesPreferredTrackTransform=TRUE; 
[asset release]; 
CMTime thumbTime = CMTimeMakeWithSeconds(0,30); 

AVAssetImageGeneratorCompletionHandler handler = ^(CMTime requestedTime, CGImageRef im, CMTime actualTime, AVAssetImageGeneratorResult result, NSError *error){ 
    if (result != AVAssetImageGeneratorSucceeded) { 
     NSLog(@"couldn't generate thumbnail, error:%@", error); 
    } 
    [button setImage:[UIImage imageWithCGImage:im] forState:UIControlStateNormal]; 
    thumbImg=[[UIImage imageWithCGImage:im] retain]; 
    [generator release]; 
}; 

CGSize maxSize = CGSizeMake(320, 180); 
generator.maximumSize = maxSize; 
[generator generateCGImagesAsynchronouslyForTimes:[NSArray arrayWithObject:[NSValue valueWithCMTime:thumbTime]] completionHandler:handler]; 
+0

謝謝阿尼爾,讓我試試這些方法,我會回覆給你。 – Developer 2012-03-09 06:32:57

+0

使用MPMoviePlayerController的第一個選項對我很好。 – 2012-11-15 22:35:21

+0

'[thumbnailImageAtItem:timeOption:]'已被iOS7版本棄用。 '[requestThumbnailImagesAtTimes:timeOption]'是新的API調用,期望NSNumber對象的NSArray包含捕獲縮略圖圖像的時間。 – MrBr 2014-03-18 07:08:34