2012-03-09 85 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