20分转1部蓝光!国产CUDA转码软件首测
2008-2009年间,3D图形领域最出风头的既不是各类华丽的DX10游戏,也不是性价比越来越高的DX10新显卡,而是NVIDIA的CUDA并行计算技术,它将专注3D渲染的GPU推向了通用计算领域,以更小的成本获得了更高的性能,原本风马牛不相及的CPU和GPU开始了正面交锋。
目前CUDA在民用领域的主要用途就是视频编码,而CUDA的代表作显然就是Badaboom这款视频转码软件,相信经常关注显卡的朋友一定不会陌生,它是NVIDIA与国外一软件公司联合开发的作品,最大限度的调动了GPU的资源。根据我们之前的测试来看,9800GT级别的中端显卡就能轻易击败当时的最强四核QX9770,GPU视频编码的实力可见一斑!
作为一款新兴软件,Badaboom的版本更新很频繁,视频支持的格式、兼容性、转换效率都在不断的改进,近期发布的1.2版本更是加入了对中文的支持。但是这款老外开发的软件明显不适合中国国情,很多缺点导致该软件并不实用,笔者以及周围的朋友都是深有感触:Badaboom只能拿来玩玩,试试看GPU转码到底能有多强,真正靠谱的还是成熟的CPU转码,为什么这么说呢?
- Badaboom的界面虽然支持中文了(面子工程),但却不支持中文目录和文件名(很搞笑),每次转换视频都得手动改名并指定目录;
- Badaboom的兼容性还是不行,网络最流行的RMVB、AVI、WMV等视频都不支持,只支持DVD、蓝光、TS等标准封装规格的视频;
- Badaboom不支持将字幕压进视频里面,非中文影片转换后根本没法看,因为大多数手持设备都不能外挂字幕;
- 只支持输出MP4这一种封装格式,应用范围有限。
至于软件功能简单、不支持批量等等这些鸡毛蒜皮的小事就不提了,这跟软件的定位人群有关。但以上四大致命问题导致Badaboom只是看上去很美、很快,其实一点都不实用,根本不适合中国用户使用。
Badaboom的局限性这么大,导致它只适合做评测用,没什么实际意义。作为用户来说,CUDA技术有多强悍并不重要,最重要的是它能带来什么样的好处,在媒体铺天盖地的宣传CUDA优势之时,最终用户还是只能用CPU转换视频,不能不说是一种悲哀。
终于,我们盼来了国内首款支持CUDA的视频转码软件,完全开源并且永久免费的MediaCoder在最新版本当中加入了CUDA编码器。此前MediaCoder所有编码器都是依靠CPU运算,现在能够与时俱进率先加入GPU加速支持,的确难能可贵,引用MediaCoder开发人员的话说就是:
“近两年NVIDIA的CUDA技术似乎成为业界新宠,其优良的科学运算加速能力确实首屈一指,引领着并行运算潮流,各行业都纷纷采用它来加速,搞得我们也跃跃欲试,呵呵,另外还有很多网友对MediaCoder的厚爱,希望在MC上体验一下CUDA加速的快感,于是我们决定了用CUDA加速MediaCoder转码。
年初我们几个开发人员就开始酝酿着采用CUDA加速H.264编码,毕竟H.264现在比较火,还是比较有前途。经过一段时间的紧张的开发,CUDA加速的H.264编码器终于诞生,让性能卓越的MediaCoder又添一利器。”
笔者一直都是MediaCoder软件的忠实用户,该软件由于对多核CPU优化支持非常到位,因此我们经常用它进行CPU视频编码测试,也常用它给iPhone转视频看。现在它率先支持CUDA,笔者自然要对其进行深入测试,从兼容性、易用性、速度等各方面考察,与CUDA的代表作Badaboom进行全面对比!
或许很多人还没用过MediaCoder这款软件,下面就先对它进行简要介绍:
MediaCoder是一个免费的通用音频/视频批量转码工具,它将众多来自开源社区的优秀音频视频编解码器和工具整合为一个通用的解决方案,可以将音频、视频文件在各种格式之间进行转换。MediaCoder具备一个可扩展的架构和丰富的功能,可满足各种场合下的转码需求。目前,MediaCoder的用户已经遍布全世界170多个国家。
通俗一点的说:玩高清的朋友一定用过终极解码或者完美解码吧,终极解码就是整合了一大堆播放器和解码器的视频播放软件,而MediaCoder就是整合了一大堆编码器和插件的视频转码软件。功能大而全、灵活性高、开源、免费是这类软件的共性,如果要为MediaCoder起个中文名称的话,笔者认为“终极转码”或者“完美转码”都不错^_^。
● MediaCoder功能简介:
- 实现各种音频视频格式间的相互转换
- 丰富的可调整的编码参数
- 丰富的视频处理滤镜,包括反交错、裁剪、分辨率调整、亮度色彩调整等
- 丰富的音频处理滤镜,包括声道映射、重采样、音量调整等
● MediaCoder主要特点:
- 基于优秀的众多的开源编解码后台,能够解码和编码的格式多
- 良好的多线程设计,为多核处理器优化,在四核上可达到90%以上的平均CPU使用率
- 极为丰富的可调整的编码参数
- 全部编解码器自带,不依赖于系统的编解码器和任何组件
- 良好的可扩展的程序架构,快速适应新的需求,不断增加新的格式的支持
- 可用脚本语言扩展界面,支持众多影音设备
● MediaCoder支持格式:
- MP3, Vorbis, AAC, AAC+/HE-AAC, AAC+v2/HE-AAC v2, MusePack, Speex, AMR, WMA, RealAudio, mp3PRO*
- FLAC, WavPack, Monkey''s Audio, OptimFrog, AAC Lossless, TTA, WAV/PCM, Waveform
- H.264, XviD, DivX, MPEG 1/2/4, Theora, Flash Video, Dirac, 3ivx*, RealVideo*, Windows Media Video
- AVI, MPEG/VOB, Matroska, MP4, PMP, RealMedia*, ASF, Quicktime*, OGM*
- CD, DVD, VCD, SVCD, CUESheet*, HTTP*, FTP*, RTSP*, UDP*
● MediaCoder最新更新:
0.7.1.4450版(大幅提升四核处理器性能)
* [更新] MediaCoder build 4450
o [修正] Xvid编码器在多核处理器上的性能问题
o [更新] 多线程解码,提高多核处理器的总体转码性能
* [更新] x264 r1165
* [更新] MPlayer/MEncoder r29319
* [更新] FFmpeg r19159
* [更新] MediaInfo 0.7.17
* [新增] xvidcore 64位编码器 (需安装x64更新包)
0.7.1.4430(支持CUDA H.264编码器及分辨率转换)
* [更新] MediaCoder build 4430
o [新增] CUDA加速的H.264编码
o [新增] CUDA加速的分辨率转换
o [新增] 视频数据缓冲大小调整选项
o [修正] 视频宽高比的问题
o [修正] 其它一些小问题
* [新增] CUDA H.264编码器
* [新增] CUDA视频过滤器(目前只实现了分辨率转换)
* [更新] x264 r1163
* [更新] MediaInfo 0.7.16
● MediaCoder 0.7.1.4460最新版下载链接:
注意事项:4450版本当中去掉了CUDA编码器,等待NVIDIA颁发CUDA授权认证,未来一周内将会正式放出完整的CUDA版本,请大家耐心等待。
就在今天,MediaCoder又放出了最新的0.7.1.4460版,CUDA编码器重新加入,欢迎大家下载。
本次测试在笔者自用电脑上进行,平时除了工作游戏外也经常转视频,家用机为i7 920超频4GHz,工作机为E8400保持默认3GHz,显卡随时更换以测试CUDA转码时的差异。
● 测试系统配置:
PCPOP.Com泡泡网DIY评测室 | |
硬件系统配置 | |
Core i7 920 2.66GHz(OC 4GHz) Core 2 Duo E8400 3.0GHz | |
华硕 P6T Deluxe(X58) 华硕Rampage Extreme(X48) | |
日立1TB HDE721010SLA330 | |
金泰克DDR3-1333 2GBx3 | |
影驰GTX285 影驰9600GT刀锋版 微星9800GT绿色版 昂达9500GT | |
海盗船HX1000W | |
显示器 |
Sony 40V380A |
软件系统配置 | |
Windows 7 Beta 7127 64bit | |
驱动 |
Forceware 186.18WHQL |
4核8线程的Core i7超至4GHz后,可以说是当前压片的神器了,相信网络上很多Remux和MKV的片子都是由Core 2 Quad或Core i7压制所得。那么有了GPU CUDA技术助阵后,压片速度能否更快呢?
目前CUDA还不支持SLI及多GPU技术,因此显卡选择了单核最强的GTX285,另外还加入了中低端最热门的9800GT、9600GT和9500GT做对比,看看不同规格的GPU对性能转码性能影响有多大。
● 测试软件设置:
Badaboom为最新的1.2.0.85中文特别版,转换时设置为内置的iPhone方案,输出码率为默认的1500kbps,实际视频码率是1436kbps。
MediaCoder为目前最新的0.7.1.4450版,并打上X64补丁。为了与Badaboom公平对比,输出视频码率手动设定为1436kbps。编码器选择CUDA Encoder表示开启CUDA编码,选中“编码器画面处理”可以让GPU取代CPU进行滤波处理,进一步提升转码速度。
将编码器换为X264就能禁用GPU编码,完全使用普通的CPU编码,这样就能直接对比CUDA编码器与X264编码器的转换效率,看看性能提升幅度到底有多大。
一切准备就绪,PK正式开始。
笔者平时最常做的视频转码应用,就是把各类DVD级或者720p级影片转成iPhone能放的分辨率,所以今天的测试就从720p转270p开始,测试影片为2009年7月即将上映的灾难巨片《2012》的预告片,标准的H.264编码Mov格式,Badaboom可以很好的支持它,至于MediaCoder则完全不用担心兼容问题。
笔者平时都是吧i7 920从默认的2.66GHz超至4GHz使用,所以本次测试就分为超频和不超频两种模式,顺便可以看看CPU超频与否对转码速度有无影响。
第一回合:转码速度对比
以下实测截图从左到右依次为:MediaCoder CUDA、MediaCoder X264、Badaboom CUDA,可点击放大,没兴趣就别点了,只看后面的柱状图即可。
测试结果一目了然,三种编码方案中,Badaboom的速度是最慢的,即便是单核最强的GTX285,其速度也跟i7 920差很多,i7 920超频之后的性能更是达到Badaboom的两倍以上!
但在MediaCoder里面开启CUDA加速后,编码速度更上一层楼,性能提升达60%,看来只有CPU和GPU强强联手才能达到优异性能,任何一方特立独行都不会有太好的表现。
i7超频后,Badaboom的速度没有任何变化,这就证明了Badaboom是主要依靠GPU编码的软件,并不依赖于CPU的性能。而MediaCoder不论CPU编码还是GPU编码,性能都同比提升了45%左右,看来MediaCoder依然是主要依靠CPU进行编码,GPU作为辅助,接管了最复杂的一部分算法,从而一定程度上消除了瓶颈,大幅提升性能。
在超频状态,MediaCoder开启CUDA后的速度是Badaboom的3.5倍!
第二回合:输出影片画质对比
MediaCoder的转码速度如此之快,是不是以牺牲画质为代价的呢?此前AVIVO的速度就比Badaboom快很多,但输出画质惨不忍睹。下面就把输出视频拿出来做一对比。
三种编码器转换后的视频信息如下:
在MediaCoder设置里面笔者已经将码率调整为与Badaboom相同,因此最终输出文件的码率也很非常接近,文件大小相差不过1MB。下面就是实际截图,分辨率为iPhone默认的480*320 100%大小:
MediaCoder X264编码
MediaCoder CUDA编码
Badaboom CUDA编码
很难截到完全相同的同一帧画面,但也能看出来三种编码的输出画质基本上没有区别,毕竟码率和文件体积都摆在眼前。
现在就可以下结论了,MediaCoder转码之所以如此神速,并不是通过一些偷工减料的手段来实现,而是对多核多线程CPU优化支持很到位,将i7强大的性能完全释放了出来,而CUDA编码器的引入消除了转码过程中最大的运算瓶颈,进一步提升了性能,从而发生质的改变!
第三回合:CPU占用率对比
MediaCoder软件介绍部分就提到了对多核支持很好,那么我们就来看看四核八线程的i7在转码时CPU占用率能达到多少。
● MediaCoder X264编码:i7 920≈95%,E8400=100%
说实话,笔者在日常应用中,除了常见的烤机和性能测试软件外,也只有MediaCoder在视频转换时才能让四核八线程的i7占用率接近100%!由此可见MediaCoder对于多核以及超线程技术支持非常到位,这也是其强大性能的源泉。
超高的CPU占用率虽然能保证最高的转换效率,但在转码过程中想要干一些别的事情的话,系统反应速度就比较慢了,双核CPU就根本不用想了。
● MediaCoder CUDA编码:i7 920≈80%,E8400≈95%
开启CUDA之后,在性能提高的同时,CPU占用率却从原来的95%下降至80%左右,GPU既减轻了CPU的负担也消除了瓶颈。80%左右的占用率的话,上网、QQ、打字、听歌、看片等轻负载的应用就完全不会影响了。
● Badaboom CUDA编码:i7 920≈5%,E8400≈20%
Badaboom确实走的是极端路线,复杂的任务全部交给了GPU来处理,导致CPU基本处于完全空闲状态。由于i7本身性能就很强再加上还支持超线程技术,最终平均占用率只有5%左右。
● 小结:
这一回合的较量中,并不存在谁胜谁负之说,CPU负载越高只能说明编码器的算法厉害,能充分发挥CPU的性能,相信没有多少人愿意使用仅支持单线程的编码软件。
不过从实际使用感受的角度来说,CPU占用率太高或太低都不是什么好事,太高影响多任务操作,太低又有点浪费资源。
第四回合:不同平台对比,CPU和GPU对转码速度的影响
在视频转码过程中,CPU负载多少、是不是瓶颈,只要看看CPU占用率就清楚了,但GPU的负载无从得知(A卡支持监控GPU占用率,而N卡不支持)。所以我们只能通过更换不同型号的显卡,来对比CUDA编码时的性能差异。
● Badaboom转码时不同GPU、GPU对性能的影响
本以为主要依靠GPU转码的Badaboom应该对显卡的要求很高,但测试结果却让人大跌眼镜!Badaboom既不能很好的支持高端多核CPU,也不能充分发挥高端GPU强大的运算性能,96GT以上级别显卡的性能几乎一模一样。
问题主要出在片源的选择上面,通过之前的测试来看,片源分辨率越高转换效率就越低,如果改用480p的DVD的话,9800GT相比9600GT就会有20%左右的性能提升。
● MediaCoder CUDA转码时不同GPU、GPU对性能的影响
看得出来,MediaCoder过分依赖于CPU的性能,GPU只是配角,而且对显卡的要求比Badaboom更低,95GT与96GT/98GT的区别都不是很大。但有了GPU的支持性能提升还是很明显的。
如果比绝对性能的话,MediaCoder凭借对四核的良好支持速度优势十分明显;但比相对性能的话,在E8400双核平台上,Badaboom能充分发挥96GT的性能,比起MediaCoder还是有微弱的优势;如果使用更低端的配置,那么Badaboom的优势相信会更加明显。
● 测试小结:
综合来看,Badaboom CUDA和MediaCoder CUDA在转码时都存在瓶颈,Badaboom最大限度的削弱了CPU的作用,但也未能完全利用高端GPU的能量,因此在高端配置上很吃亏;而MediaCoder将CPU的资源发挥到了最大,但对于GPU的挖掘还不够深入。
当然,最大的瓶颈可能还在于测试方法,给手持设备压制低分辨率低码率的视频时,输入运算量较大但输出数据量很少,视频编码过程的负载不均衡,导致CPU与GPU之间的协同运算出现互相等待的情况,就类似于流水线作业部分超负荷而部分空闲。
那么在压制高清视频时,效率会不会更高一些呢?
第四回合:1080p压720p高负荷全长影片对比
前面的测试都是小打小闹,主要针对手持设备,将普通或者高清影片压制成为分辨率和码率都较低的小视频文件,为了节约测试时间,片源也选择了时间较短的预告片,本身用不了太久,因此CUDA编码器的威力未能完全释放出来。
现在我们就来正规一点的测试,将一部完整的1080p TS封装大片压制成为720p MKV封装,网络上最流行的720p高清影片就是通过蓝光光碟转码压制而成的。720p属于性价比高的高清视频,一般都能刻录保存在DVD光盘里面,而画质却要比普通DVD影碟高很多,相信很多爱好高清的朋友都有下载、压制、收藏720p的习惯。
● 《007之大破量子危机》1080p转720p
测试影片选择了《007之大破量子危机》,片源大小26GB,片长106分钟,1080p H.264编码,TS封装。目标格式:720p X264编码,MKV封装,最终容量3GB,复制音轨,详细设置如下:
● i7 920 oc 4GHz CPU独立编码:耗时46分钟
● i7 920(4GHz) + 9600GT合作编码:耗时32分钟
● i7 920(4GHz) + GTX285合作编码:耗时20分钟!
● 成绩图对比:Badaboom缺阵
Badaboom可以支持TS封装的高清视频,也能压制成720p MP4封装,但这款软件显然不适合压制大容量的HDTV,笔者尝试用Badaboom对比MediaCoder时发现,Badaboom一开始转码速度还很正常,GTX285可达60fps左右的转换速度,预计不到一小时就能转换完毕,但几分钟后速度开始下降,越转越慢,居然仅有20fps左右,转完一整部HDTV耗时达2小时以上,这种性能表现明显是不正常的,因此笔者放弃了Badaboom测试。
最终的结果让人欣喜若狂!i7 920和GTX285强强联手,将压片时间缩短了26分钟,性能提升幅度高达133%。换句话说,此时GTX285所贡献的性能要比超频到4GHz的i7还要多33%,CUDA编码器的威力可见一斑!而且此时GTX285的性能仍未被完全释放出来,看来只要MediaCoder继续优化CUDA编码器算法及转码机制,速度还有提升的空间!
第五回合:RMVB和AVI转码,Badaboom不支持
Badaboom最大的软肋就是不支持网络上最流行的RMVB、AVI等格式的标清影片,而MediaCoder则能对所有格式提供无差别的支持,这一回合MediaCoder不战而胜,接下来就是MediaCoder自己的CUDA编码器与X264编码器在性能方面的较量了。
● 测试影片:名侦探柯南521 杀人犯工藤新一 1小时特别篇【RMVB】[848X480]
一小时的动画片,不到3分钟就压制完毕,注意这还是在i7 920不超频的情况下,如果超频到4GHz的话,根据之前的测试数据来看性能又会提升45%左右,估计不到2分钟就能完成!
从这一测试结果来看,GTX285的加速效果跟96GT基本没啥区别,看来在压制低码率的影片时,GPU性能处于过剩状态,没必要使用太好的显卡,瓶颈还是在CPU上面。
● 测试影片:魔兽世界燃烧的远征预告片,1024X436,片长2分47秒
测试结果与前面的RMVB差不多,GTX285与96GT的加速效果依然基本没区别,但CUDA所带来的性能提升幅度更大,几乎达到了纯CPU软解的两倍以上!
● Badaboom抛砖引玉,MediaCoder修成正果:
Badaboom显然只是一个玩具软件,在高端配置上它的性能表现令人非常失望,压制高清视频时也有BUG,也就只能在中低端配置上给手持设备压制低码率视频,但由于不支持RMVB不支持压字幕因此不适合中国国情。
既便如此,我们还是要对Badaboom致以崇高的敬意,这款软件开创了GPU视频编码的先河,可以说为NVIDIA推广CUDA起到了抛砖引玉的作用,此后各类视频编辑、编码、后处理软件如雨后春笋般上市,Badaboom功不可没!
此前我们已经对几款知名的CUDA视频软件做了测试,如Cyberlink MediaShow,vReveal MotionDSP,ArcSoft TotalMedia Theatre等,但没有一款软件能够像MediaCoder这样带来激动人心的感觉,要么性能提升有限,要么效果不是很明显。
MediaCoder(CUDA编码器)带来的并不仅仅是数倍于纯CPU编码的性能提升,它还有通吃一切的完美兼容性(将任何编码的视频转换为H.264编码),完全自定义的输出分辨率、码率、音轨、字幕、封装格式设定等等,最关键的一点:它是一款全免费的国产开源软件!
● 同是CUDA加速,MediaCoder比Badaboom快的真正原因:
Badaboom为了强调GPU的优势、淡化CPU的作用,解码、编码、分辨率转换等能使用GPU处理的全都使用GPU CUDA技术,因此Badaboom的GPU占用率高而CPU占用率低。由于使用了GPU解码器的关系,Badaboom仅能支持H.264、Mpeg2和VC-1三种视频源(CoreAVC CUDA解码器也是如此),而不支持RMVB、DIVX等网络常见的编码。
而MediaCoder只有运算量最复杂的编码器使用了CUDA技术,解码器可以使用常见的任意一种,等CPU算完了再交给GPU进行编码,所以GPU的负载会低一些,但也因此而保证了最完美的兼容性,几乎通吃一切视频格式。在分辨率转换部分,MediaCoder也可以使用CUDA运算,速度会有不小的提升,只要勾选编码器画面处理就表示启用CUDA。
偏重于CPU的MediaCoder只能利用GPU的一小部分资源,因此在低配置双核电脑上的性能不如Badaboom,高配置四核电脑才是其大展身手的地方,这也就是通常所说的高性能计算吧,此时Badaboom由于浪费了CPU资源导致优势全无。
当然,两者性能上最大的区别还是源于CUDA编码器算法,以及视频处理流程的优化,当大量数据往返于CPU与GPU之间时,瓶颈就产生了。其实很多时候CPU与GPU的性能都是很富裕的,时间都浪费在了沟通与等待上面,只有让CPU和GPU分别做最适合他们的任务,分工明确负载合理时,才能让性能产生飞跃!
● CPU+GPU强强联手,电脑性能再创新高:
在民用领域,四核CPU最能发挥优势的应用,应该就是视频编码了。除了常见的烤机软件外,也只有压片才能让四核八线程的i7占用率接近100%。而CUDA一出世就将目标瞄准视频编码,定位的确十分精准。当然以现有计算机的架构来看,GPU取代CPU是不可能的,但有了GPU的辅助,系统整体性能会有质的提高。
MediaCoder在支持CUDA编码器之前,对多核与多线程CPU的支持已经趋于完美。如今首次加入CUDA编码器,虽然对GPU资源的利用率还不够高,但性能提升幅度已经非常明显,相信随着开发团队不断优化与完善,编码效率还能有很大的提升空间!
最后,感谢MediaCoder软件的作者黄轶纯及其开发团队给我们带来一款如此优秀的视频转码软件,感谢他为笔者提供的CUDA编码器及技术支持。作为一款免费的CUDA软件,能够从众多同类商业软件中脱颖而出,着实难能可贵!希望能有更多的朋友关注并支持MediaCoder的发展。■<