日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

图像编解码:CRF(质量/码率控制)和QP

發布時間:2024/10/14 编程问答 62 豆豆
生活随笔 收集整理的這篇文章主要介紹了 图像编解码:CRF(质量/码率控制)和QP 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

什么是CRF?

CRF是264和265中默認的質量/碼率控制設置。這個值可以在0到51之間,值越低,質量越好,文件大小越大。在x264上面,一般取值為18-28,默認值是23。在ffmpeg中,crf是這么使用的

ffmpeg -i input.mp4 -c:v libx264 -crf 23 output.mp4

在x265中,默認的crf值是28

ffmpeg -i input.mp4 -c:v libx265 -crf 28 output.mp4

如果你不確定要用哪個crf的值的話,請先用默認值,然后根據你對輸出質量的主觀印象去調整。大約crf的值差別為6就會導致文件大小的加倍或減半。

你應該在線下的文件存儲中使用crf的編碼,來獲取一個最佳的編碼方式。對于其他的使用場景,請使用其他的碼率控制模式。

---------------------------------------------------------------------------------------------------

CRF和QP

CRF是恒定質量的編碼方式,與恒定碼率(CBR)是相反的。通常,為了獲取恒定質量的編碼,我們可以通過用同樣的大小去壓縮每一個相同類型的幀,即,扔掉相對來說相同數量的信息。用專業術語來說,就是使用相同的量化參數QP。這個量化參數QP定義了從一個像素宏塊中丟掉多少信息。通常這將導致整個視頻序列的碼率不穩定。

不過,這里所說的CRF比恒定量化參數要復雜一點兒。CRF會用將每一幀的壓縮不同的大小,為了讓主觀的質量感受差不多,會用不同的QP。他是通過把運動也考慮進來做到這一點的。在編碼中,如果Qp=18,則每一幀都是QP=18,當然根據幀的類型不同會有一些微小的波動,忽略之。設置CRF=18的時候,對于運動比較大的場景,會把QP設得更高一些,對于運動比較比較不劇烈的幀,會降低QP。這會導致比特率的分配隨時間變化不同。

例如,下圖展示了兩個不同的視頻(BBB big buck bunny和TOS tears of steal),用不同的等級去編碼(17和23),分別用恒定量化參數CQP和恒定質量CRF模式

我們看到,CRF的線總是比CQP的要低,意味著采用CRF模式的時候,可以省比特數,而采用CQP的時候,稍微會浪費一點文件大小。

?

為什么運動這么重要?

比起運動的物體,人眼對靜止的物體會觀察到更多的細節。基于這一想法,編碼時,對運動物體給更高的壓縮率,而對靜止的物體保留更多的細節。

用外行的話說,這是因為你的視覺系統會被運動分散注意力,而不會有足夠的時間去注意運動物體的細節。用專業術語來講,運動掩蓋了塊效應。從另一個方面來說,當一幀運動不夠大時,人就會話更多的時間去注意圖像的細節了,所以你希望壓縮的越少越好。這個時候的壓縮噪聲對于人眼來說就比較顯著了。

你可能會問,那么CQP是不是會取得好的視頻質量呢?事實上,感官感受是差不多的,只是CQP的模式會在你不真正注意的區域浪費更多的空間。

從應用的層面來說,很多人都會在單通道的編碼使用CRF,另一個采用CRF的原因是這個是開發者x264或x265時默認選擇的碼率控制模式。

?

定量的視頻質量怎么樣呢?

如果你有一些簡單的方式可以比較視頻質量的話(比如,比較每一幀的PSNR),你會發現CRF的質量比CQP的要差。但是如果你用人眼去主觀評價的話,CRF和CQP看起來差不多。它對于人眼比較關注的地方壓縮的比較小。客觀質量評價可能會比較差,但主觀質量還是可以的。

這其實有一個對于簡單的質量評價方式psnr或ssim的一個質疑,它不能把運動之類的影響人眼的感受的因素考慮進去,因為他們是逐幀去評價的。一些評價標準,像VQM和VMAF對于評價視頻來說是更好的一種方式。

?

質量和比特率之間是什么關系?

不是所有的視頻都是一樣好壓縮的。運動較少,細節較少的視頻是比較容易壓縮的,反之相反了。這里說的容易是指,同樣的碼率的情況下,比較容易達到更好的圖像質量。

CRF解決這一問題,對于不同的視頻,不同的CRF參數導致不同的碼率。事實上,你無法根據碼率估計crf的參數。

例如,你把CRF設成23,對于一個視頻源,你會得到1500 kb/s,而對于另一個,你會得到1000kb/s,兩個看起來質量差不多。事實上,CRF要做的,就是保留確定數量的細節,不管用多少碼率。

云編碼服務Bitmovin在正式編碼之前,也用CRF來評估視頻的復雜度。

需要注意一點,如果你的CRF選的太高(比如30),你會看到在運動比較劇烈的地方有很多的塊效應,因為這些地方的碼率太低了。編碼器會對更復雜的區域用QP32,如本文開頭提到的,根據你想要的視頻質量選擇要的CRF參數。

?

為什么你還是會在電視或者網絡上看到很多塊效應呢?

為什么呢?問題是對于這些視頻,他們用了太低的碼率,特別是在廣播中,碼流是用固定碼率去壓縮的,這樣就不會考慮運動了。因此,一些電視節目在真正復雜的細節的圖像處沒有采用相應的壓縮率,看起來就比較多的塊了。

現在的碼流處理會更加的智能一些。youtube和neflix用2-pass甚至3-pass的算法,對于后者來說,采用CRF編碼來決定對于某一特定源,應該用某種碼率去編碼。確保對于復雜場景有足夠的碼率去使用,而又不超過用戶的帶寬。

總結

以上是生活随笔為你收集整理的图像编解码:CRF(质量/码率控制)和QP的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。