• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            牽著老婆滿街逛

            嚴(yán)以律己,寬以待人. 三思而后行.
            GMail/GTalk: yanglinbo#google.com;
            MSN/Email: tx7do#yahoo.com.cn;
            QQ: 3 0 3 3 9 6 9 2 0 .

            簡(jiǎn)述x264幾種碼率控制方式的實(shí)現(xiàn)

            轉(zhuǎn)載自:http://blog.yikuyiku.com/?p=1901

            x264的碼率控制是基于libavcodec和經(jīng)驗(yàn)的。這篇文章將嘗試說明復(fù)雜的碼率控制算法背后的理論基礎(chǔ)。

            幾點(diǎn)理論:

            1、固定質(zhì)量并不等價(jià)于PSNR或QP完全恒定。復(fù)雜場(chǎng)景或者高速場(chǎng)景中難以辨別的細(xì)節(jié)會(huì)被選擇性省略,以節(jié)省碼率;
            2、如果運(yùn)動(dòng)預(yù)測(cè)生效,將獲得更好的質(zhì)量:低速場(chǎng)景中,1個(gè)錯(cuò)誤可能擴(kuò)散到好幾秒鐘中。此時(shí)如果運(yùn)動(dòng)預(yù)測(cè)啟用,只需要更改一個(gè)幀,就能增進(jìn)整個(gè)場(chǎng)景的質(zhì)量;
            3、如果有一個(gè)幀的一個(gè)QP的編碼結(jié)果,就可以預(yù)測(cè)這個(gè)幀其它QP編碼將消耗的空間。QP差距越大,預(yù)測(cè)越不準(zhǔn)確;
            4、幀的重要性取決于參照它的幀的數(shù)量。因此I幀將根據(jù)最近的可被參考幀的復(fù)雜程度來調(diào)正自己的QP。用作參考幀的B幀(自由B幀)的QP高于P幀,參考的B幀的QP則介于P幀和用作參考幀的B幀之間。

            幾種碼率控制模式:

            2pass:指定目標(biāo)碼率,2趟編碼
            在第1趟編碼(比如下面提到的ABR)時(shí)為每一幀生成一些統(tǒng)計(jì)信息,以助在第2趟編碼中時(shí)為每一幀找到最好的量化參數(shù)。第2趟編碼包含以下三部分:
            1、第2趟編碼開始之前,拿出一些空間用于在幀間靈活分配。空間大小的計(jì)算與目標(biāo)碼率無關(guān),只是一個(gè)使用恒定QP編碼的碼率的比值,一般是0.6;
            2、用(1)得出來的值和目標(biāo)碼率計(jì)算每一幀要使用的QP。使用VBV是方法之一,VBV是一個(gè)迭代的過程,因?yàn)槭褂肰BV和QP會(huì)互相影響;
            3、現(xiàn)在開始編碼。每編完一幀,按照還剩下的空間重新計(jì)算后面將要使用的QP,如果編碼過程中第2趟編碼的實(shí)際碼率偏離了目標(biāo)碼率(因?yàn)榈诙司幋a用了更慢的參數(shù))(譯者按:也就是使用了快速第一趟編碼,所以通常是低于目標(biāo)碼率),會(huì)在隨后的幀里做出變化(譯者按:通常是增大碼率)以糾正錯(cuò)誤趨勢(shì)。另外,還會(huì)有個(gè)小處理,會(huì)保證我們不在視頻的開始或結(jié)束的階段遠(yuǎn)遠(yuǎn)偏離目標(biāo)碼率。

            ABR:1趟編碼,平均碼率
            目標(biāo)是達(dá)到和2趟編碼同樣的效果,但沒有第1趟編碼的幫助,所以只能一邊編碼一邊控制碼率:
            1、和2趟編碼的(1)過程一樣,但因?yàn)闆]有第1趟編碼的幀信息,所以把幀縮小為一半分辨率后用一個(gè)快速預(yù)測(cè)算法和SATD(譯者按:sum of absolute transform differences絕對(duì)變換差值和)(此計(jì)算也用于P幀B幀決策)做一個(gè)預(yù)測(cè)來代替。而且也不知道后面的GOP(譯者按:圖像組)的大小和復(fù)雜度,所以I幀的決策基于之前的幀;
            2、因?yàn)椴恢篮竺鎺膹?fù)雜度,所以只根據(jù)前面的幀來測(cè)算QP。測(cè)算的因數(shù)將定為如果應(yīng)用于目前所有幀則可以滿足目標(biāo)比特率的數(shù);
            3、和2趟編碼一樣有溢出補(bǔ)償,調(diào)節(jié)補(bǔ)償力度可以得到很接近2趟編碼的質(zhì)量(但大小將在接近正負(fù)10%的范圍內(nèi)浮動(dòng)),通過這種方式可以在一定程度上控制住文件大小而又不太犧牲視頻質(zhì)量。

            CBR:1趟編碼,恒定碼率(用VBV限制)
            1、同ABR;
            2、測(cè)算因子基于一個(gè)范圍內(nèi)(由VBV buffer大小決定)的均值,而不是之前所有幀;
            3、溢出補(bǔ)償更加嚴(yán)格,而且在VBV接近0時(shí)將會(huì)強(qiáng)制限制QP。但在VBV沒用完時(shí)并不會(huì)強(qiáng)制限制QP,所以CBR的結(jié)果多少會(huì)比目標(biāo)碼率低一點(diǎn)。還要注意的是,如果在所有機(jī)制過后,一個(gè)幀還是超出了VBV的限制,那它是不會(huì)被重新編碼的。

            CRF:1趟編碼,恒定碼率因子(譯者注:就是crf參數(shù),crf = constant rate factor)
            1、同ABR;
            2、換算因子恒定為 –crf參數(shù)的值;
            3、沒有溢出補(bǔ)償。

            CQP:恒定量化參數(shù)
            QP只簡(jiǎn)單地和幀類型相關(guān)。

            以上所有類型:
            H.264規(guī)范允許每個(gè)宏塊使用不同的QP。x264目前沒有實(shí)現(xiàn)這一特性,碼率控制算法只會(huì)為每一幀生成一個(gè)QP。

            翻譯自:http://git.videolan.org/?p=x264.git;a=blob_plain;f=doc/ratecontrol.txt;hb=HEAD

            posted on 2013-08-14 22:02 楊粼波 閱讀(390) 評(píng)論(0)  編輯 收藏 引用


            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            久久综合狠狠综合久久激情 | 亚洲中文字幕无码久久综合网| 99久久777色| 久久夜色精品国产噜噜亚洲AV| 亚洲精品WWW久久久久久| 久久99精品九九九久久婷婷| 久久99精品国产麻豆宅宅| 精品久久久久久国产潘金莲| 亚洲国产精品一区二区久久hs| 日产精品久久久久久久| 久久久久久久久66精品片| 国内精品伊人久久久影院| 亚洲乱码日产精品a级毛片久久| 亚洲国产综合久久天堂| 中文国产成人精品久久亚洲精品AⅤ无码精品 | 国产精品久久久久无码av| 久久精品国产99久久无毒不卡| 人妻精品久久无码区| 2021精品国产综合久久| 久久精品国产91久久麻豆自制 | 久久成人国产精品免费软件| 精品久久亚洲中文无码| 久久精品国产第一区二区三区| 久久er热视频在这里精品| 国产成人精品久久亚洲高清不卡 | 国产亚州精品女人久久久久久 | 国产精品免费久久久久影院| 久久久久亚洲爆乳少妇无| 99久久这里只精品国产免费| 人妻精品久久无码区| 天天久久狠狠色综合| 日批日出水久久亚洲精品tv| 亚洲伊人久久大香线蕉综合图片| 国产精品久久久久国产A级| 国产成人久久精品二区三区| 久久婷婷人人澡人人爽人人爱 | 国产精品久久亚洲不卡动漫| 久久精品国产亚洲Aⅴ香蕉| 中文字幕乱码久久午夜| 久久国产精品成人免费| 日本精品久久久久久久久免费|