今天在修改项目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];