获取视频快照以生成缩略图。

26
我正在使用苹果提供的AVCam代码从iPhone相机录制视频。
录制完成后,视频将保存到照片库中。
然后会加载一个新视图,在此我需要视频的图像缩略图。
我有一个指向该视频的路径:
file://localhost/private/var/mobile/Applications/ED45DEFC-ABF9-4A5E-9102-21680CC1448E/tmp/output.mov

我似乎无法弄清楚如何获取视频的第一帧作为缩略图。

任何帮助都将非常感激,谢谢您的时间。


编辑

我最终使用了这个,但不确定为什么它返回的图像是横向的?

- (UIImage*)loadImage {

    AVURLAsset *asset = [[AVURLAsset alloc] initWithURL:vidURL 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];
    NSLog(@"err==%@, imageRef==%@", err, imgRef);

    return [[UIImage alloc] initWithCGImage:imgRef];

}
1个回答

45

为了修复缩略图方向,需要在AVAssetImageGenerator实例中将appliesPreferredTrackTransform设置为YES。如果你添加了自己的视频合成,你需要包含正确的变换来旋转视频。

generate.appliesPreferredTrackTransform = YES;

请记得使用CGImageRelease释放获取的图像引用。

如果要请求多个缩略图,最好使用generateCGImagesAsynchronouslyForTimes:completionHandler:进行异步操作。


给我一个错误 AVErrorOperationNotSupportedForAsset。请帮忙。 - ruyamonis346
没有具体的信息,我无法帮助您,请提出一个新问题。也许可以先阅读相关文档。 - djromero
漂亮的一行解决方案 :) - Nicolas Manzini

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