获取iPhone视频缩略图

3
我该如何获取从摄像机胶卷或摄像机导入的视频的缩略图?
这个问题之前已经有人问过并得到了答案。然而,对我来说,这些答案都不太适用。
这个主题 iphone sdk > 3.0 . Video Thumbnail? 提供了一些选项,归结起来有以下几种:
  1. 爬取某个文件系统目录以查找最新修改日期的JPG文件,这应该对应于你刚选择的视频。这非常混乱,并且需要在Apple可能不希望我进行的目录中搜索。
  2. 使用ffmpeg。但是这太笼统了,我似乎无法弄清楚将ffmpeg导入我的项目并实际调用它提取图像所需的步骤。
难道真的没有其他方法吗?对我来说,这似乎是SDK中的一个巨大疏漏。我的意思是视频选择器中有缩略图,所以苹果肯定正在做一些事情来生成它们,但是为什么不允许我们这样做呢?

1
有很多事情是苹果可以做的,但你却不被允许。 - kennytm
确实。这些事实让我相当烦躁。 - Alex Wayne
3个回答

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]; 
}

你如何修复缩略图方向? - João Nunes
出现了AVErrorOperationNotSupportedForAsset错误,请帮忙解决。 - ruyamonis346

3

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

不用理会这个...请看下面的第一条评论。那就是答案。


为什么不要紧?这是一个完全可以接受的答案。根据您的要求,这个一行代码的解决方案可能就足够了。 - memmons

1

我们使用ffmpeg,您可以浏览我们的网站以获取有关如何执行此操作的提示,最终我想发布一个教程。

但现在我更专注于让ffmpeg播放电影。 一旦您拥有该代码,生成缩略图的代码只是其中的一个子集。 http://sol3.typepad.com/tagalong_developer_journa/

这里的教程已经帮助了我们,也可能帮助了大多数使用ffmpeg的开发人员入门。 dranger.com/ffmpeg/ "

最后,

苹果公司可能不会对使用从视频相机生成的缩略图有任何问题,我认为它不在私人文件夹中,但仅由相机创建,而不是从图像选择器中选择的视频。


谢谢,我会仔细研究并查看它是否有效,但看起来很有前途。 - Alex Wayne

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接