【導讀】眾所周知,高清視頻相對于rmvb、DVD等標清視頻,播放起來對于電腦硬件要求的提升是無疑的。那么高清視頻編解碼的技術難點在哪?本文用三個方法來幫你攻克難關。
一、下面我們先來看看高清視頻究竟從哪些方面提升了要求
(一)首先便是視頻流量的加大。這是最為直觀的一個提升元素,我們可以參照下面的表格,表格中只是簡單的提出了“視頻源”的流量對比,但其實高清視頻的“不同格式”更決定了流量的不同。
可以看出,DVD視頻的數(shù)據(jù)流量只有約9.5Mb/s,但是最高的藍光可以達到40Mb/s以上,提升了4倍以上,無疑這是硬件配置提升的一個主要原因,因為需要處理的數(shù)據(jù)量增大了很多。
(二)其次便是編碼格式的復雜度。我們知道每種編碼格式都有其自身的算法,優(yōu)秀的算法可以將視頻壓縮到更小的體積,但是還原這種算法卻需要更強的計算能力。H.264高清編碼格式就是典型的代表。也許有些讀者會碰到一些高清視頻,但是播放要求并不高,那可能它就是采用一些簡單的算法,比如Mpeg2的高清編碼格式,但是遇到類似H.264編碼格式,就會出現(xiàn)無法流暢播放的情況。
現(xiàn)在看來,H.264因為優(yōu)秀的算法取得了廣泛的支持,它的算法雖然復雜,但是能獲得最高的壓縮同時視頻細節(jié)損失很小,因此想要在未來流暢的播放高清視頻,H.264編碼視頻是必須通過的一個考驗。當然我們也不能忽視VC-1編碼,它是微軟力推的編碼格式,也受到了廣泛的支持,其要求雖然略低,但同樣造成了目前很多主流電腦的“播放困難”。至于Mpeg2高清編碼,其要求很低,未來發(fā)展的前景也不突出。
我們再來了解一下,這些編碼在電腦上是如何被處理器的。視頻編碼的處理一般分為幾個步驟,每個步驟會完成相應的任務,而解碼的時候也會存在這些步驟,從而達成影片的順利播放。那么誰來處理這些工作呢,早期在電腦上,解碼播放的大部分步驟都是CPU來處理,也就是處理器軟件解碼(以下簡稱軟解)播放,這也就是CPU占用率為什么會很高的原因。
簡單的來說,目前任何一臺主流電腦或者說哪怕幾年前的電腦,使用處理器軟解播放之前所有的標清視頻都沒有任何問題。而高清視頻中,Mpeg2高清編碼的視頻要求最低,VC-1編碼的視頻其次,而要求最高的H.264高清視頻可能會導致很多老式的電腦都無法流暢播放。
雖然現(xiàn)在硬件發(fā)展速度飛快,用戶可以采用高檔四核處理器把軟解播放高清的CPU占用率控制在50%以下,但這類處理器的價格卻很高,裝機成本大幅增加。而雙核處理器雖然便宜了不少,但軟解播放的CPU占用率又可能會很高,甚至高到無法流暢播放的程度。
如果想要減輕CPU的負擔,則必須有另一個配件來接手編碼處理工作,顯卡自然成為了最佳選擇,也就是用顯卡里的引擎替代CPU完成視頻解碼的處理任務,從而釋放CPU的負載。CPU作為通用處理器,進行視頻解碼這類事效率有限,但是顯卡卻可以直接硬件集成視頻解碼引擎,從而達到極高的功效。
二、高清視頻的編碼流程
那么究竟高清編碼的步驟有哪些,哪些又是負載最高的部分呢?以H.264視頻舉例而言,分為四個主要部分(見下圖)。圖中的四個方塊基本就是H.264解碼的四個最主要步驟,也是資源消耗的主要四個部分,其中又以第一步的“CAVLC/CABAC解碼”最為消耗運算資源,這方面遠高于其他三步(簡單的說,CAVLC/CABAC是H.264編碼規(guī)范中兩種不同的算法,際俏了提高壓縮比,其中CABAC比CAVLC壓縮率更高,但解碼時自然也要求更高)。
三、高清視頻的解碼流程
我們下面來看看主流的3種編碼格式,包括Mpeg2、VC-1、H.264的解碼流程對比(見下圖)??梢钥闯?,幾種編碼格式還是有不少區(qū)別的,這也是造成幾種編碼格式要求不同的原因,H.264編碼格式最為復雜,因此系統(tǒng)要求最高,VC-1略有降低,但是也比Mpeg2高得多。
其它編碼格式與H.264類似。
四、高清解碼資源消耗分析
那么究竟哪個步驟最為消耗CPU占用率呢?下面的測試對比應該最能說明問題(見下圖)。對比的視頻包括Mpeg2和H.264(AVC),其中上面我們講到的四個步驟都有涉及。顯而易見,“流處理”是所有編碼格式中最為消耗處理器運算的部分,但是Mpeg2視頻的這部分還并不會造成很大的困擾,因為CPU的占用率還不到2%。
但是對于H.264來說,問題就出現(xiàn)了,20Mb/s編碼率的視頻流處理過程就會達到不小的CPU占用率,40Mb/s的高編碼率視頻更為夸張,流處理的過程CPU占用率上升極快,加上別的處理,總CPU占用率很高毫不奇怪。
上文已經提到,這四個步驟的處理配件不同,主要是CPU和顯卡。在之前,CPU因為處理了更多的步驟,所以占用率高居不下,因此如果顯卡能承擔越多的解碼步驟,CPU就能釋放更多的負載,以保證視頻播放的流暢。
下圖H.264的解碼過程很好的說明了問題。如果顯卡不承擔任何步驟(圖解第一行),那么CPU占用率很高,甚至根本無法流暢播放;如果顯卡能實現(xiàn)后兩個步驟的解碼處理(圖解第二行),CPU可以獲得部分解放,但是對于比較關鍵的、負載最大的“流處理”,部分顯卡還不能實現(xiàn),所以CPU占用率有所下降,但是仍然偏高。
通過具有H.264硬件解碼引擎的顯卡,就可以完成H.264編碼的全部4個處理步驟(圖解第三行),也就是實現(xiàn)全程解碼,這就是它們能讓H.264高清視頻播放的CPU占用率大幅度下降的根本原因。既然顯卡完成了所有的高清解碼處理,那么CPU自然就空閑了。而我們所謂的部分解碼,就是CPU仍然承擔一定的處理任務,因此占用率仍然要高出不少。