劉國柱,王洪林
(青島科技大學 信息科學與技術學院,山東 青島 266061)
數字圖像壓縮技術就是通過一定的壓縮算法,將模擬信號轉換為數字信號,這樣能夠非常有效地降低圖像所占用的存儲空間[1]。目前,一些組織機構已推出了不少的數字圖像壓縮標準,如 H.261、H.263、H.263+、MPEG-1、MPEG-2、MPEG-4 等[2]。 其中,MPEG-4 標準于1999年初正式成為國際標準,該標準注重多媒體系統的交互性和靈活性,是第一個使用戶可在接收端對畫面進行操作和交互訪問的編碼標準[3],被廣泛地應用于視頻監控、視頻會議等領域中。在這些使用實時視頻編碼與傳輸的領域中,不僅涉及到了編碼標準,更重要的是涉及到了碼率控制。碼率控制就是在圖像壓縮編碼過程中,編碼器可以實時地根據網絡傳輸信道的情況來調整編碼參數,以生成適合當前網絡傳輸的視頻流[4]。這樣可以使視頻在通道內傳輸時充分利用帶寬,也就是在帶寬已有條件下傳輸信號時,既不阻塞也不浪費帶寬。目前,基于MPEG-4標準的碼率控制算法有很多,其中比較經典的碼率控制算法為VM8算法[5]。基于編碼器緩沖區水位從某些程度上表征了網絡傳輸信道的情況這一事實,該算法以編碼器緩沖區水位狀況來自適應調整編碼參數。圖1是典型的基于MPEG-4編碼標準和VM8算法的實時視頻編碼和傳輸架構。
在實時視頻的傳輸過程中,由于涉及到了流媒體的發送和接收,所以必須采用流媒體傳輸協議對傳輸進行控制。RTP協議是流媒體傳輸常用的協議,但是由于RTP協議是建立在不進行任何擁塞控制的UDP協議基礎上[6],因此需要在應用層上加入擁塞控制算法。

圖1 MPEG-4和VM8算法的實時視頻編碼和傳輸架構
RTP控制協議RTCP會向RTP會話中的成員周期性地發送丟包率等信息[7],這些反饋信息就是被用作擁塞控制的。近幾年來,越來越多的擁塞控制算法相繼被提出,其中行之有效的一些算法是:基于丟包率和雙丟包率閾值門限的[8-10]。其大體思想是:設定丟包率下閾值和上閾值,當丟包率沒有超過丟包率下閾值時,增加發送速率;當丟包率超過丟包率上閾值時,減少發送速率;當丟包率介于丟包率上、下閾值之間時,發送速率保持不變。此類算法的關鍵是如何設定速率變化的幅度,以減少流的抖動,提高流的平穩特性。
本文對VM8碼率控制算法進行必要的剖析,然后在基于上述擁塞控制機制的基礎上對VM8機制進行改進。實驗證明,改進后的算法能夠使接收端的視頻播放更加的清晰流暢,視覺效果更好。
VM8碼率控制算法大體可分為4個階段[11]:初始化階段、預編碼階段、編碼階段和后處理階段。由于后兩個階段與本文主題沒有太大關聯,本文僅對前兩個階段做詳細的分析。
在初始化階段,編碼器主要完成一些與碼率控制相關的準備工作:(1)采用初始量化參數(典型的Qt=15)編碼第1個I幀。(2)從總位數減去第1個 I幀的編碼位數,得到這個視頻序列所剩余的位數P0。
(3)將編碼器緩沖區初始化到半滿狀態。
預編碼階段主要完成當前幀的目標位數的計算,并通過計算得到的目標位數來得到在編碼階段中會使用到的量化參數。
(1)對目標位數進行初步估計。設t+1時刻的P幀的目標位數的估計值為Bt1,則可通過下面的式子得到初步的估計值:

(2)為了使編碼器緩沖區的水位趨向于50%,對初步目標位數Bt1進行調整:

式中,Ft是t時刻緩沖區的填充容量,γ是緩沖區容量。
(3)為了保證使每幀圖像獲得恒定的質量,編碼器還必須保證每幀有1個最小的目標位數C(這個值是由C=得到的,P是所有 P幀的可用位數,N是 P幀的個0數),所以通過下式進行判斷得到Bt3:

(4)最后的調整是查看Bt3對編碼器緩沖區飽和度的影響。為了避免緩沖區的上溢和下溢,為緩沖區設置一個安全邊界值m。如果Bt3+Ft>(1-m)×γ,那么為了避免緩沖區上溢,調整目標位數為 Bt4=(1-m)×γ-Ft;如果 Bt3+Ft-C (5)根據Bt5計算得到量化參數。 從對VM8算法的分析可以看出,在預編碼階段進行的目標位數的調整過程中,僅僅是考慮到了編碼器緩沖區的填充狀態,但是緩沖區的填充狀態僅僅代表了當前和過去的網絡傳輸的狀態,無法預測未來的傳輸狀態,這種缺乏預測性的做法,會影響到編碼的圖像質量。下面將在基于丟包率和雙丟包率閾值門限的擁塞控制算法的基礎上,通過當前丟包率和丟包率閾值對未來的發送速率進行預測,在計算目標位數時,參考前面的預測結果,來調整目標位數,以此來完成對VM8算法的改進。 通過當前丟包率(設為 Ploss),丟包率下閾值(設為Ploss_min)和丟包率上閾值(Ploss_max)對未來的發送速率的變化做出預測,分為3種狀態。 (1)Ploss 這種狀態下,傳輸信道可視為處于“輕載”狀態,未來一段時間內,發送速率會持續增加。 (2)Ploss_min≤Ploss 這種狀態下,傳輸信道可視為處于“滿載”狀態,未來一段時間內,發送速率將保持穩定,不再發生變化。 (3)Ploss≥Ploss_max 這種狀態下,傳輸信道可視為處于“阻塞”狀態,未來一段時間內,發送速率會持續下降。 基于上述的幾種情況對VM8算法在預編碼階段進行改進。改進的切入點是預編碼階段的第(2)步:即對Bt1得到Bt2的算法進行改進。 原算法在該步驟的做法是:固定地采用0.5作為緩沖區目標水位參數。而改進后的算法會根據2.2節分析得到的對未來發送速率預測的3種狀態,動態地決定緩沖區目標水位參數。該步驟改進后的算法如下: (1)首先通過當前丟包率和丟包率閾值得出未來發送速率的屬于2.2節中的哪種狀態。 (2)由不同的狀態得到不同的水位參數。設第i種狀態對應的參數為 βi(i=1,2,3),下面對每種狀態對應的水位參數進行分析。 在狀態1下,發送速率將持續增加,編碼器緩沖區讀取速度會持續增長,不太可能發生緩沖區上溢,因此可以設定大于0.5的水位參數。 在狀態2下,由于發送速率不再變化,因此可設置等于0.5的水位參數。 在狀態3下,由于發送速率會下降,編碼器緩沖區讀取速度會持續降低,為了避免有可能發生的緩沖區上溢,因此有必要設置小于0.5的水位參數。 由上面的分析得出:1>β1>0.5=β2>β3>0。 (3)根據水位參數進行目標位數的調整,使目標位數向水位參數表示的水位處趨近。一共可分為3種情況: ①若 Bt1+Ft>βi×γ,則 Bt2=Bt1-θR(Bt1+Ft-βi×γ); ②若 Bt1+Ft=βi×γ,則 Bt2=Bt1; ③若 Bt1+Ft<βi×γ,則 Bt2=Bt1+θA(Bt1+Ft-βi×γ)。 其中,Ft是 t時刻緩沖區的填充容量,γ是緩沖區容量,θR是增長因子,θA縮小因子。本文中,θR和 θA均取值為 1/2,水位參數 β1、β2、β3分別取值:0.6、0.5、0.4。 通過上面的算法調整,可以清楚地看出:當預測發送速率會增長的時候,算法將不再會以0.5作為緩沖區目標水位參數,而是取大于0.5的值作為緩沖區目標水位參數。這樣,當前幀將獲得更多的位數用來存放編碼信息,圖像質量自然地得到了提高。當預測發送速率會持續降低的時候,取小于0.5的值作為緩沖區目標水位參數。這樣,能夠有效地避免由于發送速率下降造成的緩沖區水位上升,乃至臨迫近上安全邊界,這樣可以避免VM8算法在預編碼階段第(4)步中對目標位數的削減,從而避免了圖像質量的下降。 為了驗證改進后的VM8碼率控制算法能夠提高圖像的質量,通過一些實驗來進行測試。使用2臺電腦進行實驗:1臺是作為發送端,負責視頻的編碼和發送;另1臺作為接收端,負責視頻的接收和回放。2臺電腦的網絡帶寬均為1 Mb/s。為了使實驗有可重復性,視頻源不采用動態采集方式,而是采用已經采集好的視頻文件來模擬視頻采集,視頻長度是 2 min,包含 3 482個 VOP。視頻傳輸擁塞控制機制采用參考文獻[8]提出的算法,算法中的丟包率下閾值采用2%,丟包率上閾值采用3%。此外,VM8原始算法和改進的算法在初始化階段中的初始量化參數均取典型值Qt=15。設定不同的編碼器緩沖區大小,多次實驗后結果如表1所示。 表1 實驗結果比較 表中的“目標位數的削減次數”指的是在預編碼階段由于當前幀臨迫近上安全邊界,為了避免緩沖區溢出而對目標位數做出消減的次數,此操作會降低編碼后的圖像質量。 從實驗結果可以看出,編碼區緩沖區越小,改進后的VM8算法效果越明顯。 本文介紹了基于MPEG-4編碼標準和VM8算法的實時視頻編碼和傳輸架構,對VM8碼率控制算法作了必要的剖析,并針對該機制僅僅基于編碼區緩沖,缺乏對未來傳輸狀態進行預測的缺點,做了相應的改進。最后通過實驗證明,改進后的VM8算法能夠提高編碼后的圖像質量。由于本文改進的算法是建立在基于丟包率和雙丟包率閾值門限的擁塞控制算法地基礎上的,因此不可避免地有一定的局限性。今后將就如何突破不同擁塞控制算法的局限進行研究,得到應用更加廣泛的碼率控制算法。 [1]周慧燦.數字視頻的網絡傳輸關鍵技術研究[D].長沙:湖南大學,2004. [2]張靜,張春田.視頻傳輸中的碼率控制技術[J].電路與系統學報,2005,10(3):104. [3]畢厚杰.新一代視頻壓縮編碼標準-H.264/AVC[M].北京:人民郵電出版社,2006. [4]高奎.實時流媒體系統若干關鍵技術的研究[D].北京:中國科學院研究生院,2005. [5]MA, S, WEN G, YAN L.Rate-distortion analysis for H.264/AVC video coding and its application to rate control[J].Circuits and Systems for Video Technology,IEEE Transactions on,2005,15(12):1533. [6]STEVENSW R.TCP/IP詳解,卷 1[M].北京:機械工業出版社,2006:107. [7]SCHULZRINNE H, CASNER S.RTP:A transport protocol for real-time applications[EB/OL].[2009-08-15].http://www.ietf.org/rfc/rfc1889.txt. [8]高東日,魏海平,姜東.網絡自適應傳輸控制策略研究[J].計算機工程,2006,32(22):141-143. [9]王繼先.視頻傳輸控制方法的研究(基于 RTP)[D].北京:電子科技大學,2004:24-25 [10]嚴德汗.城域網數字視頻監控系統設計實現及其自適應傳輸控制策略研究[D].武漢:華中科技大學,2004:29-34. [11]孫哲.基于MPEG-4的運動估計和碼率控制技術的研究[D].北京:電子科技大學,2005:35-39.2 VM8碼率控制機制的改進
2.1 問題的提出
2.2 發送速率變化的預測
2.3 算法改進
3 實驗驗證
