美文网首页iOS学习笔记iOS程序猿
iOS- 获取本地视频宽度高度分辨的问题(普通百度的答案有问题)

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

作者: 我是何先生 | 来源:发表于2018-12-11 13:45 被阅读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是负数,所以这里取绝对值。

    相关文章

      网友评论

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

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