接下来,我们将对MediaCoder进行测试,并和Badaboom作一个对比。测试平台主要是
Phenom Ⅱ X4 810+GeForce 9500 GT、Phenom Ⅱ X4 810+GeForce GTX 275、Phenom Ⅱ
X4 955+GeForce GTX 275和AMD Phenom Ⅱ X4 810+Radeon HD 4850的配置。前面三个平台主要考虑不同的显卡和处理器组合,考察对视频转码结果的影响,而解码软件就是Badaboom和
MediaCoder。
我们需要将这段视频转换到iPod touch上观看,设置的视频分辨率为480×320,规格为main,等级为4.1,B帧数为2,码率为1500kbps,转换容器为mp4。刚开始测试时,我们发现Badaboom无法加载这段视频。
Badaboom 1.2版本已经加入了中文界面,但是还是不支持中文目录和中文文件名,仍需要改进。这段视频片段大约有2分多钟,我们首先在Phenom Ⅱ X4 810+GeForce 9500 GT的平台上进行测试。Badaboom转换完花了119秒,平均帧率为40.7fps,是播放速度的1.7倍,转换速度非常快了。而在MediaCoder中,用X264编码器,速度要明显慢一些,整个转换完需要147秒。接下来,我们打开MediaCoder的CUDA编码器,测试结果是151秒,相比X264编码器还慢一点。看来在这个转码操作中MediaCoder没有发挥出CUDA的优势。我们又尝试升级处理器和显卡,MediaCoder的
CUDA编码器和X264之间始终没有拉开差距。后,我们把显卡更换为了ATI RadeonHD 4850,转码时间才延长到164秒。
为什么在这段转码过程中CUDA没有发挥其应有的作用呢?这是因为码率和分辨率设置过小,主要的负载在解码上而不是在编码上。由于编码负载太小,限制了CUDA的发挥,所以我们无法体会到CUDA的好处。
接下来,我们改变了测试方法,转码一段视频到高清播放机上。这次的输出画面改为原始尺寸,码率为20Mbps tow pass,其它设置不变。视频编码负载上来之后,CUDA编码器和X264编码器的性能差别一下就体现出来了。在高端的Phenom Ⅱ X4 955+GeForce GTX 275平台中,
MediaCoder CUDA仅用78秒就完成了转码过程,而MediaCoder X264则用了273秒,速度是处理器编码的3.5倍。而Badaboom的速度就没有MediaCoder CUDA快了,耗时101秒。
其实,MediaCoder软件不仅仅是用到了显卡的通用计算能力,还调用了处理器。我们从三种转码方式的处理器占用率可以看出端倪。MediaCoder X264转码时,处理器占用率达到了99%,处理器处于满负荷状态。这个时候如果要处理其它任务,电脑就力不从心了。
Badaboom转码时,处理器占用率很低,一般在5%~10%左右,主要利用显卡的通用计算能力。而MediaCoder CUDA转码时,除了显卡发挥作用外,处理器也同时被调用。处理器的占用率在80%~90%,虽然很高但是并没有达到满负载。处理器更换为Phenom Ⅱ X4 810后,MediaCoder X264的转码时间受到明显影响,从273秒增加到了331秒。而MediaCoder CUDA的转码时间也略有延长,增加了7秒。只有在Badaboom里,转码时间仍然不变。
我们再进一步把显卡降低到GeForce 9500 GT这个档次后进行测试。MediaCoder X264转码是利用处理器解码和编码,所以成绩几乎没有变化。而用显卡核心工作的MediaCoder CUDA和
Badaboom则受到了非常明显的影响。之前我们使用的GeForce GTX 275显卡有240个流处理器,定位高端,而GeForce 9500 GT仅有32个流处理器,性能差距明显。在MediaCoder CUDA转码过程中,处理器也发挥了很大的作用,所以性能只下降了一倍。只利用到显卡的Badaboom软件的表现就非常差了,甚至低于了MediaCoder X264处理器转码的成绩。