瀏覽單個文章
LIBIDO
Major Member
 

加入日期: May 2001
文章: 122
引用:
Originally posted by 無責任


我剛試找了前兩天壓的心之谷..keyframe好像都蠻正常的...

實驗實驗 :P
我剛剛又把 Nandub 翻出來,重新壓了一次 FMP 的片頭,First Pass 時有儲存 Scene Change 的資料,Second Pass 時將 Internal SCD 調成 100%(關閉),使用的 Codec 是 MS MPEG4v2,是微軟正統的 3920 版,不是被人改過,會自動插 keyframe 的 VKI 版。
結果,Nandub 的 SCD 大概有 65~70% 的正確性,一部分的 keyframe 會插在場景變換的地方,另一部份總是會在場景變換之後才插入。
以上是使用 MS MPEG4v2,如果是用 DivX 3.11,結果也一樣。
我記得 Gordian Knot 這個軟體也曾提過這個問題,所以他附了一個 Nandub stats 檔的編輯器,如果你不信任 Nandub 的場景變換檢出,可以自己編輯 keyframe 的資料,或者用 Gordian Knot 內建的 SCD 取代 Nandub。
另外一個灰色方塊的問題,我倒是常常碰到,隨便壓壓就有數十個 frame 都會出現這種瑕疵 ^^;

袖子紅白交界的地方,可以看到一整排的灰色方塊
還有袖口和手臂的交界處,以及額頭,頭髮和臉頰... 等等。
DebugView 顯示這個 frame(df:000795,delta frame 795)前後的壓縮狀態是
======================================================
[Nandub] df:000794, 13274 bytes, 5x (2.09x), R:6000, M:285, BR:40.00%-(39.93%), D: 3.61Mb, PSNR=38.01(21.11)
[Nandub] df:000795, 34266 bytes, 2x (2.09x), R:6000, M:287, BR:39.94% (39.93%), D: 3.61Mb, PSNR=36.55(9.29)
[Nandub] ==> Reencoding : PSNR was 36.70(7.83=shit), CL was 2
[Nandub] ==> PSNR was 36.70(7.83). Reencoding at CL 3...
[Nandub] ==> PSNR was 38.24(11.60). Reencoding at CL 4...
[Nandub] ==> PSNR was 38.20(17.69). Reencoding at CL 5...
[Nandub] ==> PSNR was 37.98(20.35). Reencoding at CL 6...
[Nandub] ==> PSNR was 37.35(20.48), going with CL 5...
[Nandub] df:000796, 19361 bytes, 5x (2.10x), R:6000, M:289, BR:40.00%-(39.93%), D: 3.62Mb, PSNR=37.98(20.35)
[Nandub] df:000797, 34768 bytes, 2x (2.10x), R:6000, M:291, BR:39.93% (39.93%), D: 3.62Mb, PSNR=36.78(13.82)
[Nandub] ==> Reencoding : PSNR was 33.67(7.96=shit), CL was 2
[Nandub] ==> PSNR was 33.67(7.96). Reencoding at CL 3...
[Nandub] ==> PSNR was 37.16(11.65). Reencoding at CL 4...
[Nandub] ==> PSNR was 40.19(18.44). Reencoding at CL 5...
[Nandub] ==> PSNR was 40.76(21.94). Reencoding at CL 6...
[Nandub] ==> PSNR was 40.35(21.45), going with CL 5...
[Nandub] df:000798, 10556 bytes, 5x (2.10x), R:5021, M:293, BR:40.00%-(39.93%), D: 3.63Mb, PSNR=40.76(21.94)
======================================================
我有開 AntiShit,設定是 AntiShit 17dB,Min quality 21dB,Modulation 50%。
可以看到 df:000795 的 worst block 的 PSNR(括弧中的數字)是 9.29dB,已經低於 AntiShit 的 17dB,但是 AntiShit 並沒有啟動。
這是因為我有設 Motion Modulation 50%,高動態的 frame 會自動降低閥值。高動態的時候人眼看不清楚,即使有 Shit 可能也看不出來,所以在高動態的時候可以降低 AntiShit 的閥值(附註一)。這個 frame 的 Motion 是 287(M: 後面的數字,Nandub 壓縮時,Video 圖形裡面顯示的水藍色的點),所以 AntiShit 的閥值變成 17*(1-(287/300)*(50/100))=8.868dB。要低於 8.868dB AntiShit 才會啟動。
下一個 frame df:000796 之前你會看到 Nandub 一直在提高 CL(Compression Level,Quantizer),做重新壓縮的動作(Reencoding)。最後 delta frame 796 是以 Quantizer 5x 成交 ^^(後面括弧裡面的數字是到目前為止,平均的 Compression Level)
這張 5x 的畫面看起來是這樣

-_-|||
AntiShit 真的是兩面刃啊...
所幸這幾個 frame 都是在高動態的地方,如果不是具有敗眼、魔眼、天眼...的人應該看不出來 ^^;
不過後面有幾個畫面會在靜態的時候破功,看來我必須要改改 AntiShit 的設定值才行。

還有 Nandub 沒有在應該插入 keyframe 的地方插入 keyframe,結果造成

這張畫面剛好是在場景變換的地方,被 AntiShit 以 delta frame 4x 壓縮,畫面都是晶格狀,連帶牽連後面幾個 frame,後面幾個 frame 用 2x 壓縮都救不回來。

所以小弟還在研究,要怎麼用 Nandub 壓完美的作品。看到網路上其他人用 Nandub 壓的動畫,真是超漂亮,真是不知道他們是怎麼作的,實在太厲害了

附註一:這個設定原本的用意是,因為 Nandub 2nd Pass 的時候,會根據 1st Pass 記錄的動態值或流量曲線,重新分配 Bitrate。如果你有設 Curve compression,他是把 1st 記錄的流量曲線壓平一點,也就是把原本 Codec 壓高流量地方的 Bitrate,分一點給低流量的地方,讓高低流量之間的差距縮小,曲線變得平滑一點。這樣"說是"可以增進整體的平均品質。如果你有設 Motion based curve Modulation,他是把 1st 記錄的高動態的地方的 Bitrate,分一點給低動態的地方,理論是高動態人眼比較不敏銳,察覺不出壓縮瑕疵,可以壓爛一點。
所以我們知道 Nandub 壓縮,高動態的地方 Quantizer 會比較高,畫面會被壓縮得比較厲害,通常 PSNR 值也會很低。此時 PSNR 值低並不是因為灰色方塊的緣故,所以使用 AntiShit 提高 Quantizer 重壓於事無補,結果反而會更糟。所以 Nandub 設計了 Motion modulation 這個選項,讓 AntiShit 的閥值在高動態的時候自動降低,免得 Anti Shit 不成,反而壓出一張 Shit。
舊 2002-07-09, 02:55 PM #17
回應時引用此文章
LIBIDO離線中