1、网易视频云:视频硬件编码技术对比QuickSync vs NVenc vs AMD VCEQuicksyncIntel在 Sandy Bridge 架构 CPU 中引入了的 MFX(Multi-Format Codec Engine,多格式编解码器引擎)视频处理引擎。第一代 MFX 是从 Sandy Bridge 上引入的,现在的 Ivy Bridge 和下一代的 Haswell 也分别具备第二和第三代 MFX, Ivy Bridge 的第二代 MFX 主要是改进了性能,而 Haswell 的第三代 MFX 除了速度比 Ivy Bridge 更快外,在同码率画面品质方面也会有 11% 的改进。
2、MFX 包含了解码器、编码器和视频效果处理器三部分,其中编码器属于二工位混合式的硬件编码器。Intel 将编码器的动作分为两组,即 ENC 和 PAK,其中 ENC 包括了码率控制、运动估算、帧间估算、模式抉择;而 PAK 包括了运动补偿、帧间预测、前向量化、像素重构、熵编码。ENC 操作由 GPU 的可编程 EU 矩阵执行,PAK 则是 MFX 的硬件流水线执行,两组动作对不同的帧同时执行,可以藉此达到最高性能。MFX 令人印象深刻的还有它的解码器性能。例如我们测试的 16 分钟 1080p 片段,在基于 GF110/GF104 的 GTX 580/GTX 560 Ti 上解码性能为 94.
3、2 fps,基于 GK104 的 GTX 680 是 158fps,而在 Sandy Bridge/ Ivy Bridge 的 i7-2600K/3770K 上解码性能居然分别高达让人瞪目乍舌的 460fps、606fps。硬件解码性能的强大,除了说明 GPU 能应付更复杂的视频解码外,还意味着可以在转码的时候更多地解放 CPU 负荷。此外,IVB 的 Quick Sync也统一到了Media SDK API下。CUDA/NVENC首先要说明,CUDA Encoder 和 NVENC 是两个不同的东西,前者是采用 GPU 的通用计算单元进行编码加速,后者则是增加了专门的硬线化编码电路作编码加速
4、。在今年发布的 Kepler 家族 GPU 中,NVIDIA 集成了专用的 h.264 硬件编码器NVENC,这和之前的 CUDA 编码器有很大的不同,因为之前的 CUDA 编码器是由 GPU 的通用计算执行部分 h.264 算法来实现加速。而 NVENC 则主要由专门为 h.264 算法定制的硬件单元来执行编码操作,主要的好处是在进行编码操作的时候性能/耗电比要比 CUDA Encoder 高很多。目前在官网已经提供了有关 NVENC 的 SDK可以下载,NVIDIA NVENC 能实现 4K 分辨率、支持 h.264 High Profile 4.1、3D 视频流压缩。支持 NVENC 的
5、编码器有有很多软件,例如 Cyberlink 的 Media Espresso 转码器媒体测试专用版。VCEAMD在最新一代的 GCN架构中增加了专用的 VCE(Video Encodec Enigine)引擎,支持 1080P 60fps视频转码,而且支持完整的 H.264规范(前一代转码只支持 H.264 Baseline) ,唯一的问题是软件支持度不够好,发布 5个多月了才有 MediaEspresso支持。画质对比Hardware.fr用的是 PSNR和 SSIM数值,PSNR(Peak signal-to-noise ratio,峰值信号噪点比例)是信号强度与噪点强度的比值,可以用来
6、衡量有损压缩编码过程中的失真度。而 SSIM(structural similarity index,结构相似指数)也是用来衡量两张图片之间的相似度。上面的计算只是基于平均状况,并不是全部内容,再来看一下 500张逐帧截图中的 SSIM指数吧。http:/www.hardware.fr/marc/h264nvenc/graph.htm?focus_inception720ps1真实截图对比http:/www.hardware.fr/marc/h264nvenc/imgcompivy.htm?原文作出了动态效果,最下面是各种编码方案的画质选择,点击左侧部分,转码后的截图就会出现在网页左边,右边则
7、是另一种方案的画质截图,比如上图中我选择了原图与 GTX 670(NVENC)编码,效果就是这个样子。结果是:NVIDIA GPU加速编码的画质损失依然是最严重的,而最新的 H.264编码做的比较好,特别是 2-pass画质十分接近原始画质。转码速度及功耗使用的影片是 720P分辨率的阿凡达 ,结果如下:(说下表格的数据,第一列是转码时间,之后是待机功耗,第三列是转码时的功耗,最后一列是功耗差值)来看 NVENC,其转码速度明显优于 GTX 480,性能高了 133%之多。功耗方面,固定转码单元的 GTX 680比 GTX 480只低了 21W,从差值上看也只有 11W,并没有表现出比预期更明
8、显的优势。总的来看,Quick Sync依然是最好的编码加速方案,功耗和转码性能上都排名第一。另外,H.264 1-pass编码速度要比 CPU还快,画质也高一些,而 2-pass编码的速度不出意外地倒数第一,但是画质上傲视群雄。如果以 W(功耗)/H(时间,小时)为基础来看(转码功耗乘以时间(s)再除以 3600,上图中的法文符号“,“在英文中是“.“,也就是说上图中的数值是 6.87、8.95 这样的小数而非整数) ,Quick Sync转码每小时消耗了0.83W电力,而 GTX 670、GTX 680消耗的电力在 3.10、3.24 左右,其他方案消耗的就更高了,GTX 480 效费比最
9、差。总结:无论转码速度还是转码效率,Quick Sync依然是最佳的方案,NVIDIA 的 NVENC要胜过前代的 CUDA方案,但还是比不过 Intel。H.264 软件转码中 1-pass速度要超过 CPU转码,2-pass 虽然速度最慢,但是画质是最好的,适合对画质有较高要求的场合。至于 AMD,技术上是好的,软件支持是杯具的。QuickSync是目前最快同时画质上最接近 CPU的转码方案;NVENC的画质仍然难以让人满意;X264(CPU)在速度上的明显劣势使其除了追求高压缩率进行 2-pass以外没有其他的价值;AMD VCE 最差。1、 通用性 : FFMPEG(X264) CUDA Quick Sync2、 速度 : Quick Sync CUDA FFMPEG(X264)3、 质量 : FFMPEG(X264) Quick Sync CUDA