ffmpeg&x264 碼率控制分析

相關(guān)

ffmpeg編碼示例
x264編碼示例

概念

h264編碼算法復(fù)雜、參數(shù)眾多钝计,單碼率控制又分為三種模式恋博。

  • VBR(Variable Bit Rate)即動(dòng)態(tài)比特率,其碼率可以隨著圖像的復(fù)雜程度的不同而變化私恬,因此其編碼效率比較高债沮,Motion發(fā)生時(shí),馬賽克很少本鸣。碼率控制算法根據(jù)圖像內(nèi)容確定使用的比特率疫衩,圖像內(nèi)容比較簡(jiǎn)單則分配較少的碼率(似乎碼字更合適),圖像內(nèi)容復(fù)雜則分配較多的碼字荣德,這樣既保證了質(zhì)量闷煤,又兼顧帶寬限制。這種算法優(yōu)先考慮圖像質(zhì)量涮瞻。
  • CBR(Constant Bit Rate)是以恒定比特率方式進(jìn)行編碼鲤拿,有Motion發(fā)生時(shí),由于碼率恒定署咽,只能通過(guò)增大QP來(lái)減少碼字大小近顷,圖像質(zhì)量變差生音,當(dāng)場(chǎng)景靜止時(shí),圖像質(zhì)量又變好窒升,因此圖像質(zhì)量不穩(wěn)定缀遍。這種算法優(yōu)先考慮碼率(帶寬)。
  • CVBR(Constrained VariableBit Rate)它是VBR的一種改進(jìn)方法饱须。這種方法的兼顧了以上兩種方法的優(yōu)點(diǎn):在圖像內(nèi)容靜止時(shí)域醇,節(jié)省帶寬,有Motion發(fā)生時(shí)蓉媳,利用前期節(jié)省的帶寬來(lái)盡可能的提高圖像質(zhì)量譬挚,達(dá)到同時(shí)兼顧帶寬和圖像質(zhì)量的目的。同時(shí)i_bitrate也需要設(shè)置督怜。

碼率控制

間接影響

除了視頻質(zhì)量外有效影響視頻碼率的有

  • 關(guān)鍵幀間隔

碼率∝關(guān)鍵幀間隔(視頻質(zhì)量其他參數(shù)恒定)

  • 分辨率

碼率∝分辨率(視頻質(zhì)量其他參數(shù)恒定)

  • 幀率


碼率∝幀率(視頻質(zhì)量其他參數(shù)恒定)
注:
x264:i_fps_num = 15;i_fps_den= 1 ;//幀率15殴瘦。
ffmpeg:time_base.num=1;time_den=1;//幀率15。
等等視頻質(zhì)量的參數(shù)号杠,無(wú)可厚非蚪腋,視頻質(zhì)量提升,要么編碼速度降低姨蟋,要么碼率增大屉凯。

  • B幀數(shù)

碼率∝1/b幀數(shù)(視頻質(zhì)量其他參數(shù)恒定)

直接影響


X264_RC_CQP 動(dòng)態(tài)比特率
X264_RC_CRF 恒定比特率
X264_RC_ABR 平均比特率
未選擇時(shí),優(yōu)先選擇的順序是 bitrate > QP > CRF眼溶,會(huì)按照該順序排查參數(shù)悠砚,直到發(fā)現(xiàn)某種類型參數(shù)合法時(shí)確定類型。
if( bitrate ) rc_method = ABR; else if ( qp || qp_constant ) rc_method = CQP; else rc_method = CRF;

附:

x264中x264_param_t->rc 結(jié)構(gòu)體

struct
{
    int         i_rc_method;    /* X264_RC_* */

    int         i_qp_constant;  /* 0 to (51 + 6*(x264_bit_depth-8)). 0=lossless */
    int         i_qp_min;       /* min allowed QP value */
    int         i_qp_max;       /* max allowed QP value */
    int         i_qp_step;      /* max QP step between frames */

    int         i_bitrate;
    float       f_rf_constant;  /* 1pass VBR, nominal QP */
    float       f_rf_constant_max;  /* In CRF mode, maximum CRF as caused by VBV */
    float       f_rate_tolerance;
    int         i_vbv_max_bitrate;
    int         i_vbv_buffer_size;
    float       f_vbv_buffer_init; /* <=1: fraction of buffer_size. >1: kbit */
    float       f_ip_factor;
    float       f_pb_factor;

    /* VBV filler: force CBR VBV and use filler bytes to ensure hard-CBR.
     * Implied by NAL-HRD CBR. */
    int         b_filler;

    int         i_aq_mode;      /* psy adaptive QP. (X264_AQ_*) */
    float       f_aq_strength;
    int         b_mb_tree;      /* Macroblock-tree ratecontrol. */
    int         i_lookahead;

    /* 2pass */
    int         b_stat_write;   /* Enable stat writing in psz_stat_out */
    char        *psz_stat_out;  /* output filename (in UTF-8) of the 2pass stats file */
    int         b_stat_read;    /* Read stat from psz_stat_in and use it */
    char        *psz_stat_in;   /* input filename (in UTF-8) of the 2pass stats file */

    /* 2pass params (same as ffmpeg ones) */
    float       f_qcompress;    /* 0.0 => cbr, 1.0 => constant qp */
    float       f_qblur;        /* temporally blur quants */
    float       f_complexity_blur; /* temporally blur complexity */
    x264_zone_t *zones;         /* ratecontrol overrides */
    int         i_zones;        /* number of zone_t's */
    char        *psz_zones;     /* alternate method of specifying zones */
} rc;
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末堂飞,一起剝皮案震驚了整個(gè)濱河市灌旧,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌绰筛,老刑警劉巖枢泰,帶你破解...
    沈念sama閱讀 222,590評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異铝噩,居然都是意外死亡衡蚂,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門骏庸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)毛甲,“玉大人,你說(shuō)我怎么就攤上這事具被〔D迹” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 169,301評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵一姿,是天一觀的道長(zhǎng)七咧。 經(jīng)常有香客問(wèn)我改执,道長(zhǎng),這世上最難降的妖魔是什么坑雅? 我笑而不...
    開(kāi)封第一講書人閱讀 60,078評(píng)論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮衬横,結(jié)果婚禮上裹粤,老公的妹妹穿的比我還像新娘。我一直安慰自己蜂林,他們只是感情好遥诉,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,082評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著噪叙,像睡著了一般矮锈。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上睁蕾,一...
    開(kāi)封第一講書人閱讀 52,682評(píng)論 1 312
  • 那天苞笨,我揣著相機(jī)與錄音,去河邊找鬼子眶。 笑死瀑凝,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的臭杰。 我是一名探鬼主播粤咪,決...
    沈念sama閱讀 41,155評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼渴杆!你這毒婦竟也來(lái)了寥枝?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 40,098評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤磁奖,失蹤者是張志新(化名)和其女友劉穎囊拜,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體点寥,經(jīng)...
    沈念sama閱讀 46,638評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡艾疟,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,701評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了敢辩。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蔽莱。...
    茶點(diǎn)故事閱讀 40,852評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖戚长,靈堂內(nèi)的尸體忽然破棺而出盗冷,到底是詐尸還是另有隱情,我是刑警寧澤同廉,帶...
    沈念sama閱讀 36,520評(píng)論 5 351
  • 正文 年R本政府宣布仪糖,位于F島的核電站柑司,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏锅劝。R本人自食惡果不足惜攒驰,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,181評(píng)論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望故爵。 院中可真熱鬧玻粪,春花似錦、人聲如沸诬垂。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,674評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)结窘。三九已至很洋,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間隧枫,已是汗流浹背喉磁。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,788評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留悠垛,地道東北人线定。 一個(gè)月前我還...
    沈念sama閱讀 49,279評(píng)論 3 379
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像确买,于是被迫代替她去往敵國(guó)和親斤讥。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,851評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容