PSP/iPhone片友必看!GPU视频编码测试
[泡泡网显卡频道 12月29日] 将时间回溯到一年前的今天,也许还有很多人都在讨论AMD的UVD解码技术是多么的强大,高清视频的解码完全可以依靠GPU来完成,而与此同时可以利用CPU做更多的工作。是的,去年的今天,我们确实还在讨论GPU的解码技术,包括NVIDIA的全系列产品线都拥有了硬件解码高清视频的能力。
俗话说三十年河东,三十年河西,而在发展速度甚至达到两倍于摩尔定律的显卡界,何需等到三十年。早在半年前,利用GPU进行硬件(转码)编码的技术已经逐步成熟,NVIDIA推出的CUDA显卡通用计算开发工具,让GPU几乎可以模拟所有的CPU运算,其中最重要的一个特点就是利用GPU进行视频编码与转码。而AMD虽然在这方面比较落后,但也于前一段时间正式发布了Stream技术,让GPU编码从理论走到了现实。
也许很多人会问,为什么要选择使用GPU来进行视频转码处理呢?事实上,除了在进行视频转码(压片)处理的同时可以利用CPU做其他的工作以外,还有另外的诸多优势:
● 使用GPU进行视频转码速度更快;
● GPU相对于CPU来说更加便宜(相同处理能力下);
● 将显卡更加有效的利用,也不再是玩游戏需要显卡。
当然,使用GPU进行视频转码最大的理由就是低成本高效率。NVIDIA宣称使用GPU进行视频转码的速度可以达到CPU数倍,那么到底是不是这样呢?今天,我们就是要来看看使用GPU进行视频转码到底有多快!
前面我们提到,使用GPU进行视频编/转码计算实际上就是利用了GPU通用计算技术。说起GPU通用计算,我们就不得不提起NVIDIA的CUDA技术。
大家都知道,显卡的硬件规模远远要比CPU更加复杂,早在多年前就有人构想利用显卡强大的硬件规模实现其他方面的计算,但是一直没有大规模的实现。NVIDIA终于在2008年推出了CUDA技术,任何用户都可以通过CUDA开发包,开发出利用显卡来计算的程序。
简单的说,CUDA就是显卡处理通用计算的一个接口,曾经只能执行图形渲染的GPU终于可以处理其他方面的计算。并且,显卡进行通用计算还有一个最大的优势,那就是并行计算。我们先来看看什么是串行计算,什么又是并行计算:
串行计算是指在单个中央处理器单元上对数据进行处理,并行计算是相对于串行计算来说的,其在时间和空间上都比串行计算效率更高,时间上的并行就是指流水线技术,而空间上的并行则是指用多个处理器并发的执行计算。
CPU就是串行计算的代表,当然我们也看到其向并行计算发展的趋势,比如目前的双核、四核CPU。但是,CPU永远也无法跟上显卡的发展速度,比如如今NVIDIA最强大的单卡GTX280拥有240个流处理器,也就是相当于240核同时并发性的计算,可以想象其计算能力有多强大。
当然,并不是说CPU就完全没用,今后的PC主要还是CPU与GPU搭配使用,CPU+GPU的计算就是我们所谓的异构计算。
CUDA技术推出以后,GPU通用化的技术受到了各行各业的支持,医学、地理、股票、期货、金融等凡是涉及到大规模数据计算的时候,都需要CUDA。所以,从目前的这种现状来看,GPU的重要性正在逐步取代CPU。
视频转码是NVIDIA GPU CUDA应用的一个重要方面,而且这个对于普通用户来说意义重大。因为我们经常都可能遇到外出旅游拍摄的视频,需要转换/压缩成其他格式的这种事情。NVIDIA也特别强调了在CUDA在视频转换方面的应用。
那么,使用GPU进行视频转码操作到底有多快,我们只能用测试的数据来证明。
为了使测试更加有意义,我们使用5款显卡分别给iPhone和PSP进行视频转码,然后再用E8200双核心CPU、QX9770四核心CPU进行同样的视频转码操作,进行速度对比。
测试的片源我们选择了两张正版DVD光盘和一段高清视频,这样可以从支持的格式上进行验证。下面我们来看一看本次测试产品的具体硬件规格,测试的结果能不能和硬件的规格成正比。
● Geforce 9800GT 799元
具体硬件规格:
112个流处理器;
512M/256Bit显存规格;
默认频率600/1800MHz。
● Geforce 9600GT 680元
具体硬件规格:
64个流处理器;
512M/256Bit显存规格;
默认频率650/1800MHz。
● Geforce 9600GSO 499元
具体硬件规格:
48个流处理器;
256M/256Bit显存规格;
默认频率650/1800MHz。
● Geforce 9500GT
具体硬件规格:
32个流处理器;
256M/128Bit显存规格;
默认频率550/1600MHz。
● Geforce 9400GT
具体硬件规格:
16个流处理器;
256M/128Bit显存规格;
默认频率460/1200MHz。
以上介绍的就是本次参测的5款显卡,可以看出上至9800GT、下至9400GT的产品都在一起,而这一个价格段的产品也是消费者关注最多的产品。显卡的价格也从388元至799元全部覆盖。
除了显卡之外,我们分别使用了一颗双核的E8200 CPU和一颗4核心的QX9770 CPU,下面是这两款CPU的简单规格:
Intel Core 2 Duo E8200 2.66GHz L2=6144K 45nm 1000元
Intel Core 2 Extreme QX9770 3.2G L2=6144K×2 45nm 10800元
● GPU视频转换工具:BadaBoom
在测试之前,我们首先来看一下本次测试所涉及到的视频转换工具。NVIDIA推荐的GPU转换工具为BadaBoom,这是NVIDIA联合Elemetal制作的Geforce GPU视频转码工具。
这个就是BadaBoom的软件界面,现在BadaBoom的最新版是1.10,相对于之前的版本来说,1.10版的速度更快,界面更加美观,同时支持更多视频源格式和目标格式,比如可以直接压缩成Youtube视频,甚至可以支持虚拟光驱。下图是1.10版本的界面。
经过笔者的测试,很大一部分视频格式都可以被BadaBoom支持,可以说所有编码格式的视频都能够支持。只不过互联网上有部分视频采用的非标准容器封装的,有可能导致BadaBoom不能正确识别。
BadaBoom在目标视频的输出上可以直接支持数十种设备,即使这数十种分辨率中都没有你想要的,你还可以完全自定义视频分辨率,非常方便。不过需要提醒大家的是,BadaBoom是一款共享软件,从网上下载之后只有30次的试用期,过期后则必须购买正式版本。
● CPU视频转换工具:MediaCoder
MediaCoder是一个免费的通用音频/视频批量转码工具,它将众多来自开源社区的优秀音频视频编解码器和工具整合为一个通用的解决方案,可以将音频、视频文件在各种格式之间进行转换。MediaCoder具备一个可扩展的架构和丰富的功能,可满足各种场合下的转码需求。目前,MediaCoder已经拥有上百万分布在全世界170多个国家的用户。
功能和特点
基于优秀的众多的开源编解码后台,能够解码和编码的格式多;
良好的多线程设计,为多核处理器优化(PCPOP评),在四核上可达到90%以上的平均CPU使用率;
极为丰富的可调整的编码参数;
全部编解码器自带,不依赖于系统的编解码器和任何组件;
良好的可扩展的程序架构,快速适应新的需求,不断增加新的格式的支持;
利用脚本语言扩展的界面,支持众多影音设备。
典型应用
提高影音文件压缩率,减小其文件尺寸;
转换至可在各种影音设备上播放的影音文件,如MP3播放器、MP4播放器、手机、PDA、VCD/DVD播放机;
提取视频文件中的音轨并转换成MP3、AAC、WMA等音频文件;
修复和改善一些损坏的、部分下载的或质量不佳的影音文件;
不过,相对于BadaBoom来说,MediaCoder最大的优势就是可以完美支持字幕显示,不过在笔者的测试中,MediaCoder根本无法支持光驱和虚拟光驱读取,官方论坛有网友反映据说是与Vista兼容性不好。
在使用显卡进行转码操作中,我们在BadaBoom的软件里将输出画质都设定到最高,同时将分辨率设置为全屏输出,这样输出的结果完全可以达到最高质量。下图是设置界面:
注:本次测试除特殊说明外均采用BadaBoom 1.10版进行测试,上截图来自BadaBoom 1.0版。
由于本次测试有两张DVD光盘(《加勒比海盗》和《终结者3》),为了避免光驱的读取速度造成瓶颈,所以本次测试都将DVD的内容做成ISO,然后用虚拟光驱加载,完全避免了因光驱读取速度造成的转换瓶颈。另外,还有一段码率高达80Mbps的高清测试片,主要测试高清视频的转码能力。
在使用MediaCoder进行CPU转码的测试中,关于文件码率、封装格式等的设定我们都直接参靠通过BadaBoom转换后输出的视频信息,也就是说CPU和GPU测试的环境和输出视频的压缩率、文件码率,甚至音频部分的信息等都完全一样,保证测试时间对比度准确性。
本次测试主要以给iPhone转片为主,所有视频都被每一款显卡和CPU转换成iPhone格式。由于时间关系,PSP格式的视频只是转换了一段高清视频,没有全部转换,但是已经足以体现出GPU视频转换与CPU视频转换的速度差异了。
经过前面的介绍,我们已经了解了本次测试的目的、方法以及测试环境,下面我们正式来看看测试的成绩,首先我们看各大转码硬件(5款显卡与两款CPU)将《加勒比海盗》DVD版转换成iPhone格式所花费的时间!
● 转换片源:《加勒比海盗》DVD版/片长:143分钟/格式:For iPhone
● Geforce 9800GT/转换时长:25分50秒
● Geforce 9600GT/转换时长:28分50秒
● Geforce 9600GSO/转换时长:33分05秒
● Geforce 9500GT/转换时长:48分02秒
● Geforce 9400GT/转换时长:1小时21分10秒
● Intel Core 2 Extreme QX9770/转换时长:33分18秒
● Intel Core 2 Duo E8200/转换时长:1小时09分29秒
● 转换片源:《终结者3》DVD版/片长:110分钟/格式:For iPhone
● Geforce 9800GT/转换时长:19分46秒
● Geforce 9600GT/转换时长:21分57秒
● Geforce 9600GSO/转换时长:25分22秒
● Geforce 9500GT/转换时长:36分13秒
● Geforce 9400GT/转换时长:1小时00分26秒
● Intel Core 2 Extreme QX9770/转换时长:28分42秒
● Intel Core 2 Duo E8200/转换时长:58分41秒
● 转换片源:无名高清视频片段/片长:1分44秒/格式:For iPhone
● Geforce 9800GT/转换时长:47秒
● Geforce 9600GT/转换时长:47秒
● Geforce 9600GSO/转换时长:45秒(参考成绩)
● Geforce 9500GT/转换时长:54秒
● Geforce 9400GT/转换时长:1分34秒
● Intel Core 2 Extreme QX9770/转换时长:58秒
● Intel Core 2 Duo E8200/转换时长:1分19秒
● 转换片源:无名高清视频片段/片长:1分44秒/格式:For PSP
● Geforce 9800GT/转换时长:40秒
● Geforce 9600GT/转换时长:47秒
● Geforce 9600GSO/转换时长:45秒(参考成绩)
● Geforce 9500GT/转换时长:51秒
● Geforce 9400GT/转换时长:1分24秒
● Intel Core 2 Extreme QX9770/转换时长:52秒
● Intel Core 2 Duo E8200/转换时长:1分12秒
前面我们说到,本次测试采用的BadaBoom软件为1.10版,而上一个版本是1.0版,在测试的时候,笔者在国外论坛上看到有网友测试,BadaBoom 1.10版在效率上会比1.0版本快很多。为了印证,笔者还专门找了一款1.0版本的BadaBoom,进行了两三个项目的测试,结果证明1.10版本的速度确实要比1.0版本快不少。比如我们使用9800GT显卡,搭配1.0版本的BadaBoom为iPhone转换《加勒比海盗》DVD版,花费的时间是32分35秒;
而如果使用1.10版的BadaBoom,进行同样的测试项目,所花费的时间为25分50秒,如下:
我们继续使用9800GT,来为iPhone转换《终结者3》DVD版本,使用1.0版本的BadaBoom,花费的时间是23分20秒。
而同样适用1.10版本的BadaBoom,进行同样的测试,只花了19分46秒,如下:
再来看看9500GT,使用1.0版本的BadaBoom,为iPhone转《加勒比海盗》,花费的时间为58分32秒。
而使用1.1版本的BadaBoom,所花费的时间缩短到了48分02秒:
同样,使用9500GT为iPhone转《终结者3》,1.0版本BadaBoom软件下花费的时间为44分14秒。
而当将软件升级到1.1版本的BadaBoom,时间则缩短到了36分13秒。
从这几个简单的测试项目中我们不难看出,1.10版本的BadaBoom确实在转换效率上要比上一个版本高很多,所以强烈推荐大家在进行转换操作的时候,选择最新版的软件,不仅可以支持更多的格式,同时转换速度还将会大幅度提高。
前面我们测试了很多很多项目,但是如果使用GPU转换出来的视频不能正常播放,这将是本次测试的一大笑柄。笔者分别对这些转换后的视频,在iPhone上进行了测试,请看视频:
● 《加勒比海盗》在iPhone上的播放情况
● 《终结者3》在iPhone上的播放情况
● 高清视频在iPhone上的播放情况以上3段视频的成功播放,已经印证了使用GPU转换的视频没有任何问题,完全可以使用,但唯一的遗憾是没有字幕。
本文的测试部分到这里也就告一个段落了,从前面的测试中我们可以看出,GPU依靠着强大的并行计算能力,在视频编码这方面的性能确实要远远大于同样价位的CPU。比如我们可以看到,售价超过万元的优异4核心QX9770 CPU,进行视频编码计算的能力只能和零售价格为499元的9600GSO媲美,甚至在有些时候还不如9600GSO;而双核心的E8200就更不用说了,稍微能比9400GT快一点点。
很显然,使用GPU进行视频编码计算一定是未来的主流,但是也并不是完全没有遗憾,字幕的支持就是一个很大的问题,至于BadaBoom会不会解决这个问题,什么时候能够解决这个问题,目前都还没有答案。
有很多朋友说BadaBoom对视频格式的支持太少,笔者认为这完全是由于互联网上的视频封装方式太怪异的问题导致,目前互联网上的视频封装容器花样太多,而BadaBoom又主要面向的是正版视频,恐怕确实支持的会少一些。但是据笔者了解,BadaBoom可以支持几乎所有编码格式的视频,支持不了仅仅是因为视频封装容器的问题。
不过,BadaBoom收费的问题确实有点难办,从官方网站下载的BadaBoom软件,只能有30次的免费试用,并且转换的视频还有Logo,在这一点上无法和一些免费的软件相比。
另外,文章前面笔者提到了CPU视频编码软件MediaCoder无法读取光盘和虚拟光驱额的问题。而在本文临近截稿时,MediaCoder发布了最新的版本MediaCoder 0.6.2.4230,在更新Log中有这样一个项目:[fix] Add Track feature blocking issue on some systems,估计是已经解决了这个问题,感兴趣的朋友可以下载试试。■<