美文网首页音视频AVPlayer和GPUImagede学习iOS 音视频
iOS视频播放AVPlayer的视频内容拉伸设置

iOS视频播放AVPlayer的视频内容拉伸设置

作者: 来自南方的熊 | 来源:发表于2016-10-14 16:55 被阅读2346次

    在iOS开发中遇到使用视频播放器的案例,使用的是别人封装好的 WMPlayer 这么一个视频播放器,他使用的是AVPlayer这个底层的视频框架来搭建的视频界面,在开发时会遇到适配适配内容比例的需求,一开始没注意到视频被拉伸过,后来遇到一个用竖屏录制的视频时才发现视频被拉伸了,于是来查找相关的设置属性。
    最后查找到使用其中一个叫videoGravity 的属性,默认设置了AVLayerVideoGravityResize,查看该属性以及相关的其他属性值发现有3种值可以设置,

    AVLayerVideoGravityResizeAspect
    AVLayerVideoGravityResizeAspectFill
    AVLayerVideoGravityResize
    

    逐一试用后发现了其中的一些不同,在这里分享一下,可能我说的不太标准,只是个人的一些理解。
    开始把描述放到百度翻译上去翻译了一下,

    1.Preserve aspect ratio; fit within layer bounds
    2.Preserve aspect ratio; fill layer bounds
    3.Stretch to fill layer bounds
    

    解释是
    1.保持纵横比;适合层范围内
    2.保持纵横比;填充层边界
    3.拉伸填充层边界

    再看我分别设置了 WMPlayer 这个播放器中的3种不同属性值得结果图,

    1. wmPlayer.playerLayer.videoGravity = AVLayerVideoGravityResizeAspect
    2. wmPlayer.playerLayer.videoGravity = AVLayerVideoGravityResizeAspectFill
    3. wmPlayer.playerLayer.videoGravity = AVLayerVideoGravityResize
    
    屏幕快照 2016-10-14 下午4.32.15.png 屏幕快照 2016-10-14 下午4.32.01.png 屏幕快照 2016-10-14 下午4.32.25.png

    可以总结一下,
    第1种模式AVLayerVideoGravityResizeAspect是按原视频比例显示,是竖屏的就显示出竖屏的,两边留黑;
    第2种AVLayerVideoGravityResizeAspectFill是以原比例拉伸视频,直到两边屏幕都占满,但视频内容有部分就被切割了;
    第3种AVLayerVideoGravityResize是拉伸视频内容达到边框占满,但不按原比例拉伸,这里明显可以看出宽度被拉伸了。

    有点像UIImageView的ContentMode设置,这里是个人对这个属性值得一些理解,有不足还请包涵。

    相关文章

      网友评论

      • sven7:可以拉伸填充了👍

      本文标题:iOS视频播放AVPlayer的视频内容拉伸设置

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