H.264转码加速:NVENC大战Quick Sync
GPU加速技术对普通消费者最直观的影响就是视频转码应用上了,NVIDIA.、AMD以及Intel都有自己的加速技术,而在新一代CPU和GPU架构上,三方都有更新的技术方案。<br><br> NVIDIA在Kepler架构上引入了NVENC编码单元,实测画质与CUDA相当,但是速度更快,只不过在速度和功耗上依然比不过Intel的Quick Sync,AMD的VCE因为缺少软件支持显得更悲剧。
GPU转码加速的好处是速度快,但是画质也低了,无法与单纯的CPU转码相媲美,随着技术的进步,GPU转码的画质才慢慢提升上来。再往后Intel也加入战场,SNB架构的GPU部分增加了专用的Quick Sync单元,无论转码速度还是画质都要比A/N两家的GPU加速效果要好。
AMD在最新一代的GCN架构中增加了专用的VCE(Video Encodec Enigine)引擎,支持1080P 60fps视频转码,而且支持完整的H.264规范(前一代转码只支持H.264 Baseline),唯一的问题是软件支持度不够好,发布5个多月了才有MediaEspresso支持。
AMD的VCE引擎
Ivy Bridge处理器中,Intel也将转码单元Quick Sync做了升级,虽然Intel官方资料中并没有提及具体的变化,但是我们之前也做过测试,发现转码速度变快了。此外,IVB的Quick Sync也统一到了Media SDK API下。
再有一个新选手就是NVIDIA的NVENC编码引擎了,它是Kepler架构新增的功能,按照NVIDIA给出的资料来看,NVENC比自家的CUDA编码还要优秀,因为它跟Quick Sync一样属于是专用的编码加速单元,而CUDA加速则是比较通用的,速度上不如专用单元快。
NVENC编码加速功能
早前我们也打算把NVENC编码加速专门测试一下,只是一直没能成行,不过首发测试中也做了MediaEspresso转码加速测试,GTX 680转码一段视频需要32秒,GTX 580和HD 7970分别需要40、45秒,也就是在GPU计算性能更差的情况下,GTX 680的转码速度依然要高于GTX 580、HD 7970,NVENC功不可没。
法国Hardware.fr网站最近做了详细的NVENC编码加速测试,并与Intel Quick Sync做了对比,虽然没能对比AMD的VCE编码引擎(软件支持是AMD的软肋啊),但是本文的测试方法和结果依然值得推荐,特别是画质对比方面专业得多,小编受益匪浅啊。
测试软件及方法:
MediaEspresso也有bug和限制,比如GOP 固定限制,对比测试并非以其为主要手段
讯连科技的MediaEspresso 6.5软件支持Quick Sync以及NVENC加速。CPU为Core i5-3570K(HD 4000显卡),主板为华硕P8Z77 Pro-V。对比的显卡主要是GTX 670、GTX 680、GTX 480,虽然GTX 480是上上代的显卡了,不过CUDA编码加速实际上对显卡要求并不高,即便是GTX 450与高端显卡的差距也非常小。
另外,软件编码使用的是Build 2197版本的H.264,分别测试了1-pass和2-pass。
画质对比
画质对比值得着重说一下。平时我们做画质对比主要是用肉眼看,这种方法虽然直观一些,但是误差太大,而且不同的截图差别也不一样,不够有说服力。
Hardware.fr用的是PSNR和SSIM数值,PSNR(Peak signal-to-noise ratio,峰值信号噪点比例)是信号强度与噪点强度的比值,可以用来衡量有损压缩编码过程中的失真度。而SSIM(structural similarity index,结构相似指数)也是用来衡量两张图片之间的相似度。
有兴趣的可以参考上面的维基百科解释研究一下,总之,PSNR和SSIM是科学的测量方法,要比肉眼查看可靠得多,说服力也足够强。
上面就是几种编码方案的PSNR和SSIM结果。
虽然速度更快,但是NVENC引擎的转码画质与CUDA转码是一样的,丝毫没有降低。
上面的计算只是基于平均状况,并不是全部内容,再来看一下500张逐帧截图中的SSIM指数吧。
这里只是一张图片,推荐去原文看对比,因为他们做的是网页特效,下面的六个选项是可以点击选中或者取消的,方便对比任意几种编码方案的结果,鼠标指上去还会显示各个方案的具体SSIM数值,这是单一截图展示不了的。
由于软件的Bug和限制,N卡和Quick Sync转码的截图中每隔30帧就会出现一次剧烈波动(场景太复杂),0到187帧之间的场景容易压缩,因此SSIM比较稳定,188到243帧以及244到350帧之间波动就非常大,SSIM指下降的厉害。
虽然Quick Sync在复杂场景中SSIM有所下降,但是依然要领先与NVIDIA显卡,H.264 1-pass编码依然有明显优势。
那么实际画质是如何呢?来看一下317张截图的真实截图对比吧。
这里依然去原文查看,因为他们作出了动态效果,最下面是各种编码方案的画质选择,点击左侧部分,转码后的截图就会出现在网页左边,右边则是另一种方案的画质截图,比如上图中我选择了原图与GTX 670(NVENC)编码,效果就是这个样子。
(ps,这里有点瑕疵,出现了两个GTX 670选项,实际上应该是一个GTX 670和一个GTX 680)
结果是:NVIDIA GPU加速编码的画质损失依然是最严重的,而最新的H.264编码做的比较好,特别是2-pass画质十分接近原始画质。
转码速度及功耗
使用的影片是720P分辨率的《阿凡达》,结果如下:
(说下表格的数据,第一列是转码时间,之后是待机功耗,第三列是转码时的功耗,最后一列是功耗差值)
来看NVENC,其转码速度明显优于GTX 480,性能高了133%之多。功耗方面,固定转码单元的GTX 680比GTX 480只低了21W,从差值上看也只有11W,并没有表现出比预期更明显的优势。
总的来看,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效费比最差。
总结:
原文的总结有三段,其实意思可以归纳为三句话:
无论转码速度还是转码效率,Quick Sync依然是最佳的方案,NVIDIA的NVENC要胜过前代的CUDA方案,但还是比不过Intel。
H.264软件转码中1-pass速度要超过CPU转码,2-pass虽然速度最慢,但是画质是最好的,适合对画质有较高要求的场合。
至于AMD,技术上是好的,软件支持是杯具的。
H.264转码加速:NVENC大战Quick Sync的更多相关文章
- 视音频数据处理入门:H.264视频码流解析
===================================================== 视音频数据处理入门系列文章: 视音频数据处理入门:RGB.YUV像素数据处理 视音频数据处理 ...
- H.264/H265码流解析
H.264/H265码流解析 一.H.264码流解析 一个原始的H.264 NALU 单元常由 [StartCode] [NALU Header] [NALU Payload] 三部分组成 一个原始的 ...
- 【视频编解码·学习笔记】4. H.264的码流封装格式
一.码流封装格式简单介绍: H.264的语法元素进行编码后,生成的输出数据都封装为NAL Unit进行传递,多个NAL Unit的数据组合在一起形成总的输出码流.对于不同的应用场景,NAL规定了一种通 ...
- 【视频编解码·学习笔记】4. H.264的码流封装格式 & 提取NAL有效数据
一.码流封装格式简单介绍: H.264的语法元素进行编码后,生成的输出数据都封装为NAL Unit进行传递,多个NAL Unit的数据组合在一起形成总的输出码流.对于不同的应用场景,NAL规定了一种通 ...
- (转载)H.264码流的RTP封包说明
H.264的NALU,RTP封包说明(转自牛人) 2010-06-30 16:28 H.264 RTP payload 格式 H.264 视频 RTP 负载格式 1. 网络抽象层单元类型 (NALU) ...
- H.264码流结构解析
from:http://wenku.baidu.com/link?url=hYQHJcAWUIS-8C7nSBbf-8lGagYGXKb5msVwQKWyXFAcPLU5gR4BKOVLrFOw4bX ...
- H.264分层结构与码流结构
H.264分层结构 H.264编码器输出的Bit流中,每个Bit都隶属于某个句法元素.句法元素被组织成有层次的结构,分别描述各个层次的信息. 在H.264 中,句法元素共被组织成 序列.图像.片.宏 ...
- 使用VideoToolbox硬编码H.264<转>
文/落影loyinglin(简书作者)原文链接:http://www.jianshu.com/p/37784e363b8a著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”. ======= ...
- H.264视频在android手机端的解码与播放(转)
随着无线网络和智能手机的发展,智能手机与人们日常生活联系越来越紧密,娱乐.商务应用.金融应用.交通出行各种功能的软件大批涌现,使得人们的生活丰富多彩.快捷便利,也让它成为人们生活中不可取代的一部分.其 ...
随机推荐
- mysql中变量character_set_connection的具体作用
如题.通常的使用中,character_set_client,character_set_connection这两个变量的值是一样的,也就是说查询不需要进行编码转换.这样看来变量character_s ...
- USACO刷题之路
重拾经典 本科生涯结束了,在大学做的ACM竞赛现在基本忘的差不多了.USACO作为一个经典的题库,本来是面向OI选手的,但是由于题目质量很高所以受到大家的好评,所以我这次就从它开始我的刷题之路吧. 由 ...
- PHP json不转义
json_encode($result, JSON_UNESCAPED_UNICODE);
- HYBControllerTransitions中文文档
中文文档 HYBControllerTransitions是自定义围场动画API封装类库,使用简便.使用者不需要了解太多转场动画知识,即可轻松接入项目使用. 这是一个给开发者们提供自定义push.po ...
- 我推荐的一些iOS开发书单
文/叶孤城___(简书作者)原文链接:http://www.jianshu.com/p/2fa080673842著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”. 上次发了一下比较不错的i ...
- 网络请求工具--AFNetworking 分类: ios技术 2015-02-03 08:17 76人阅读 评论(0) 收藏
在我们开发过程中,网络请求是必不可少的,对于网络框架,现在主流的大概只有三类:ASI框架: HTTP终结者(已经停止更新了),MKNetworkKit ,AFN.今天我就来浅谈一下这个AFN AFNe ...
- 微信小程序之----audio音频播放
audio audio为音频组件,我们可以轻松的在小程序中播放音频. audio组件属性如下: 属性名 类型 默认值 说明 id String video 组件的唯一标识符, src String ...
- java学习(三) java 中 mongodb的各种操作
一. 常用查询: 1. 查询一条数据:(多用于保存时判断db中是否已有当前数据,这里 is 精确匹配,模糊匹配 使用 regex...) public PageUrl getByUrl(String ...
- <!DOCTYPE> 声明 引发的错误
<!DOCTYPE> 声明必须是 HTML 文档的第一行,位于 <html> 标签之前. 在写模板的时候,因为最近开始给每个文件添加注释,无意中将注释写在文件的第一行.导致页面 ...
- 【贪心】【堆】Gym -100956D - Greedy Game
题意:给定n个物品,每个物品对于A和B来说具有不同的价值,记为ai,bi,两人交替取,A先手,A总是贪心地取当前剩下的物品中,对于他价值最高的,如果有多个,则任取一个.问B在最坏情况下,能取到的物品的 ...