一、下面我们先来看看高清视频究竟从哪些方面提升了要求:
(一)首先便是视频流量的加大。这是最为直观的一个提升元素,我们可以参照下面的表格,表格中只是简单的提出了“视频源”的流量对比,但其实高清视频的“不同格式”更决定了流量的不同。
可以看出,DVD视频的数据流量只有约9.5Mb/s,但是最高的蓝光可以达到40Mb/s以上,提升了4倍以上,无疑这是硬件配置提升的一个主要原因,因为需要处理的数据量增大了很多。
(二)其次便是编码格式的复杂度。我们知道每种编码格式都有其自身的算法,优秀的算法可以将视频压缩到更小的体积,但是还原这种算法却需要更强的计算能力。H.264高清编码格式就是典型的代表。也许有些读者会碰到一些高清视频,但是播放要求并不高,那可能它就是采用一些简单的算法,比如Mpeg2的高清编码格式,但是遇到类似H.264编码格式,就会出现无法流畅播放的情况。
现在看来,H.264因为优秀的算法取得了广泛的支持,它的算法虽然复杂,但是能获得最高的压缩同时视频细节损失很小,因此想要在未来流畅的播放高清视频,H.264编码视频是必须通过的一个考验。当然我们也不能忽视VC-1编码,它是微软力推的编码格式,也受到了广泛的支持,其要求虽然略低,但同样造成了目前很多主流电脑的“播放困难”。至于Mpeg2高清编码,其要求很低,未来发展的前景也不突出。
我们再来了解一下,这些编码在电脑上是如何被处理器的。视频编码的处理一般分为几个步骤,每个步骤会完成相应的任务,而解码的时候也会存在这些步骤,从而达成影片的顺利播放。那么谁来处理这些工作呢,早期在电脑上,解码播放的大部分步骤都是CPU来处理,也就是处理器软件解码(以下简称软解)播放,这也就是CPU占用率为什么会很高的原因。
简单的来说,目前任何一台主流电脑或者说哪怕几年前的电脑,使用处理器软解播放之前所有的标清视频都没有任何问题。而高清视频中,Mpeg2高清编码的视频要求最低,VC-1编码的视频其次,而要求最高的H.264高清视频可能会导致很多老式的电脑都无法流畅播放。
虽然现在硬件发展速度飞快,用户可以采用高档四核处理器把软解播放高清的CPU占用率控制在50%以下,但这类处理器的价格却很高,装机成本大幅增加。而双核处理器虽然便宜了不少,但软解播放的CPU占用率又可能会很高,甚至高到无法流畅播放的程度。
如果想要减轻CPU的负担,则必须有另一个配件来接手编码处理工作,显卡自然成为了最佳选择,也就是用显卡里的引擎替代CPU完成视频解码的处理任务,从而释放CPU的负载。CPU作为通用处理器,进行视频解码这类事效率有限,但是显卡却可以直接硬件集成视频解码引擎,从而达到极高的功效。
二、高清视频的编码流程
那么究竟高清编码的步骤有哪些,哪些又是负载最高的部分呢?以H.264视频举例而言,分为四个主要部分(见下图)。图中的四个方块基本就是H.264解码的四个最主要步骤,也是资源消耗的主要四个部分,其中又以第一步的“CAVLC/CABAC解码”最为消耗运算资源,这方面远高于其他三步(简单的说,CAVLC/CABAC是H.264编码规范中两种不同的算法,际俏了提高压缩比,其中CABAC比CAVLC压缩率更高,但解码时自然也要求更高)。
三、高清视频的解码流程
我们下面来看看主流的3种编码格式,包括Mpeg2、VC-1、H.264的解码流程对比(见下图)。可以看出,几种编码格式还是有不少区别的,这也是造成几种编码格式要求不同的原因,H.264编码格式最为复杂,因此系统要求最高,VC-1略有降低,但是也比Mpeg2高得多。
其它编码格式与H.264类似。
四、高清解码资源消耗分析
那么究竟哪个步骤最为消耗CPU占用率呢?下面的测试对比应该最能说明问题(见下图)。对比的视频包括Mpeg2和H.264(AVC),其中上面我们讲到的四个步骤都有涉及。显而易见,“流处理”是所有编码格式中最为消耗处理器运算的部分,但是Mpeg2视频的这部分还并不会造成很大的困扰,因为CPU的占用率还不到2%。
但是对于H.264来说,问题就出现了,20Mb/s编码率的视频流处理过程就会达到不小的CPU占用率,40Mb/s的高编码率视频更为夸张,流处理的过程CPU占用率上升极快,加上别的处理,总CPU占用率很高毫不奇怪。
上文已经提到,这四个步骤的处理配件不同,主要是CPU和显卡。在之前,CPU因为处理了更多的步骤,所以占用率高居不下,因此如果显卡能承担越多的解码步骤,CPU就能释放更多的负载,以保证视频播放的流畅。
下图H.264的解码过程很好的说明了问题。如果显卡不承担任何步骤(图解第一行),那么CPU占用率很高,甚至根本无法流畅播放;如果显卡能实现后两个步骤的解码处理(图解第二行),CPU可以获得部分解放,但是对于比较关键的、负载最大的“流处理”,部分显卡还不能实现,所以CPU占用率有所下降,但是仍然偏高。
通过具有H.264硬件解码引擎的显卡,就可以完成H.264编码的全部4个处理步骤(图解第三行),也就是实现全程解码,这就是它们能让H.264高清视频播放的CPU占用率大幅度下降的根本原因。既然显卡完成了所有的高清解码处理,那么CPU自然就空闲了。而我们所谓的部分解码,就是CPU仍然承担一定的处理任务,因此占用率仍然要高出不少。