1. 程式人生 > >H264三種位元速率控制方法(CBR, VBR, CVBR)

H264三種位元速率控制方法(CBR, VBR, CVBR)

CBR(Constant Bit Rate)是以恆定位元率方式進行編碼,有Motion發生時,由於位元速率恆定,只能通過增大QP來減少碼字大小,影象質量變差,當場景靜止時,影象質量又變好,因此影象質量不穩定。這種演算法優先考慮位元速率(頻寬)。

這個演算法也算是位元速率控制最難的演算法了,因為無法確定何時有motion發生,假設在位元速率統計視窗的最後一幀發生motion,就會導致該幀size變大,從而導致統計的位元速率大於預設的位元速率,也就是說每秒統計一次位元速率是不合理的,應該是統計一段時間內的平均位元速率,這樣會更合理一些。

VBR(Variable Bit Rate)動態位元率,其位元速率可以隨著影象的複雜程度的不同而變化,因此其編碼效率比較高,Motion發生時,馬賽克很少。位元速率控制演算法根據影象內容確定使用的位元率,影象內容比較簡單則分配較少的位元速率(似乎碼字更合適),影象內容複雜則分配較多的碼字,這樣既保證了質量,又兼顧頻寬限制。這種演算法優先考慮影象質量。

CVBR(Constrained VariableBit Rate),這樣翻譯成中文就比較難聽了,它是VBR的一種改進方法。但是Constrained又體現在什麼地方呢?這種演算法對應的Maximum bitRate恆定或者Average BitRate恆定。這種方法的兼顧了以上兩種方法的優點:在影象內容靜止時,節省頻寬,有Motion發生時,利用前期節省的頻寬來儘可能的提高影象質量,達到同時兼顧頻寬和影象質量的目的。這種方法通常會讓使用者輸入最大位元速率和最小位元速率,靜止時,位元速率穩定在最小位元速率,運動時,位元速率大於最小位元速率,但是又不超過最大位元速率。比較理想的模型如下:


ABR (Average Bit Rate) 在一定的時間範圍內達到設定的位元速率,但是區域性位元速率峰值可以超過設定的位元速率,平均位元速率恆定。