瀏覽單個文章
Shade
Senior Member
 
Shade的大頭照
 

加入日期: Oct 2002
您的住址: El's room
文章: 1,046
引用:
Originally posted by littleyizhi

最近在用Xvid壓RC2的R.O.D(READ OR DIE)的第一卷,似乎Xvid(dev-api-4)對昏暗場景處理得不好,聽說開啓cartoon mode可以緩解一點Xvid對昏暗場景處理不力的問題,Shade兄能否指導一下

指導不敢當,我實際上沒壓過幾次,不太會壓,只會嘴巴上說說 :P
Cartoon mode 可以對付昏暗場景?我 Cartoon mode 只用過一次,那個 clip 沒有什麼昏暗場景,所以沒有注意到。
我猜想原因可能是 Cartoon mode 可以減小檔案大小非常多,所以同流量下,Cartoon mode 用的 quantizer 會較低,放棄細節來提高整體的品質。這樣昏暗場景的 quantizer 也會降低,看起來會比原本好。

對付昏暗場景,以前有討論過幾個方法
a. 前製處理,壓縮前改變畫面
1) 用 Avisynth 的 BlockBuster filter 故意在暗部加入雜訊
2) 用 MPEG2DEC3 的 LumiFilter 調整畫面的亮度
3) 用 DVD2AVI 的 Luminance Filter 調整畫面的亮度

有的人不喜歡改變畫面。
那麼
b. 後製處理,播放時改變畫面
1) 用 Film Effect 加入雜訊,例如 DivX 的 Decoder,ffdshow 都有這個功能
2) 如果已經壓出明顯方塊,用 de-block filter

有的人討厭後製添加的效果。
那麼
c. 壓縮設定
1) dev-api-4 有 Zone 區間設定的功能,調高昏暗場景那一段的品質,看是改變相對品質,還是直接指定 quantizer 壓縮
2) 利用 Zone區間設定,改變那一段 B-frame threshold 設定,試試看是 B-frame 越多越好,還是越少越好(我沒試過,所以您需自行測試)
可以先單獨壓那一段昏暗場景的部分,看用怎樣的壓縮設定,品質會比較滿意
3) 利用 Zone 區間設定,在適當的地方插入 keyframe,可以提高品質。哪個地方是適當的地方?這個... 也是要根據經驗,自己判斷..... ^^;
最好的情況是,在適當的地方插入 keyframe,然後後面整體畫質提昇,同時檔案可以縮小(因為 keyframe 插入,誤差縮小,後面參考這張 keyframe,不但畫質提昇,同時因為誤差縮小,所需記錄的差異也跟著減少,所以檔案縮小)
也就是說你要判斷得比 encoder 更準。
譬如說,有一個快速轉暗的變動畫面,encoder 認為不需要壓成 keyframe,不過我們自己測試發現,在某一張設為 keyframe,前面累積的誤差歸零,後面參考新的 keyframe 反而省力,畫質可以提昇,瑕疵可以減小,那麼便可以手動把它設為 keyframe
可以單獨先壓那一小段測試
因為 keyframe 會很大,所以如果流量要保持一定,我們必須判斷
-- 這張畫面的 texture 是否會很複雜,用 keyframe 壓會不會非常大?
如果是,就不可以設這張為 keyframe
-- 這張畫面是否剛好是劇烈變動的最後一張,後面的 frame 都和它差距不大?
如果是,那麼非常適合設為 keyframe
-- 如果 keyframe 還是有點大,但是因為這張 keyframe 使得後面的畫質顯著提昇,那麼我們還是把它設為 keyframe。不足的流量會由其他地方補,只要不要造成其他地方明顯劣化,那麼我們就可以接受

要判斷得比 encoder 更準,不太容易,不過有時候這樣設,可以改善怎麼壓都壓不好的一些片段。
如果不是之前有一段劇烈變化然後進入昏暗場景,而是一開始鏡頭一切換就是昏暗場景,昏暗場景的第一張本來就已經是 keyframe,那麼這個法子就沒有幫助 ^^;;
4) 放棄 H.263 quant
舊 2003-08-22, 10:08 PM #36
回應時引用此文章
Shade離線中