引用:
Originally posted by LOCK.LAI
看Shade大大對xvid這麼有研究,我可否相問一個問題。我一直有在使用xvid來試壓影片,與divx5.x比起來,一般畫面在同樣流量下,兩者比較起來畫質差不多,但在一些光源快速明暗的畫面,xvid壓出來的畫面,卻明顯輸給divx很多。即使再勾選了Enable lumi masking也無改善。請問這是什麼原因呢?
xvid(koepi,2003,Jan 27), 2pass, motion search6, 勾選global motion compensation,流量約130kbps

divx5.03 2pass, 流量125kbps
|
其實我也沒有很深入的研究,只是看別人討論稍微了解一點而已 ^_^;
DivX 5.03 我的 CPU 不能用所以沒有測試過,若是 DivX 5.02,Simple Profile(沒有使用 B-Frame, Qpel, GMC)固定品質下 XviD 壓出來會比 DivX 5.02 小 500K~1M,PSNR 會贏 0.1dB 左右。
我想如果兩者都使用 B-Frame,XviD 的 B-Frame 比較有效率(會判斷畫面的情況動態插入 B-Frame,高動態時自動不使用 B-Frame),所以 B-Frame 的品質調到相同倍率下(DivX 5.02 的 B-Frame 也會乘上一個 ratio 提高 B-Frame 的 Quantizer,這個倍率可以從 registry 登錄資料庫中修改,預設值是 I/P Frame Quantizer 2 的時候 B-Frame 的 Quantizer 是 4),XviD 的檔案應該會比 DivX 5.02 更小,品質更高。
您貼的圖片我看不到,不過您說的 XviD 在光影快速明暗變化的畫面中壓出來輸 DivX 5.03 很多,原因是因為目前 XviD 沒有辦法很良好的偵測這種畫面,這種 Fade 快速淡入淡出的畫面前後亮度差異的變化很大,XviD 會視為是 Scene Change 用 I-Frame 壓縮,需要很多 bit。此時如果畫面上大部分的物體都沒有移動位置,只是亮度發生變化,則改成以 P-Frame 壓縮,MV 動作向量都是 0,只需記錄亮度的差異(色度也幾乎沒有變化),這樣的壓縮效率會更高。sysKin 曾試過用 mrSAD 來偵測 Fade,或是曾有人建議利用 Chroma ME 偵測 Fade,不過都有一些問題。學界有好幾篇在探討偵測 Fade 提高壓縮效率的論文,提出許多方法,XviD 的開發人員已經著手研究,不過目前還沒有時間去解決這個問題 ^^;
不過我記得 DivX 5.02 對於這種畫面好像也沒有好到哪裡去?
不知道您 XviD 2-pass 用的設定是什麼?我想您應該是用 linear scaling 吧?
如果 Fade 的畫面沒有改善,我想您可以試試用 Curve Compression,給 High Motion 的畫面(也就是需要較多 bit,1st-pass 壓出來的 frame-size 較大的畫面)多一點 bit。還有注意 XviD 有一個 "Below I-frame distance of xx frames" 的設定,這個是設定當 I-Frame 的間距小於 xx frames,例如預設值是 10 frames,XviD 就會視為是間隔太短的 I-Frame,會將這些密集的 I-Frame 降低品質,降低的程度由下面那個 "I-frame bitrate reduction%" 決定,預設是降低 30%。因為快速淡入淡出的畫面會被視為是 Scene Change 引發密集的 I-Frame 插入,如果您沒有修改這個選項的預設值,這些 I-Frame 的品質就會被降低,本來就已經需要很多 bit 壓縮,bitrate 就已經有點不夠了,現在又被降低品質,我想畫面一定更容易破功被看出瑕疵。
我的經驗也不多,其他我再想想還有什麼方法 ^_^;