史萊姆論壇

史萊姆論壇 (http://forum.slime.com.tw/)
-   應用軟體使用技術文件 (http://forum.slime.com.tw/f130.html)
-   -   (Tmpgenc)參數設定詳解 (http://forum.slime.com.tw/thread174938.html)

psac 2006-05-19 08:08 PM

(Tmpgenc)參數設定詳解
 
(Tmpgenc)參數設定詳解

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

●●●●小日本參數設定詳解
A. video(視瀕)部分:


本部分設定輸出的視瀕碼流的檔案類型和參數,大部分參數在模版中已經固定。


1)基本檔案類型:有mpeg1/mpeg2,mpeg1用於vcd, mpeg2用於svcd/dvd.

2)大小:PAL vcd標準為352x288, pal svcd標準為480x576, pal dvd標準為720x576


3)畫面寬高比:一般應該用4:3 625 line PAL, 這是電視機的螢幕比例


4)楨率:pal 的標準為25fps

5) 碼率控制:碼率控制算法是造成各種編碼器編碼效率和品質不同的關鍵因素。mpeg標準中並沒有對次算法的具體實現做規定,這通常也是商業版本的知識產權內容。


CBR(固定碼率):保持碼率基本維持在平均碼率。實現簡單,對複雜場景會因碼率不足造成馬賽克現象,對於簡單場景則不能充分利用編碼空間。

(這裡講的複雜場景是指細節/邊緣豐富以及快速變化場景)。


VBR, (2-pass VBR), 「二次處理VBR」。

其意思是通過對整個視瀕源進行2次處理使編碼效率最高:

第一遍判斷何處為複雜場景和簡單場景,第二遍根據碼率的上下限,把碼率重新分配更多給複雜場景。可以在實驗中看出,tmpgenc在進行這種編碼時進度指示在50%以前是沒有預覽 圖像的,而且楨進度指示為0。


所以老枯建議威龍改譯為「二次處理」。這種碼流控制方式應該在給定碼率下得到最好的品質,但是和具體2次分配算法關係很大。



同時耗時最長。一些其他編碼器甚至有3次處理的碼率最佳化。



MVBR (手動可變碼率),設定最大碼率和對不同的畫格檔案類型設定不同的訊息損失量,實現局部碼率最佳化。可以通過手動式指定複雜場景為I畫格對之進行較精細的編碼。參見對於GOP參數設定部分。



CQ-VBR (自動可變碼率),設定主觀品質值和碼率上下限,以主觀品質標準對編碼器量化環節進行控制,在可選參數中設定主觀品質值以後,編碼器就在能達到此品質標準的前提下盡量節省碼率。


關鍵在於編碼器對主觀品質的評價方法。這是CQ和VBR的綜合,也可以看作自動 的MVBR. 威龍漢化5版在可選參數中有一行是「不破壞最小碼率的狀態而填充資料」,本人的理解是,如果碼率過低就填充無意義碼(好浪費啊,不過可能是為了相容性的原因),英文版這一句沒有翻譯,還是日文。

:-(

CQ (固定品質),就是比MVBR多了一個主觀品質值的設定。不明白到底是怎麼控制的。
RT-CBR (既時固定碼率):連GOP層次的碼率最佳化也不做了的CBR,快一點,品質不高
RT-CQ (既時固定品質):連GOP層次的碼率最佳化也不做了的CQ,快一點,品質不高
6)碼率:這個碼率是指CBR方式下的平均碼率


7)VBV緩衝區大小:緩衝區大的話,編碼最佳化會好一些,但是解碼的時候也要求大一些的緩衝區。因此,vcd/svcd標準中參數是固定的,否則可能機器無法播放。


8)Pofile & level(類別與等級): 這個參數是mpeg1沒有的。在svcd/dvd套用中應該是MP&ML,模版自動選定。 MP&HL是為HDTV定義的,解析度可以高達 19??x11?? .
9)制式:好像這個也是mpeg2相關的參數。



我們應該用PAL.


10) 隔行掃瞄:mpeg1只支持逐行掃瞄(25 frame/sec),mpeg2可以選項隔行(50 field/sec)。如果成品在電視上播放,建議選項隔行,使運動平滑。但是隔行的視瀕在pc上看會有毛刺現象,在水準運動景象中尤其明顯。


11)播放時實現3:2下拉: 這是在film/NTSC制式轉換中需要的,即在編碼時維持畫格率不變,不做3:2下拉,而在播放中實現。參見 B.advanced部分。感謝威龍指正。


12)YUV格式:給亮度/紅色差/藍色差分配的碼位。對於人眼來說,亮度信號是最敏感的,所以就分配比較多的編碼空間以求精細,對於色差則粗糙些。一般就是4:2:0了。(其實4:2:0方案給藍色差的碼位不是0,不知道為什麼這樣寫)


13)DC份量精度:在mpeg編碼中需要對8x8的圖像塊進行DCT(離散餘弦變換),DC份量的意義基本是代表8x8塊中的平均值,一般需要為之分配比較大的編碼空間,否則馬賽克的邊緣效應就比較明顯。(8bit就不小啦,圖像壓縮中是每個bit的油 水都要搾乾的)


14)運動檢測精度:mpeg是對I畫格進行畫格內編碼,對P畫格進行預測誤差編碼。


就是對於P畫格的圖塊,在I畫格中尋找對應的部分,然後對兩個圖塊的差異部分進行編碼,可以大大節省碼率。運動檢測精度越高,圖塊搜尋匹配的範圍越大,編碼效率越高,同時編碼速度越 慢。



這部分算法同樣沒有在mpeg標準中定義,各個廠商實現水準相差會很大。一般來說,在tmpgenc中設定為普通即可。

B. Advanced (影像源)部分:

本部分設定視瀕源相關的參數,以及在編碼之前對視瀕源進行的預處理。


1)視瀕源檔案類型:隔行掃瞄/逐行掃瞄。這個參數在開啟視瀕源文件的時候會對之自動判斷設定。Tmpgenc12版不能自動識別type 1 DV,在12a版本中已經解決。


參看編碼測試頁。
2)場順序:這是整個tmpgenc甚至整個桌面視瀕領域中最混亂的一部分。


tmpgenc12a好像也不能根據視瀕源自動設定這個參數。老枯在這個問題上搞了很久,才算明白了一點。


這個參數是至關重要的,設定反了會造成產生圖像的明顯閃動,打個比方,一 個物體的運動位置次序本來是1-2-3-4-5-6-……,設定反了以後就成了2-1-4-3-6-5-8……對於模擬視瀕源,其場序是由捕捉卡檔案類型決定的,對於dv,則定義為 field order A。講到這裡還沒有什麼麻煩,但麻煩的是雖然場序只有2種,對於他們的叫法卻有3種: field order A/B (在ulead軟體中的叫法), even/odd line first (tmpgenc的叫法), field top/bottom first(bitrate viewer叫法),這3種叫法之間的對應關係是最讓人頭疼的。在英文版的tmpgenc12a中,預設的設定為「even line first (field A)」,,但在威龍漢化中預設設定為「奇數場->偶數場」,威龍講這是日文版的原意,注意不要在字面上混淆了。總之,3種叫法的關係是這樣的:

field A = even line first(奇數場->偶數場) = field bottom first。最可靠的方法,是用不同的設定對高速運動場景各產生一段隔行掃瞄的視瀕,並在電視上觀察,應該能夠看到差別


3)視瀕源的寬高比:tmpgenc可以自動識別設定,一般應該為4:3 625line PAL.


4) 畫面顯示比例和位置:一般選用「全畫面顯示並寬高比不變」,所謂「全畫面顯示並寬高比不變2」選項可能是會造成部分畫面不可見,老枯沒有嘗試過這一種。



在4:3視瀕源中可能沒有差別,但對於16:9寬屏影像在4:3螢幕上輸出而言,「全畫面顯示並寬高比不 變」是在上下留出空白,「全畫面顯示並寬高比不變2」會截掉左右兩端畫面。

。。沒有這樣試過,僅為老枯猜測,不正確的地方請朋友們指正。


5)濾鏡選項組:


這一組設定可以對視瀕源進行預處理以提高影像品質。一般來說,老枯都是在非編軟體中實現這些功能的。另外,對濾鏡的使用要適度,因為客觀上任何濾鏡的使用都是引入了訊息損失,這是對低品質視瀕源提高主觀品質的代價。


影像源範圍:選取部分影像源進行壓縮
24fps化:24fps是電影標準,一般不選
消除鬼影:鬼影是影像的疊影,視瀕源不好的時候會出現。老枯在dv中沒有遇到過。
消除噪點:在低光條件下的拍攝中影響中回出現明顯的顆粒噪點,利用此濾鏡可以消除。不過副作用是平滑了圖像,比如人的面部會像橡皮娃娃一樣,光滑但沒有質感。
銳化邊緣:可以對橫向/縱向邊緣分別設定參數,做增強處理。


簡單色彩校正:調整亮度,對比度,gamma,色度等
進階色彩校正:可以按照不同的色彩空間RGB/YUV等進行色彩校正。



消除交錯信號(de-interlace):把隔行掃瞄的視瀕源轉換成逐行掃瞄的視瀕,如果對輸出的視瀕設定為隔行掃瞄(如在打算電視上播放的svcd/dvd),則不要選用。


老枯認為在做vcd(逐行掃瞄mpeg1)時候也未必需要選用,要看視瀕源的大小決定。



比如老枯用dv 576線,在做vcd時候只需要288線,簡單捨棄一個場就可以,不需要deinterlace. 相反,如果視瀕源是352x288的隔行掃瞄視瀕,則需要做de-interlace.
裁劍畫面:由於電視機播放視瀕的時候對邊緣四周的部分做捨棄,所以可以利用這一點只對可見部分進行編碼,這樣可以加快編碼速度,並且因為節省的碼率可以利用在未裁剪區域從而提高畫面品質。

一般來說對上下左右各裁剪5%是安全的。



3:2下拉變換:因film 24fps和 NTSC 30fps畫格率不同,在制式轉換中所需要做的調整。一般不用。


畫格率不變:沒什麼好講的
聲音處理:可以增大/減小音量,並做聲音的淡入/逐漸消失。


C. GOP結構

GOP = group of picture. 在mpeg中一個GOP就是一組時間上連續的畫面。mpeg中的畫面分為3種:I,P,B. I是內部編碼畫格,編碼方式基本上就是jpeg的格式。P是前向預測畫格,編碼方式是使用運動檢測誤差編碼,參看A部分對運動檢測的說明;B是雙向內插畫格,根據前後I/P畫格進行插值運算,對插值誤差進行編碼。



建議一般不要修改GOP結構,以取得壓縮比例和圖像品質之間的最好平衡。極端的例子是只用I畫格,圖像品質會有保證,但碼流會很大。


1)輸出編輯用的碼流:這個選項會把GOP最後的B畫格取消。因為B畫格是雙向內插的,其編碼/解碼不僅需要以前的I/P,也需要以後的I/P畫格。取消最後的B畫格,可以去除GOP之間的依賴性,從而便於編輯。


2)檢測場景變化:對於快速變化的場景,強行設定為I畫格,以保證畫面品質


3)手動式強制設定畫格檔案類型:手動式設定需要精細編碼的畫面畫格為I畫格。結合MVBR碼流控制可以全面控制碼流分配。


D、量化矩陣
mpeg中的量化是對8x8 YUV 信號圖塊進行DCT變換之後的係數的量化。通過對高頻份量使用比較大的量化階從而達到減小高頻份量的編碼空間,達到壓縮的目的。代價就是喪失圖像細節,邊緣模糊等。



1)畫格內編碼量化矩陣:這是指對I畫格使用的畫格內編碼量化矩陣



2)畫格間編碼量化矩陣:是指對非I畫格的畫格間預測誤差編碼所用的量化矩陣。威龍漢化版中叫外部矩陣。


3)矩陣模版的選項:建議對一般的視瀕選用mpeg標準,可以看到,其畫格間編碼矩陣統一為16,這是因為畫格間誤差已經抵消了低頻份量,高頻份量豐富,所以和畫格內編碼矩陣有所不同。對於電腦動畫尤其是2維線條為主的動畫,建議選用CG模版,可以看到因為C G本身高頻信號豐富,其畫格內編碼矩陣也統一為32。



另外,有朋友嘗試減小量化矩陣的各個數值,老枯認為這樣做的意義不大。因為量化矩陣並不是量化的唯一因素,事實上的量化程度要根據碼流控制部分的反饋訊息而自適應調整。這樣,即使量化階減小,在碼率有限的前提下,量化係數還是會加大的。



4)YUV輸出為YCrCb: YCrCb色彩空間分配給Y亮度信號的編碼空間更大,如果視瀕源是YCrCb格式的話,這個選項可以增加畫面品質。

不過一般都是採用YUV(CCIR601),如dv,所以不要選項這個選項,否則白白浪費碼率。


5)浮點離散餘弦變換:整點運算的速度比浮點要快很多,但精度不如浮點。老枯猜測這裡的浮點其實只是把DCT變換的係數


從8bit增大為16bit的精度,並不需要浮點運算器單元參與變換,否則速度是不可忍耐的。
6)不對靜止部分做半像素的運動檢測:由於視瀕源是隔行的,對於精細的靜止邊緣線條(1個像素寬度)比如靜止字幕會出現一個場中出現,另一個場中不出現的閃動。選這個選項會消除閃動。。不過老枯覺得好像這個和量化矩陣無關
7)柔化馬賽克:沒什麼好說的。就是在8x8圖塊的邊緣做一些特別處理。能用足夠的碼率或者碼率控制手段解決馬賽克最好,因為這裡的柔化雖然只對邊緣進行低頻濾波,畢竟還是會對畫面造成影響模糊化。



E. 音瀕:
這部分大多不需要改動vcd/svcd模版。也沒有大的影響。不多討論。
F. 系統:
mpeg的系統是指視瀕+音瀕。vcd/svcd/dvd模版中已經設定好。沒有什麼可多講的。

psac 2006-05-21 05:38 PM

用 TMPGEnc 將 AVI 轉 SVCDVCD 的人必犯的嚴重錯誤設定!



一般人往往沒注意 Y/C 伸張的問題,導致轉出來的純白 (235,235,235) 在電腦
螢幕上看起來就不是純白,純黑 (16,16,16) 在電腦螢幕上看起來也不會是純黑
。因此在電腦上看,會覺得顏色變淡,好像照上了一層白紗,所以會覺得對比不
足(最亮和最暗的差距縮小),不如原始檔看起來漂亮。

通常轉 DVD 在 DVD2AVI 匯出 d2v 的時候都會做好 Y/C 伸張(YUV->RGB 設在 PC
Scale),所以再交給 TMPEGnc 時壓縮設定中不能勾選進階設定-->量子化行列(
Quantize matrix)底下的"Basic YCbCr ?出力"(Out YUV data as Basic YCbCr
not CCIR601),這樣 TMPGEnc 壓縮時便會做 Y/C 壓縮,壓出來的顏色、對比才
會正確。

但 AVI 轉檔的時候就要相反,因為 AVI 本身資料壓縮為 16~235,如果沒有要對
畫面做修改,則不必做 Y/C 伸張,但是壓縮的時候必需要勾選進階設定-->量子
化行列(Quantize matrix)底下的 "Basic YCbCr ?出力"(Out YUV data as
Basic YCbCr not CCIR601),這樣 TMPGEnc 壓縮時便不會做 Y/C 壓縮,壓出來
的顏色、對比才會正確。若要對畫面做修改,必須使用 Descale CCIR601 這個濾
鏡,把 Luminous, Chroma 兩個選項都推到 255(也就是做 Y/C 伸張),然後才
做其它的編輯動作。Descale CCIR601 的順位要排第一位。然後壓縮時直接壓縮(
"Basic YCbCr ?出力"此時就不用勾了)便可以得到正確的結果。


OK...以上算是小小的結論..
Y/C 伸張及壓縮是非常重要的觀念!
可以決定你轉出來的東西顏色鮮不鮮艷!

如果你看得懂我以上所說的...
那你不是老早就注意到...
不然就是雖然你設定錯誤但你也知道該怎麼修正了...

可是如果你看不懂...
表示你就是那 99% 設定錯誤的人且不知如何修正...
那請仔細看以下的詳細的解說...
以下為一位前輩的文章,因為寫的很淺很清楚了,沒任何概念的人都會懂!
所以特別收錄:
(我知道很長,但請耐心看完,絕對對你有說明 !)



Originally posted by Silky

DVD/VCD/DV 等使用的 MPEG/MJPEG 壓縮,記錄的 YCbCr 格式,是遵循 ITU-R
BT.601 的建議,其資料範圍(動態範圍)為 Y(亮度)16~235,C(色度)以
128 為中心代表無色,範圍 16~240。做處理和顯示的時候,YCbCr 要轉為 RGB,
其範圍為 16~235。但是電腦螢幕上,純白的點,其 RGB 值為 (255,255,255),
純黑的點,其 RGB 為 (0,0,0)。所以 MPEG/MJPEG 所記錄的純白 (235,235,235)
在電腦螢幕上看起來就不是純白,純黑 (16,16,16) 在電腦螢幕上看起來也不會
是純黑。因此 DV 錄下來的東西,拿到電腦上看,會覺得顏色變淡,好像照上了
一層白紗。同時因為資料範圍(動態範圍)縮小為 16~235,而不是全範圍(Full
Scale)0~255,所以會覺得對比不足(最亮和最暗的差距縮小),不如在電視上
看漂亮。

所以在電腦上看、編輯 DV AVI,必需要先做 Y/C 伸張,也就是將 Y/C 的動態由
原來的 16~235 增強到 0~255,然後轉為 RGB 0~255,這樣在電腦螢幕上看到的
顏色才會是正確的。以此為基準作顏色校正、各種濾鏡處理,出來的結果才會是
正確的。經過 Y/C 伸張以後,然後才作各種的編輯。最後要壓成 DVD/VCD/DV 的
時候,因為仍然是存成 MPEG/MJPEG 格式,資料範圍還是 16~235,所以已經做過
Y/C 伸張的影像在壓縮之前,必須先做 Y/C 壓縮,把目前 RGB 0~255 的資料壓
縮為 16~235,然後轉為 YCbCr 16~235,這樣才會正確。不然超過的資料在轉為
YCbCr 16~235 的時候會被削掉(clipping),對比、顏色會完全錯誤。

如果沒有編輯、修改畫面的必要,只是要將 DV AVI 直接做成 DVD/VCD,則可以
不必做 Y/C 伸張,直接壓縮為 DVD/VCD。此時資料沒有做過 Y/C 伸張,所以壓
縮的時候,不可以再做一次 Y/C 壓縮然後壓 MPEG,否則做好的 DVD/VCD 即使在
電視上播放,對比、顏色也會是錯的。

總結:
原始資料以 MPEG/MJPEG 儲存,為 Y/C 壓縮過的資料,修改編輯時需先做 Y/C
伸張之後再修改。若做過 Y/C 伸張,壓縮時需做 Y/C 壓縮,出來的畫面才是正
確的。若沒做過 Y/C 伸張,壓縮時不可以做 Y/C 壓縮,出來的畫面才是正確的


以 TMPGEnc 這個壓縮軟體為例,壓縮時預設是接收 0~255 的 RGB 資料,先做
Y/C 壓縮,然後才壓 MPEG。所以如果是 YCbCr 16~235 的資料要對畫面做修改,
必須使用 Descale CCIR601 這個濾鏡(CCIR601 就是 ITU-R BT.601,CCIR 是
ITU 以前的名字),把 Luminous, Chroma 兩個選項都推到 255(也就是做 Y/C
伸張),然後才做其它的編輯動作。Descale CCIR601 的順位要排第一位。然後
壓縮時直接壓縮便可以得到正確的結果。

如果沒有要對畫面做修改,則不必做 Y/C 伸張,但是壓縮的時候必需要勾選進階
設定--> 量子化行列(Quantize matrix)底下的"Basic YCbCr ?出力"(Out YUV
data as Basic YCbCr not CCIR601),這樣 TMPGEnc 壓縮時便不會做 Y/C 壓縮
,壓出來的顏色、對比才會正確。

總結:
如果原始資料是 YCbCr 16~235 有做 Y/C 伸張的話,壓縮時直接壓縮就好,不能
勾選 "Basic YCbCr ?出力"。沒有做 Y/C 伸張的話,壓縮時必須勾選 "Basic
YCbCr ?出力"。

第二個問題,壓縮軟體壓縮時,是否會先做 Y/C 壓縮?
如 MS MPEG-4 Codec,DivX Codec,XviD Codec 這幾個 Codec 都是假設收到的
資料是 0~255,會先做 Y/C 壓縮的動作。那麼其它 Codec 和壓縮軟體呢?這個
也必須要做實驗驗證才能確定。

唯有解壓縮和壓縮的轉換式能正確搭配(做過 Y/C 伸張壓縮時就必須做 Y/C 壓
縮,沒做 Y/C 伸張壓縮時就不可以做 Y/C 壓縮)最後壓出來的成品才會是正確
的。



以上或許有人看得霧煞煞...
那我稍微再做個簡單的說明(至少字比較少)...

Y/C 伸張是將資料範圍(動態範圍)增強
Y/C 壓縮是將資料範圍(動態範圍)縮小
DVD/VCD/AVI 所紀錄的資料範圍(動態範圍)都是 16~235(純白 235 純黑 16)
電視上顯示的資料範圍(動態範圍)是 16~235(純白 235 純黑 16)
而電腦螢幕上顯示的資料範圍(動態範圍)是 0~255(純白 255 純黑 0)
但 TMPEGnc 預設接收的資料範圍(動態範圍)也是 0~255(純白 255 純黑 0)
當壓縮時為恢復 DVD/VCD/AVI 的資料範圍預設會做 Y/C 壓縮(0~255-->16~235)

所以當 TMPEGnc 讀取到 DVD/VCD/AVI 的資料時會以為資料範圍也是 0~255
結果壓縮時照預設也做了一次 Y/C 壓縮(16~235-->小於 16~235)...
導致資料範圍小於 DVD/VCD/AVI 規定的 16~235
由於電視上顯示的資料範圍是 16~235
因此你在電視上看會覺得顏色變淡,好像照上了一層白紗
因為所記錄的純白(小於 235)看起來不是純白(255)
純黑(大於 0)看起來也不是純黑(0)
同時因為資料範圍(動態範圍)小於 16~235
所以會覺得對比不足(最亮和最暗的差距縮小)

同樣的道理
在電腦螢幕上觀看 DVD/VCD/AVI 時
為恢復電腦螢幕的資料範圍,顯示卡和軟體預設會做 Y/C 伸張(16~235-->0~255)
根據上述狀況,若觀看用 TMPEGnc 壓出資料範圍小於 16~235 的 DVD/VCD/AVI
此時顯示卡和軟體預設會做的 Y/C 伸張將導致[小於 16~235]-->[不足 0~255]
一樣會產生對比不足(最亮和最暗的差距縮小)的情形!

所以結論就是我一開始所說的,AVI 轉檔的時候,因為 AVI 本身資料壓縮為 16~
235,如果沒有要對畫面做修改,則不必做 Y/C 伸張,但是壓縮的時候必需要勾
選進階設定-->量子化行列(Quantize matrix)底下的 "Basic YCbCr ?出力"(
Out YUV data as Basic YCbCr not CCIR601),這樣 TMPGEnc 壓縮時便不會做
Y/C 壓縮,壓出來的顏色、對比才會正確。

最後我相信有人會問 TMPEGnc 裡 Descale CCIR601 這個濾鏡在哪裡?
設定(TMPEGnc 程序主畫面右下角"設定"按鈕)-->進階-->自訂色彩修正(該頁面下
方的濾鏡中)點兩下進入-->新增-->模式選 Descale CCIR601-->"明亮"跟"色度"
都推到底(255)-->"啟動濾鏡"打勾-->按"確定"

另外何時需要用的此濾鏡呢?
基本上只要你讀取 TMPEGnc 的各項範本後,在[設定(TMPEGnc 程序主畫面右下角
"設定"按鈕)-->進階]這個頁面下你有變動到的話,建議一定要加此濾鏡!原因上
面已經說了!


後記:
其實筆者也是後來才知道 Y/C 壓縮與伸張觀念對轉檔的嚴重性,經實驗結果發現
真的效果差非常多,我也知道玩 AVI 轉 SVCD/VCD 的人很多,所以特此寫一篇教
學,希望各位讀者看過以後別再犯此錯誤


所有時間均為台北時間。現在的時間是 06:09 PM

Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2024, Jelsoft Enterprises Ltd.

『服務條款』

* 有問題不知道該怎麼解決嗎?請聯絡本站的系統管理員 *


SEO by vBSEO 3.6.1