iOS截取视频预览图

作者: 不规则先生 | 来源:发表于2015-12-30 17:43 被阅读1437次

今天在修改项目bug的时候遇到了,截图视频预览图的时候总是方向不对,竖屏录制的视频(好像是竖屏录制截图出的错,记不太清楚了😌)截图出来总是向左旋转了90度。

开始我查看图片的imageOrientation属性,发现都是Up,然后我试着查看图片的width和height,发现无论是对的还是错的,width和height都是一样,oh,shit!

后来我发现了appliesPreferredTrackTransform这个属性,默认是false(Objective-C中为NO),只要将其设置为true,在进行截图就会发现,方向正常了。

截图代码如下:

NSURL *url = [[NSURL alloc] initWithString:@"Your video url"];

AVURLAsset *urlAsset = [[AVURLAsset alloc] initWithURL:url options:nil];

AVAssetImageGenerator *imageGenerator = [[AVAssetImageGenerator alloc] initWithAsset:urlAsset];

imageGenerator.appliesPreferredTrackTransform = YES;    // 截图的时候调整到正确的方向

CMTime time = CMTimeMakeWithSeconds(1.0, 30);  // 1.0为截取视频1.0秒处的图片,30为每秒30帧

CGImageRef cgImage = [imageGenerator copyCGImageAtTime:time actualTime:nil error:nil];

UIImage *image = [UIImage imageWithCGImage:cgImage];

相关文章

网友评论

  • 羊村里的羊:我竖屏截图正常 横屏截图的时候还是会旋转
  • 海鲜味龙潭方便面:你好我用你的方法为什么提示的是: Printing description of c:
    (CMTime) c = <variable not available>呢?是因为没有导什么框架吗
    海鲜味龙潭方便面:@YZhi 找到原因了多谢楼主 :+1:
    不规则先生:@海鲜味龙潭方便面 CMTime time = CMTimeMakeWithSeconds(1.0, 30); 看看time是不是null,不是没导入框架
  • 裂缝里的阳光:我用你的方法,怎么截取不了图片啊
    裂缝里的阳光:@YZhi 我问一下,是直接用你这个方法,添加一个url在线视频地址就可以截图吗,还是在线视频要播放,才能截出来图啊
    裂缝里的阳光:@YZhi 没有报错,通过url截取图片,截出来的是空白的,本地视频可以截出来
    不规则先生:@裂缝里的阳光 报错了吗

本文标题:iOS截取视频预览图

本文链接:https://www.haomeiwen.com/subject/oimihttx.html