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