显卡硬件编码概念详解
对于显卡硬件编码这一概念,各位读者或许已有所耳闻。最初,它指的是利用GPU的通用计算能力来处理视频编码这类计算密集型任务。随着硬件技术的不断进步,如今的显卡硬件编码已非昔日用CUDA加速的编码方式可比。现在所说的显卡硬件编码,主要是指通过GPU集成的专用硬件单元进行编码操作,因其是专用的电路,其效率远超于使用通用计算进行加速。目前,AMD、Intel和NVIDIA等公司都在其硬件中集成了与硬件编码相关的单元。
NVIDIA的NVENC技术
首先介绍的是NVIDIA的NVENC技术。从变革巨大的Kepler架构开始,NVIDIA就在GPU中加入了专门用于编码视频的硬件单元。随着每次架构的更新,这个单元都会得到升级,加入新的特性。从Kepler到Turing,NVENC单元已经经历了六代以上的迭代。具体来说:
1. 从第二代Maxwell(GM20x芯片)开始,NVENC支持HEVC的硬编码。
2. Pascal架构后,支持10-bit的HEVC硬编码。
3. Turing架构则支持HEVC的B帧,从而大幅减少码率开支。
NVENC的支持情况因型号而异。例如,高端的GTX 1070/1080可以同时处理两条视频流,而中端的GTX 1060仅支持一条流。但好消息是,NVIDIA官方提供了一个详细的网站“Video Encode and Decode GPU Support Matrix”,以供用户了解自己显卡的硬件编码能力。
NVENC主要能编码C和HEVC两种格式的视频,其编码质量在业界已获得广泛认可。这项功能在NVIDIA自家的GeForce Experience录屏时会被默认调用。最近我们对NVENC在Premiere Pro中的表现进行了测试,详情可见相关文章。
Intel的Quick Sync Video技术
Intel是较早开始研发硬件编码电路的公司之一。早在第二代酷睿i系列处理器上,他们就在核显模块中加入了Quick Sync Video特性。与NVENC不同,QSV不仅支持视频编码,还包括了对视频解码的支持。从Sandy Bridge到Kaby Lake,QSV随着每一代架构的演进而更新,与核显代数基本同步。尽管近几年Intel在架构上进展缓慢,但QSV在Ice Lake和Tiger Lake上仍有所进步,例如Tiger Lake将引入对1编码的硬件解码能力。
除了C和HEVC这两个常用视频编码外,QSV还支持MPEG-2、MJPEG和VP8、VP9等编码格式。它是较早被软件所支持的硬件视频编解码技术之一,如Adobe Premiere Pro早已支持其使用。但需要注意的是,要使用QSV,核显必须处于开启状态。
AMD的Video Coding Engine技术
在高清时代初期,AMD(或称ATI)曾以惊艳的UVD技术著称于高清硬解领域,但在编码方面则稍显落后。随着技术的不断进步,AMD也在其显卡中集成了Video Coding Engine技术。尽管初始版本仅支持有限的编码格式,但后续版本逐渐增加了对HEVC等更多格式的支持。在最新的RDNA架构中,Video Core Next已成为主要的视频编解码解决方案。
随着技术的迭代,AMD不断更新其编解码技术,并在其APU和GPU中持续集成新的编版本。例如,Renoir APU集成了VCN 2.1编,未来的Navi 2x系列GPU将集成VCN 3.0。
软件厂商的跟进与利用
过去几年里,软件厂商对硬件编码技术的利用并不多。但现在随着PC硬件的普及和优化,各大软件厂商开始逐渐认识到利用硬件编码技术的重要性。像OBS这样的常用录屏软件就支持NVENC、QSV等硬件编码技术;而像Adobe这样的公司也在其软件中加入了NVENC和AMF的支持以提升性能和效率。
对于那些希望手动调用GPU硬件编码模块的用户来说,可以尝试使用如ria编写的NVEnc、VCEEnc和QSVEnc等软件工具。此外FFmpeg等工具也集成了对QSV和NVENC的支持让编解码更加简单便捷。
专用单元在编解码中的角色与意义