DATE: 2019-1-12
0、前言
視頻編碼中的碼率控制是一種重要的編碼技術,旨在保證碼率平穩或者圖像質量平穩,在實際應用中,碼率控制應用很多,這里分析一下常用的碼率控制算法。主要以當前海思IPC芯片中實現的碼率控制方式為例進行分析。
1、常用碼率控制算法分析
1.1、CBR
CBR(Constant Bit Rate)固定比特率。 即在碼率統計時間內保證編碼碼率平穩。碼率
穩定主要由兩個量來評估。
- 碼率統計時間 u32StatTime
單位為秒(s),碼率統計時間越長,每幀圖像的碼率波動對於碼率調節的影響越
弱,碼率的調節會更緩慢,圖像質量的波動會更輕微;碼率統計時間越短,每幀
圖像的碼率波動對於碼率調節的影響越強,圖像碼率的調節會更靈敏,圖像質量
的波動會更劇烈。 - 行級碼率控制調節幅度 u32RowQpDelta
行級碼率控制調節幅度是一幀內行級調節的最大范圍,其中行級以宏塊行為單
位。調節幅度越大,允許行級調整的 QP 范圍越大,碼率越平穩。對於圖像復雜
度分布不均勻的場景,行級碼率控制調節幅度設置過大會帶來圖像質量不均勻。
1.2、VBR
VBR(Variable Bit Rate)可變比特率,即允許在碼率統計時間內編碼碼率波動,從而保證編碼圖像質量平穩。
以 H.264 編碼為例,VENC 模塊提供用戶可設置 MaxQp,MinQp,MaxBitrate 和 ChangePos。MaxQp,MinQp 用於控制圖像的質量范圍,MaxBitrate 用於鉗位碼率統計時間內的最大編碼碼率,ChangePos 用於控制開始調整Qp 的碼率基准線。
- 當編碼碼率大於 MaxBitrate*ChangePos 時,圖像 qp 會逐步向MaxQp 調整,如果圖像 QP 達到 MaxQp,QP 會被鉗位到最大值,MaxBitrate 的鉗位效果失效,編碼碼率有可能會超出 MaxBitrate。
- 當編碼碼率小於 MaxBitrate*ChangePos時,圖像 QP 會逐步向 MinQp 調整,如果圖像 QP 達到 MinQp,此時編碼的碼率已經達到最大值,而且圖像質量最好。
1.3、FIXQP
Fix Qp 固定 Qp 值。在碼率統計時間內,編碼圖像所有宏塊 Qp 值相同,采用用戶設定的圖像 Qp 值,I 幀、P 幀和B幀的 QP 值可以分別設置。
1.4、AVBR
AVBR(Adaptive Variable Bit Rate)可變比特率,即允許在碼率統計時間內編碼碼率波動,從而保證編碼圖像質量平穩。
核心思想:碼率控制內部會檢測當前場景的運動靜止狀態,在運動時用較高碼率編碼,在靜止時主動降低目標碼率。
以 H.264 編碼為例,VENC 模塊提供用戶可設置 MaxBitrate,ChangePos 和 MinStillPercent。MaxBitrate 表示運動場景下的最大碼率,MaxBitrate*ChangePos*MinStillPercent 表示靜止情況下的最小碼率。根據運動程度的不同目標碼率會在最大碼率和最小碼率間調整。MaxQp,MinQp 用於控制圖像的質量范圍,碼率控制以 QP 鉗位為最高優先級,超出 MinQp,MaxQp 范圍內碼率控制將失效。
1.5、QPMAP
QPMAP Qp 表,該碼控模式下,碼控的策略由用戶決定,且一幀編碼圖像以 16*16 塊為單位,每一個 16*16 塊的 Qp 值,采用用戶設定的相應塊的 Qp 值。所有這些塊的QP 值組成 QP 表,該表中 QP 值的組織方式如圖 6-3 所示。
1.6、CVBR
CVBR(Constrained Variable Bit Rate) 是以VBR為基礎,旨在提供平穩的圖像質量的碼率,同時對VBR的碼率進行限制,以滿足傳輸寬帶以及存儲空間的要求。
具體來說,CVBR設置了瞬時,短期和長期碼率的限制。其中,瞬時碼率的限制保證網絡帶寬對傳輸帶寬的要求;長期碼率保證了在長時間視頻錄制時,存儲設備有足夠的空間存儲數據;同時,短期碼率會根據長期碼率的設置和實際使用情況進行調節,以在場景復雜的情況下提供更加平穩的圖像質量,並在場景簡單時節省碼率。
1.7、QVBR
QVBR(Quality Variable Bit Rate) 基於主觀質量的可變比特率,該方式是利用實時統計的PSNR的大小來動態調整碼率,從而保證編碼圖像質量平穩。在PSNR較小時主動升高目標碼率,PSNR較大時主動降低碼率。
參考:《Hi3559A HiMPP V4.0 媒體處理軟件開發參考.pdf》