ffmpeg位元速率控制

2021-08-14 19:47:25 字數 1458 閱讀 7354

vbr是動態位元速率。cbr是靜態位元速率。

vbr(variable bitrate)動態位元率。也就是沒有固定的位元率,壓縮軟體在壓縮時根據音訊資料即時確定使用什麼位元率,這是以質量為前提兼顧檔案大小的方式。vbr也稱為動態位元率編碼,使用這個方式時,你可以選擇從最差音質/最大壓縮比到最好音質/最低壓縮比之間的種種過渡級數,在***檔案編碼之時,程式會嘗試保持所選定的整個檔案的品質,將選擇適合**檔案的不同部分的位元率來編碼。主要優點是可以讓整首歌都能大致達到我們的品質要求,缺點是編碼時無法估計壓縮出來的檔案大小。

cbr(constants bit rate)即固定位元速率,就是靜態(恆定)位元率的意思,cbr是一種固定取樣率的壓縮方式。優點是壓縮快,能被大多數軟體和裝置支援,缺點是占用空間相對大,效果不十分理想,現已逐步被vbr的方式取代。

固定位元速率是乙個用來形容通訊服務質量(qos,quality of service)的術語。和該詞相對應的詞是可變位元速率或可變位元率(英文variable bit rate,縮寫vbr)。

當形容編解碼器的時候,cbr編碼指的是編碼器的輸出位元速率(或者解碼器的輸入碼率)應該是固定制(常數)。當在乙個頻寬受限的通道中進行多**通訊的時候cbr是非常有用的,因為這時候受限的是最高位元速率,cbr可以更好的易用這樣的通道。但是cbr不適合進行儲存,因為cbr將導致沒有足夠的位元速率對複雜的內容部分進行編碼(從而導致質量下降),同時在簡單的內容部分會浪費一些位元速率。

ffmpeg中cbr(固定位元速率控制)的設定:

c->bit_rate = br;

c->rc_min_rate =br;

c->rc_max_rate = br; 

c->bit_rate_tolerance = br;

c->rc_buffer_size=br;

c->rc_initial_buffer_occupancy = c->rc_buffer_size*3/4;

c->rc_buffer_aggressivity= (float)1.0;

c->rc_initial_cplx= 0.5; 

ffmpeg中vbr(可變率控制)的設定:

c->flags |= codec_flag_qscale;

c->rc_min_rate =min;

c->rc_max_rate = max; 

c->bit_rate = br;

vbr 適合的應用場景是**儲存,而不是網路傳輸。

其實實際網路傳輸中所謂的 

cbr一般都是 abr(平均位元率),即只要是單位時間內把位元速率控制在額定位元速率就可以了,因為編碼輸出本來就有緩衝可以起到平滑波動的作用。

嚴格意義上的 

cbr是每一幀都分配同樣的碼字,試想一下,如果某一幀所需要的碼字本來就很少,而你卻一定要給它分配很多碼字,那不是浪費麼?另一方面,如果某一幀所需要的碼字本來就多,而你卻給得很少,那這幀的效果會很差。這樣編下來,整體序列質量會忽好忽壞地不停發生跳變,反而對視覺衝擊很大;因此 abr 才是最適合網路傳輸的方案。

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...

HEVC 位元速率控制

位元速率控制通常分為三個level,分別為gop級 frame級 lcu級,其中frame級分為三種方案,分別為等bit位元速率分配 固定比例位元速率分配 自適應比例的位元速率分配,其中固定比例分配方案是李斌博士提出,自適應比例分配是其師弟在其基礎上提出的,本文給出了李斌博士提出的方案。gop級位元...