DVSDK位元速率控制的理解

2021-07-10 10:35:33 字數 1182 閱讀 5796

1.動態引數和靜態引數:

建立編碼器的時候,有params和dynparams兩種引數,顧名思義,venc根據params建立,執行過程中又可以對dynparams改變配置

venc1_handle venc1_create(engine_handle hengine, char *codecname,

videnc1_params *params,

videnc1_dynamicparams *dynparams)

typedef struct ividenc1_dynamicparams ividenc1_dynamicparams;

2.重要引數

若要進行位元速率和幀率控制,首先靜態引數中,ratecontrolpreset是非常重要的乙個引數,可選項有以下五種,其中cbr和vbr是我們要進行選擇的,若不需要對位元速率幀率控制可直接選擇none。

cbr編碼時,在配置為較低位元率的時候,幀率也會隨之下降,若採用vbr編碼,可以始終保持較高的幀率,因為cbr是很定位元率編碼,而vbr是根據複雜度優化。較少的變化採用較少的bit,複雜的地方採用較多的bit。因此位元速率較高的時候,cbr速度快,位元速率低的時候vbr較能改變質量。

在動態引數中,有兩個值是同乙個意思,可能是為了相容性考慮,targetframerate是dm6467要配置的,refframerate雖然可以置之不理,但是當兩個值設定為一致時,配置才不會報錯, 

xdas_int32 refframerate;    /**< reference, or input, frame rate in

*   fps * 1000.

**   @remarks   for example, if ref frame

*              rate is 30 frames per second,

*              this field will be 30000.

*/xdas_int32 targetframerate; /**< target frame rate in

*   fps * 1000.

**   @remarks   for example, if target frame

*              rate is 30 frames per second,

*              this field will be 30000.

*/

ffmpeg位元速率控制

vbr是動態位元速率。cbr是靜態位元速率。vbr variable bitrate 動態位元率。也就是沒有固定的位元率,壓縮軟體在壓縮時根據音訊資料即時確定使用什麼位元率,這是以質量為前提兼顧檔案大小的方式。vbr也稱為動態位元率編碼,使用這個方式時,你可以選擇從最差音質 最大壓縮比到最好音質 最...

ffmpeg位元速率控制

vbr是動態位元速率。cbr是靜態位元速率。vbr variable bitrate 動態位元率。也就是沒有固定的位元率,壓縮軟體在壓縮時根據音訊資料即時確定使用什麼位元率,這是以質量為前提兼顧檔案大小的方式。vbr也稱為動態位元率編碼,使用這個方式時,你可以選擇從最差音質 最大壓縮比到最好音質 最...

ffmpeg位元速率控制

儲存的資料為h264 pcodecctx bit rate 1800000 通常單位為 位每秒 bit s,b s 也寫作bps。b 應該總是小寫,以避免與 位元組每秒 bytes s,b s 混淆。位元組 byte 是構成資訊的單位,在計算機中作為處理資料的基本單位,1位元組等於8位,即 1 by...