碼率控制、VBR、CBR

碼率控制實際上是一種編碼的優化算法,它用於實現對視頻流碼流大小的控制。那麼它控制的目的是什麼呢?
我們可以試想一下,同樣的視頻編碼格式,碼流大,它包含的信息也就越多,那麼對應的圖像也就越清晰,反之亦然。目前常用的兩種碼流控制方式是VBR和CBR,VBR是動態比特率,CBR是固定比特率。那麼他們是怎麼來實現的呢?
我們首先看視頻編碼的目的,它是爲了在有限的帶寬中傳輸儘可能清晰的視頻,我們以每秒25/幀的圖像舉例,25幀圖像中定義了GOP組,目前主要是有I,B,P幀三種幀格式,I幀是關鍵幀,你可以想象它就是一幅JPEG壓縮圖像,而B,P幀是依靠I幀存在的,如果丟失了I幀,B,P幀是看不到圖像的,B,P幀描述的不是實際的圖像像素內容,而是每個相關像素的變化量,他們相對於I幀信息量會很小。GOP組是指一個關鍵幀I幀所在的組的長度,每個GOP組只有1個I幀。
我們再來看,一組畫面的碼流大小跟什麼有關?當視頻編碼的壓縮方式都一樣,清晰度要求都一樣的時候,GOP組的長度格式決定了碼流的大小,例如:每秒25幀畫面,GOP組長度爲5,那麼幀格式爲IBPBP,那麼1秒鐘有5個I幀,10個B幀,10個P幀,如果GOP組長度爲15,幀格式就是IBBPBBPBBPBBPBB,那麼1秒鐘內會有2個I幀和16個B幀和7個P幀,那麼5個I幀比2個I幀佔用的數據信息量大,所以GOP組的長度格式也決定了碼流的大小。
最後,我們再來看VBR和CBR,對於VBR來說,它可以通過特殊的算法來控制一個GOP組的長度,也就是I幀的數量,當圖像中運動圖像多時,我可以把I幀數量加大,那麼圖像會很清晰,如果圖像內元素基本靜止時,它甚至可以把GOP組調到25的長度。那麼根據前面的描述,可以想象這是一種爲了確保圖像質量的控制手段,它非常靈活,不死板,但是要求控制算法非常的精確,不精確會導致很多問題,例如碼流突增後不降低,即使帶寬足夠,會導致圖像出現問題。
CBR相反,它的帶寬不變,碼流不改變,一直都是一樣的大小(會有少許的變化),圖像運動量超過碼流承受能力時,圖像會出現邊緣模糊的現象,它的目的是爲了穩定帶寬,它的實現方式就相對簡單,碼流不變就需要均衡IBP之間的關係,動態視頻大時I幀小,BP大,運動視頻小時I幀大,BP小。總之都是通過編解格式的算法來實現的。
總結一下,VBR碼流控制方式可以降低圖像動態畫面少時候的帶寬佔用,CBR控制方式碼流穩定,圖像狀態較穩定。他們爲了解決的是不同需求下的不同應用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章