E X P
本文约 2270 字,马上就好…
  • 编辑
  • 评论
  • 标题
  • 链接
  • 查错
  • 图文
  • 拼 命 加 载 中 ...

    显卡硬件编码这个概念,各位或多或少应该都有所耳闻。最早它指的是用GPU的通用计算能力来处理视频编码这种计算量庞大的任务。但随着硬件的发展,现在的显卡硬件编码已经跟十多年前的用CUDA加速编码不一样了,现在的显卡硬件编码已经指的是利用GPU集成的专用硬件单元进行编码操作,因为是专用的电路,其效率相比起用通用计算来加速要高出不少,目前AMD、Intel和NVIDIA都已经在自家的硬件中加入了硬件编码相关的单元,但可能大家并不清楚,本文就简单介绍一下三家的硬件编码技术和目前的情况。

    NVIDIA NVENC

    首先要讲的是NVIDIA的NVENC,从变革非常大的Kepler架构开始,NVIDIA就在GPU中加入了专门用于编码视频的硬件单元,并引入了NVENC功能。NVIDIA在每次推出新架构的时候都会更新一下这个单元,加入一些新的特性。从Kepler开始到Turing,NVENC单元已经更新了六代之多了,这里罗列几个比较重要的节点:

    • · 从第二代Maxwell,也就是GM20x芯片开始,NVENC支持HEVC的硬编码

    • · Pascal开始,支持10-bit的HEVC硬编码

    • · Turing开始,支持HEVC的B帧,大幅减少码率开支

    不过NVENC的支持情况相当复杂,举例来说,同样属于Pascal家族,高端的GTX 1070/1080就可以同时处理两条视频流,而中端的GTX 1060就只支持一条流;再比如说,GTX 1650这款使用小图灵核心的显卡的NVENC模块实际上是Volta版本的(老黄的刀法可不仅限于GPU的规模)。对此,NVIDIA官方提供了一个非常详细的网站供参考:Video Encode and Decode GPU Support Matrix,如果各位想要搞明白自己显卡的硬件编码能力,参照这个网站是肯定没有问题的。

    NVENC只能够编码AVC和HEVC,但发展到现在,它的编码质量已经非常优秀了,这项功能目前的应用还是比较广的,像NVIDIA自家的GeForce Experience在录屏的时候就默认会调用NVENC。

    另外,我们最近对NVENC在Premiere Pro中的表现进行了测试,详情可以参考这篇文章:NVIDIA NVENC编码加速器测试

    Intel Quick Sync Video

    Intel应该是这三家中最早开始捣鼓硬件编码电路的,早在一代经典的Sandy Bridge,也就是第二代酷睿i系列处理器上面,他们就为核显模块加入了Quick Sync Video特性,发展到现在,也是相当成熟稳定了。相比起NVENC只是一项针对视频编码的技术不同的是,QSV中也包含了对视频解码的相关支持(NV那儿解码是NVDEC的东西),从Sandy Bridge开始到Kaby Lake为止,QSV会随着每一代架构的演进而更新,基本和核显的代数是同步的。随着这几年Intel在架构上的停滞,QSV也没有太大的更新。不过Ice Lake和Tiger Lake上面它还是有一定程度的进步的,比如说Tiger Lake就将要引入针对AV1编码的硬件解码能力。

    在硬件编码方面,除了AVC和HEVC这两个常用的视频编码之外,QSV还支持MPEG-2、MJPEG和VP8、VP9的编码支持。它也是较早被软件所支持的硬件视频编解码技术,比如Adobe Premiere Pro很早就可以利用到它。需要注意的是,要使用QSV,核显必须处于开启状态,也就是说,目前被屏蔽掉核显的F后缀处理器无法使用它。

    AMD Video Core Next

    在高清时代刚刚拉开帷幕的时候,AMD或者说,ATI针对硬解高清视频搞出的UVD技术可以说是相当的惊艳,不过在编码方面,他们就落后了一些。

    AMD最早在初代GCN架构的显卡中引入了Video Coding Engine技术,初始版本只支持YUV420的AVC编码,且不支持B帧。从VCE 3.0版本开始支持HEVC的编码。VCE的最后一个版本是Vega20 GPU中应用的VCE 4.1,在基于RDNA架构的Navi芯片上面,它被Video Core Next所取代了。

    Video Core Next首次出现是在18年发布的Raven Ridge系列APU上面,它取代掉了原本的VCE和UVD,是一套新的视频编解码解决方案。随后在Navi 1x系列芯片中,集成了VCN 2.0,但特性较1.0没有变化,Renoir APU上面集成了VCN 2.1,未来的Navi 2x系GPU将集成VCN 3.0。

    如何使用硬件编码技术?

    早几年软件厂商并不重视利用硬件编码技术,不过如今的PC平台硬件或多或少会支持一种硬件编码技术,如果没法利用的话也算是一种浪费。像是OBS这个常用的录屏软件就支持以上这三项硬件编码技术,在检测到系统硬件支持之后会自动在编码器选项中提供对应的选项;而像Adobe这样在软件优化方面不太上心的公司也在Premiere Pro 14.2版本中加入了对NVENC和AMF(Advanced Media Framework,AMD的多媒体处理框架,可调用硬件编码)的支持。

    如果想单独调用GPU硬件编码模块去压视频,自己又有一定动手能力的,可以了解一下日本大神rigaya写的NVEncVCEEncQSVEnc这三款软件,现在的FFmpeg中也整合了QSV和NVENC,各大FFmpeg的图形化前端应该也做了相应的支持。

    顺带一提的是,利用专用单元对视频进行编解码操作并不是显卡或者说PC硬件的专利,几大移动SoC厂商早已在旗下的产品中加入了相关的单元,像苹果,从A10开始,就在SoC中集成了HEVC编码单元,未来给Mac用的自研SoC中肯定也会有相关的单元。

    总的来说,硬件编码技术已经普及,并可堪一用。

    附赠:硬件编码技术质量如何?

    如果在早几年用过硬件编码的朋友可能会觉得,硬件编码的质量较差,但实际上这个观念放到今天已经有点不正确了。NVIDIA在最近几代的NVENC中着重改良了它的质量表现。之前NVIDIA官方已经提供了他们的测试,我在业余用他们的参数跑了一下 ,并使用Netflix开源的客观视频质量对比框架vmaf对压制后的视频进行评价。这里使用的源视频片段是《你的名字》开场不久后的那段“MV”,源视频是从蓝光原盘文件中切取获得。

    参数的话,NVENC组使用的是-c:v h264_nvenc -preset medium -b:v BITRATE -bufsize BITRATE*2 -profile:v high -bf 3 -b_ref_mode 2 -rc-lookahead 20,libx264组使用的是-c:v libx264 -preset medium -b:v BITRATE -bufsize BITRATE*2 -profile:v high,这两组参数均参考自官方Blog文章。码率范围这边选择的比官方文章中的更广,从2Mbps到20Mbps,2~10Mbps段以1Mbps为间隔,10Mbps以上则以2Mbps为间隔,最终测试得到的码率-vmaf分数图线如下:

    可以看到,Turing片段在中低码率段较Pascal有明显的提升,在这个参数下,两个由NVENC编码得到的片段在绝大部分情况下画质表现均好于libx264的。不过这里需要指出的是,官方采用的编码参数对x264是不利的,实际情况中,压制组会使用更为复杂的控制参数来达到一个码率-画质的平衡。不过对于简单的编码,NVENC确实赢了。

    ×
    热门文章
    1RTX 3060 Ti在10月底发布,在AMD新卡发布后可能还有RTX 3070 Ti
    2RaidSonic推出主动式M.2 SSD散热器,可将SSD温度压制在30摄氏度
    3荣耀MagicBook Pro 2020锐龙版笔记本体验:平凡外表下有颗强芯
    4卡普空在东京电玩展透露DMC5特别版更多细节:光线追踪、新模式、维吉尔等
    5西数扩充其监控存储产品线,发布了18TB紫盘和1TB监控存储卡
    6ZeniMax创始人谈微软收购:我必须相信微软高层会回应Bethesda的意见
    7RTX 3080/3090的电容之争:POSCAP与MLCC真有贵贱之分?
    8飞行堡垒8龙珠限定版预约开启 IP定制礼盒大放送
    9荣耀MagicBook Pro 2020锐龙版笔记本体验:平凡外表下有颗强芯^2i50t25
    已有 10 条评论,每一条合规评论都是对我们的褒奖。
    • 英特尔大学生 08-08 13:49  加入黑名单

      Intel:虽然我的核显性能不好,但是功能全,所以AMD垃圾

      支持(0)  |   反对(0)  |   举报  |   回复

      10#

    • 游客 08-07 07:01

      CPU编码虽然可以用复杂参数来得到最佳画面流量比,但是压制速度就慢很多,而且很多参数对多线程支持很差,而且这篇文章还没对比H265,H265下GPU和CPU编码画质差异更小,欧美很多压 ...

      支持(1)  |   反对(0)  |   举报  |   回复

      9#

    • 游客 08-06 15:24

      能不能作一期关于基带的超能课堂

      支持(2)  |   反对(0)  |   举报  |   回复

      8#

    • zeroxcen研究生 08-06 09:09  加入黑名单

      当年沙桥的第一代qsv encode速度是相当惊艳的,完胜主流几家的硬件方案,质量也不会太差。侧面反映出这几年nv进步的幅度和intel的不思进取

      支持(5)  |   反对(0)  |   举报  |   回复

      7#

    • 游客 08-06 08:53

      至尚寶貝° 博士

      支持Intel家族+AMD GPU家族
      08-06 07:28 已有3次举报
    • 支持(0)  |   反对(8)  |   举报  |   回复
    • 就视频编解码这块儿,AMD GPU现在属于乐色程度...和竞品相比.

      支持(7)  |   反对(1)  |   举报  |   回复

      6#

    • 至尚寶貝°博士 08-06 07:28  加入黑名单

      支持Intel家族+AMD GPU家族

      已有3次举报

      支持(0)  |   反对(8)  |   举报  |   回复

      5#

    • 游客 08-05 19:37

      游客

      GPU利用率还是太低了,编码时核心频率才几十MHz占用率也低,发展空间还很大
      08-05 17:24 已有1次举报
    • 支持(0)  |   反对(1)  |   举报  |   回复
    • 没用到流处理器啊,是专门的一块电路用在编解码上

      支持(6)  |   反对(0)  |   举报  |   回复

      4#

    • 游客 08-05 18:03

      GPU编码使用的是内置专用单元,专用就没有什么发展空间质量也偏低姑且当是一个懒人小白功能

      支持(0)  |   反对(1)  |   举报  |   回复

      3#

    • 游客 08-05 17:24

      GPU利用率还是太低了,编码时核心频率才几十MHz占用率也低,发展空间还很大

      已有1次举报

      支持(0)  |   反对(1)  |   举报  |   回复

      2#

    • 游客 08-05 16:48

      我有话要说...

      已有1次举报

      支持(0)  |   反对(0)  |   举报  |   回复

      1#

    我来评论
    为你推荐