2012-04-19 76 views
11

我想使用AVFoundation中的类获取视频的第一帧。但它似乎没有得到一个图像。使用AVFoundation的视频的第一帧

我的代码目前看起来像这样

AVURLAsset* asset = [AVURLAsset URLAssetWithURL:[NSURL URLWithString:videoPath] options:nil]; 
AVAssetImageGenerator* imageGenerator = [AVAssetImageGenerator assetImageGeneratorWithAsset:asset]; 
UIImage* image = [UIImage imageWithCGImage:[imageGenerator copyCGImageAtTime:CMTimeMake(0, 1) actualTime:nil error:nil]]; 
[videoFrame setImage:image]; 

视频路径的值是/var/mobile/Applications/02F42CBF-D8BD-4155-85F2-8CF1E55B5023/Documents/videos/1334300431637030.mp4这绝对是一个视频,因为我可以MPMoviePlayerViewController播放。我不确定我做错了什么,但任何建议都会有所帮助。

谢谢。

回答

18

我解决了它。显然使用[NSURL fileURLWithPath:videoPath]而不是[NSURL URLWithString:videoPath]使所有的区别。

7

我用null0pointer解决方案,但在一些视频中,我收到了旋转的第一帧。要解决此问题,我将AVAssetImageGenerator的appliedPreferredTrackTransform属性设置为TRUE。此代码如下所示:

AVURLAsset* asset = [AVURLAsset URLAssetWithURL:fileURL options:nil]; 
AVAssetImageGenerator* imageGenerator = [AVAssetImageGenerator assetImageGeneratorWithAsset:asset]; 
[imageGenerator setAppliesPreferredTrackTransform:TRUE]; 
UIImage* image = [UIImage imageWithCGImage:[imageGenerator copyCGImageAtTime:CMTimeMake(0, 1) actualTime:nil error:nil]]; 
[self.imageView setImage:image]; 
相关问题