影片壓縮方式大比拼,為什麼壓成 VBR 會更好?

影片壓縮方式大比拼,為什麼壓成 VBR 會更好?

ADVERTISEMENT

筆者在完成「DVD壓很大,8片變1片」專題後,回頭想想自己對固定流量的壓縮方式還有些疑惑,在 VBR 、 ABR 、 CBR 三種壓縮方式到底有什麼不同?因此在深入研究一番後,在此向讀者分享一些心得。

VBR有其必要

基本上影片壓縮的方式可分為VBR、ABR、CBR、CQ、CRF共5種,只有VBR需要經過多次pass,其餘只要1 pass即可完成。

VBR的1st pass工作是分析影片,確認影片每一幀的「複雜度」(complexity),在分析完過整部影片後,可以算出複雜度與設定影片檔案大小的比例,然後調整這個比例,讓所每一幀得到相對應的量化區間(Qquantizer),就可以在2nd pass時,精準地控制影片的檔案大小。

ABR回家種田

ABR的好處是可以在單一pass的情況下,控制影片大小,筆者也感到疑惑,為什麼它可以在沒有分析影片的情況下,掌控輸出影片的大小。

在壓縮影片時,為了要計算動態補償,都會預先讀取「未來」的幾張畫面(通常以1/2解析度進行),以決定「現在」處理中的畫面,該如何進行動態補償。在這個過程中,可以偷偷計算影片的複雜度,並在處理完每一畫面後,將這畫面所造成的檔案大小累加,就可以即時調整往後的資料流量,以控制輸出檔案大小。

但是ABR有個限制,就是在影片開頭和結尾附近的片段,沒辦法計算得很精準。在開頭時因為不知道「中段」會發生什麼事,說不定畫面很單純,也可能是複雜度爆表,因此在開頭的部分通常不會特別調整資料流量。在結尾的部分則是因為生米煮成熟飯,如果前面已經把儲存空間用光,結尾只能隨便壓縮一番,況且也沒有足夠的預讀畫面,來計算複雜度。

CBR不切實際

要固定流量最簡單的方法,就是單純讓每一幀獲得相同的資料流量,這樣不僅可以在一開始就確定每一幀分得的可用空間,也可以100%精準地控制輸出檔案大小。首先透過公式「設定資料流量 / FPS」算出每幀可用的流量,接下來只需要單純在處理每一畫面時,調整量化區間,讓大小與預期相符,就可以達成目標。

CBR雖然十分「淺顯易懂」,但是我們無法得到最佳品質,如果流量設得太小,會造成畫質太差,設得太高又會造成影片虛胖(編碼器要把所有空間填滿)。如果不想等待2 pass的話,還不如使用CQ或CRF,只要壓縮出來的影片容量不要爆肥,大家應該都能接受吧。

影片壓縮方式大比拼,為什麼壓成 VBR 會更好?

測試條件

本次的測試過程中,筆者分別使用VBR、ABR、CBR等方式,將長度為2分鐘的1080p影片,轉為960 x 544解析度,使用的轉檔軟體為MeGUI,編碼器為x264。筆者會將資料流量設定為2000 kbps及800 kbps,以測試上述3種編碼方式,在高流量及低流量下的表現。

由於MeGUI沒有將CBR內建於的範本中, 因此需要手動調整x264編碼器的設定,輸入Rate Control選項中的Quantizer Compression設定值,可以改變編碼器動態調整量化區間的數值。

將Quantizer Compression設為1.0的話,編碼器就會以CQ的方式運作,將量化區間鎖定為固定值,若是將Quantizer Compression設為0.0,編碼器就會以CBR方式運作,無論畫面多複雜,都一律調整量化區間,讓檔案大小符合預期。

結果分析

由於使用VBR方式轉檔得經過2個pass的步驟,因此需要耗費更多的時間。但是可以從測試擷圖中清楚地看到,VBR能夠在相同流量下,提供更好的畫質,無論在影像的清晰度、輪廓,或是畫面雜訊上,表現都較為傑出。

在800kbps流量的樣本中,可以看到VBR的畫質非常明顯地贏過ABR、CBR,無論在畫面中央爆炸的地方,或是左側電纜線,畫面的邊緣都比較銳利,顏色也比較滑順。如果在轉檔的時間,希望能控制轉出檔案大小的話,最好還是多花一點時間,以VBR方式編碼以提升畫質。而2000kbps測試的結果,和800kbps的情況相似。

礙於篇幅限制,完整測試圖檔,請至http://pcadv.in/yHEDBy下載「電腦王92期技研堂.zip」檔案。

影片壓縮方式大比拼,為什麼壓成 VBR 會更好?

影片壓縮方式大比拼,為什麼壓成 VBR 會更好?影片壓縮方式大比拼,為什麼壓成 VBR 會更好?影片壓縮方式大比拼,為什麼壓成 VBR 會更好?

影片壓縮方式大比拼,為什麼壓成 VBR 會更好?影片壓縮方式大比拼,為什麼壓成 VBR 會更好?影片壓縮方式大比拼,為什麼壓成 VBR 會更好?

▲在電纜線的部份可以清楚看到,畫面出現因動態補償而產生的典型方格雜訊,ABR的表現已經不太理想,CBR的情況更糟糕。

影片壓縮方式大比拼,為什麼壓成 VBR 會更好?▲由於VBR需要跑2個Pass的關係,所以需要比較多的時間。CBR在編碼時的運算複製度不及VBR,因此速度會比較快。

延伸閱讀:

DVD 8片變1片:簡單工具、高品質進階技巧實作給你看

新手必學!相機影片格式大整理,播放、轉檔好用工具介紹

10款影音免費軟體,播放、轉檔、剪輯、燒錄通通有

DVD壓縮燒,兩片變一片

從PC到行動裝置,6款免費影片轉檔工具評比、實測

國寶大師 李文恩
作者

電腦王特約作者,專門負責硬派內容,從處理器、主機板到開發板、零組件,尖端科技都一手包辦,最近的研究計畫則包括Windows 98復活與AI圖像生成。

使用 Facebook 留言
F00b821a7b7c9c53e24eab6cc407778f?size=48&default=wavatar
1.  Techbang Fan (發表於 2012年3月19日 20:36)
電纜線的部份的picture, two CBR---error?
Azurekite17
1人給推

3.  Azurekite17 (發表於 2012年3月19日 21:19)
突然間大家都開始使用Skydrive了!!(誤

可以再開一篇專門介紹MeGUI這套軟體的嗎~~?

想搞清楚Rip的詳細流程
158624d67bb2d3a2774fba5493d36d81?size=48&default=wavatar
5.  e222et (發表於 2012年3月20日 09:19)
MeGUI我只用來解析影片 輸出d2v 然後用AVS腳本搭配x264壓制<( ̄︶ ̄)>
國寶大師 李文恩
7.  國寶大師 李文恩 (發表於 2012年3月20日 14:12)
※ 引述《kevin》的留言:
> 不知道筆者文中所提的這四個名詞是針對MeGUI這軟體來解釋的嗎?
> 因為我查了一下Wikipedia後, 似乎筆者的解釋跟Wikipedia不太相同
> http://en.wikipedia.org/wiki/Variable_bitrate
> http://en.wikipedia.org/wiki/Constant_bitrate
> http://en.wikipedia.org/wiki/Average_bitrate
> http://en.wikipedia.org/wiki/Video_quality
> 如果有冒犯的地方還請原諒 〒ˍ〒

我想這位讀者的問題應該是在ABR的部分吧
文中的ABR方式針對X.264這支編碼器的說明,和WIKI中提到的不太一樣

你可以參考一下這篇文件
http://git.videolan.org/?p=x264.git;a=blob_plain;f=doc/ratecontrol.txt;hb=HEAD
國寶大師 李文恩
8.  國寶大師 李文恩 (發表於 2012年3月20日 14:16)
※ 引述《e222et》的留言:
> MeGUI我只用來解析影片 輸出d2v 然後用AVS腳本搭配x264壓制

我比較懶惰,透過AVS腳本用ffdshow解析影片,然後就直接進X.264了。
總覺得都用ASV了,再產生d2v有些多此一舉,除非要處理MPEG2的影片,不然我都不用d2v了
940055fb89d320d927192c3cadf690d1?size=48&default=wavatar
1人給推

11.  悟訢 (發表於 2012年4月05日 02:35)
還是不會用MeGUI,我要轉一個無壓縮的AVI影片,詳細規格:
http://alan6716.dropmark.com/11541/457326

但是用 AVS Script Creator 會出現錯誤 unDot: supports YUY2 color format only
用 File Indexer,等他慢慢跑完第一步驟後又出現錯誤 FFVideoSource:Insanity detected:decoder returned an empty frame

不知道還有什麼方法可以建立腳本...
國寶大師 李文恩
12.  國寶大師 李文恩 (發表於 2012年4月06日 13:22)
※ 引述《悟訢》的留言:
> 不知道還有什麼方法可以建立腳本...
>
你要不要試試看更新ffmpeg,印象中avs應該是可以處理YUY2,所以應該是缺少codec的關係。
940055fb89d320d927192c3cadf690d1?size=48&default=wavatar
13.  悟訢 (發表於 2012年4月06日 23:57)
※ 引述《國寶大師 李文恩》的留言:
> ※ 引述《悟訢》的留言:
> > 不知道還有什麼方法可以建立腳本...
> >
> 你要不要試試看更新ffmpeg,印象中avs應該是可以處理YUY2,所以應該是缺少codec的關係。

十分感謝您的回答,我一直都有使用K-lite codec,32、64位元都有,版本皆為最新,請問是否與安裝解碼器的過程選項有關?或是應該換個解碼器試試?
總之,我現在先去重先安裝一次試試。
940055fb89d320d927192c3cadf690d1?size=48&default=wavatar
14.  悟訢 (發表於 2012年4月07日 00:32)
※ 引述《國寶大師 李文恩》的留言:
> ※ 引述《悟訢》的留言:
> > 不知道還有什麼方法可以建立腳本...
> >
> 你要不要試試看更新ffmpeg,印象中avs應該是可以處理YUY2,所以應該是缺少codec的關係。

發現unDot: supports YUY2 color format only這句話應該是指說他只支援YUY2,但我這部無壓縮avi影片是RGBA格式。
如果是這個原因的話,有辦法將這影片用MeGUI轉嗎?
發表回應
謹慎發言,尊重彼此。按此展開留言規則