获取iPhone视频缩略图

时间:2010-01-31 08:50:39

标签: iphone video ffmpeg

如何获取从相机胶卷或相机本身导入的视频的缩略图?

以前曾经问过,并且已经回答了。但是,答案对我来说很糟糕。

此帖子iphone sdk > 3.0 . Video Thumbnail?有一些选项可归结为:

  1. 为JPG抓取一些文件系统目录,其最新修改日期应与您刚刚选择的视频相对应。这非常混乱,并涉及到Apple可能不会真的要我这样做的目录。
  2. 使用ffmpeg。但这很普遍,我似乎无法弄清楚将ffmpeg导入我的项目并实际调用它来提取图像所需的步骤。
  3. 真的没有别的办法吗?这对SDK来说似乎是一个巨大的疏忽。我的意思是视频选择器中有缩略图,所以Apple必须做某些东西来生成那些,但不允许我们这样做?

3 个答案:

答案 0 :(得分:12)

     -(void)testGenerateThumbNailDataWithVideo {
    NSString *path = [[NSBundle mainBundle] pathForResource:@"IMG_0106" ofType:@"MOV"];
 NSURL *url = [NSURL fileURLWithPath:path];
    AVURLAsset *asset = [[AVURLAsset alloc] initWithURL:url options:nil];
    AVAssetImageGenerator *generate = [[AVAssetImageGenerator alloc] initWithAsset:asset];
    NSError *err = NULL;
    CMTime time = CMTimeMake(1, 60);
    CGImageRef imgRef = [generate copyCGImageAtTime:time actualTime:NULL error:&err];
    [generate release];
    NSLog(@"err==%@, imageRef==%@", err, imgRef);
    UIImage *currentImg = [[UIImage alloc] initWithCGImage:imgRef];
    static BOOL flag = YES;
    if (flag) { 
        NSData *tmpData =   UIImageJPEGRepresentation(currentImg, 0.8);
        NSString *path = [NSString stringWithFormat:@"%@thumbNail.png", NSTemporaryDirectory()];
        BOOL ret = [tmpData writeToFile:path atomically:YES]; 
        NSLog(@"write to path=%@, flag=%d", path, ret);
        flag = NO;
    }
    [currentImg release]; 
}

答案 1 :(得分:3)

我发现的最佳方法... MPMoviePlayerController thumbnailImageAtTime:timeOption

没关系......请参阅下面的第一条评论。这就是答案。

答案 2 :(得分:1)

我们使用ffmpeg,您可以浏览我们的网站以获取有关如何操作的提示,最后我想提出一个教程。

但是现在我更专注于让ffmpeg去看电影。 了解一旦拥有该代码,生成缩略图的代码只是其中的一部分。 http://sol3.typepad.com/tagalong_developer_journa/

这里的教程帮助了我们,也许是大多数使用ffmpeg开发的开发人员。 dranger.com/ffmpeg/“

最后,

Apple可能在使用摄像机生成的缩略图时可能没有任何问题,我认为它不在私人文件夹中,但只是由相机创建而不是从图像选择器中挑选的视频。< / p>