iOS学习笔记iOS程序猿

iOS- 获取本地视频宽度高度分辨的问题(普通百度的答案有问题)

2018-12-11  本文已影响14人  我是何先生

最近在搞视频上传,通过七牛云可以获取视频的缩略图,但是需要手动设置宽度和高度,这样就不能够按照视频本身的比例动态设置缩略图片的宽高了.(有知道的记得告诉我)所以解决方案是上传的时候就把视频的分辨率也上传。百度了一下,网上的答案大部分都是复制粘贴,而且都是有点问题。

百度普遍的答案

 AVAsset *asset = [AVAsset assetWithURL:url];
    NSArray *tracks = [asset tracksWithMediaType:AVMediaTypeVideo];
    if([tracks count] > 0) {
        AVAssetTrack *videoTrack = [tracks objectAtIndex:0];
        CGAffineTransform t = videoTrack.preferredTransform;//这里的矩阵有旋转角度,转换一下即可
        NSLog(@"=====hello  width:%f===height:%f",videoTrack.naturalSize.width,videoTrack.naturalSize.height);//宽高

这个是百度的答案,本身是没有问题的,size导出后,宽度和高度被对调了,估计是由于默认的旋转的角度有问题

新的方法

AVAsset *asset = [AVAsset assetWithURL:url];
    NSArray *tracks = [asset tracksWithMediaType:AVMediaTypeVideo];
    AVAssetTrack *videoTrack = tracks[0];
    CGSize videoSize = CGSizeApplyAffineTransform(videoTrack.naturalSize, videoTrack.preferredTransform);
    videoSize = CGSizeMake(fabs(videoSize.width), fabs(videoSize.height));

这里配合旋转的方向出来的宽度和高度是正确的,但是你会发现是被转换出来的size是负数,所以这里取绝对值。

上一篇下一篇

猜你喜欢

热点阅读