Advance Member
加入日期: Oct 2001 您的住址: 台中
文章: 380
|
LIBIDO
如果沒記錯的話你應該以前是玩audio的吧 別太謙虛了 |
|||||||
2002-07-26, 05:24 AM
#31
|
Regular Member
加入日期: Dec 2000 您的住址: 台中市
文章: 51
|
引用:
還是不行,請問VFAPI那個AVI檔,可以用WINDOWS MEDIA PLAYER |
|||
2002-07-26, 05:27 AM
#32
|
Regular Member
加入日期: Dec 2000 您的住址: 台中市
文章: 51
|
引用:
還是不行,請問VFAPI那個AVI檔,可以用WINDOWS MEDIA PLAYER播放嗎? |
|
2002-07-26, 05:27 AM
#33
|
Advance Member
加入日期: May 2001
文章: 458
|
謝謝LIBIDO兄的詳細回應,請原諒我老實說,後面那一半我有看沒有懂
不過我按照先提供的參數加上您提供的資訊實作一遍,看起來好多了, (Luminous, Chroma 我不知要加多少,隨便各加了60) Anyway 謝謝您! 修正後 |
2002-07-26, 05:30 AM
#34
|
Master Member
加入日期: Nov 2001
文章: 1,563
|
引用:
不行...可以的話我就可以利用AviUtl 修正來看�**穭痐kdvd了=_=... |
|
2002-07-26, 07:04 AM
#35
|
Major Member
加入日期: May 2001
文章: 122
|
引用:
我沒寫清楚 YUV Descale CCIR601(Luminous, Chroma ~> 255) 的意思是 Luminous, Chroma 都推到 255 後面那一段是我作的筆記,在解釋為什麼有作 ITU-R BT.601 補正就不能勾選 "Basic YCbCr 出力"。 ...... 原來 DVD 上面記錄的是壓縮過的 YUV 訊號,DVD2AVI 解壓縮出來成為 YUV 4:2:0 之後再內插展開成為 YUV 4:2:2。存成專案檔以後轉成 VFAPI,VFAPI 會將 YUV 4:2:2 轉成 RGB 的格式才能交給其他程式開啟處理。此時 RGB 的範圍是 16~235(以" R(d)G(d)B(d) "表示),純白是 R(235),G(235),B(235)。在電腦上看,因為電腦螢幕的純白應該是 R(255),G(255),B(255),所以 R(235),G(235),B(235) 看起來會"不夠白",整個顏色對比都不正確。所以交給 AviUtl 之後,要先作 ITU-R BT.601 補正,將 0~235 的 RGB 資料伸張為 0~255,看起來才會接近正確。AviUtl 應該是將 R(d)G(d)B(d) 轉回 YUV 之後做 YC 伸張,再轉為 RGB,此時 RGB 的範圍就是 0~255(表示為" RGB ")。 ======================================================DVD 解碼 YUV 4:2:0 ==> DVD2AVI 補間 YUV 4:2:2 --> .D2V ==> VFAPI YUV 4:2:2 <2>--> RdGdBd(16~235) ==> AviUtl ITU-R BT.601 補正 RdGdBd <2>--> YUV --> 伸張 <1>--> RGB(0~255) ====================================================== 然後交給 TMPGEnc 壓 MPEG1/2 的時候,TMPGEnc 有個選項,叫做 "Basic YCbCr 出力",不勾的話 TMPGEnc 會先將 RGB 壓縮為 16~255 之間的範圍(表示為" R(d)G(d)B(d) "),然後再轉換為 YUV 進行 MPEG 壓縮。這樣做等於 Cinema Craft Encoder SP 這個軟體的 "16 から235" 這個選項,用的是下面這個 RGB->YUV 的轉換式 ====================================================== <1> CCS 的 "16 から235" = TMPGEnc 不勾 "Basic YCbCr で出力", PC Scale Rd = 219*R + 16*256 Gd = 219*G + 16*256 Bd = 219*B + 16*256 Y = 77*Rd + 150*Gd + 29*Bd / 2^16 CR = (( 131*Rd - 110*Gd - 21*Bd ) / 2^16 ) +128 CB = (( -44*Rd - 87*Gd + 131*Bd ) / 2^16 ) +128 ====================================================== 經過這樣壓縮以後的 MPEG1/2 拿到電視放是正常的,在電腦上放播放軟體會先解出 YUV 4:2:0,然後包成 YUY2 的格式,走 YUY2 DirectDraw Overlay,直接丟給顯示卡上的硬體色空間轉換做 YUV->RGB,轉換成 RGB 然後顯示到螢幕上。顯示卡的 YUY2 轉 RGB 是 PC Scale,會先作 YC 伸張,然後才轉為 RGB,所以轉換後的 RGB 範圍也是 0~255,這樣在電腦上看顏色才會是正常的。 ====================================================== ==> TMPGEnc MPEG 壓縮, 不勾選 "Basic YCbCr で出力" RGB(0~255) --> RdGdBd(16~235) <1>--> YUV 4:2:0 壓縮 ==> 播放 解出 YUV 4:2:0 --> YUY2 DirectDraw Overlay --> 顯示卡色空間轉換(PC Scale)--> 正確的顏色 ====================================================== 那麼如果勾選 "Basic YCbCr 出力" 的話會怎樣呢? 勾選的話(等於 Cinema Craft Encoder SP 的 "0 から255" )TMPGEnc 就不會作 RGB 壓縮,直接以下面這個轉換式轉換為 YUV ====================================================== <2> CCS 的 "0 から255" = TMPGEnc 勾 "Basic YCbCr で出力", TV Scale Y = 77*Rd + 150*Gd + 29*Bd / 2^8 CR = (( 131*Rd - 110*Gd - 21*Bd ) / 2^8 ) +128 CB = (( -44*Rd - 87*Gd + 131*Bd ) / 2^8 ) +128 ====================================================== 這個轉換式(ITU-R BT.601-5)的 RGB 是給範圍 16~235 的 R(d)G(d)B(d) 用的,而我們現在輸入的 RGB,是已經做過伸張之後範圍 0~255 的 RGB,強行帶進去轉換的話,會造成許多資料破表被削掉,轉換之後的 YUV 再顯示出來,顏色對比會完全不正確。 所以如果有作 ITU-R BT.601 補正的話,壓縮時就不能勾選 "Basic YCbCr 出力"。 ^^; 反過來說如果沒有作 ITU-R BT.601 補正,壓縮時就要勾選 "Basic YCbCr 出力"。 希望這樣會清楚一點。 |
|
2002-07-26, 07:08 AM
#36
|
Master Member
加入日期: Nov 2001
文章: 1,563
|
LIBIDO 老師....我有個地方不清楚
引用:
DVD2AVI 解壓縮出來成為 YUV 4:2:0 之後再內插展開成為 YUV 4:2:2 在這步驟有做到 YC 伸張(Y: 16~235 -> 0~255,C: 16~240 -> 0~255)嗎?還是根本一點關係都沒有^^"...那這選項到底是做什麼的阿? 還有...VFAPI 會改變 RGB 的範圍嗎?會不會把 0~255 改成 16~235 阿? |
|
2002-07-26, 09:09 AM
#37
|
New Member
加入日期: Jul 2002 您的住址: TAIPEI
文章: 1
|
小弟是在男性物語拜讀您的教學
目前已會粗淺的轉檔技巧..先感謝您了 再來就慢慢學習吧!!
__________________
********** *新 手 上 路* *請 多 指 導* ********** |
2002-07-26, 10:26 AM
#38
|
Major Member
加入日期: May 2001
文章: 122
|
引用:
什麼老師,我是學生,您認錯人了,老師是 jackei 前輩 沒有做 YC 伸張,這裡做的是另一件事情。 DVD 存的 YUV 4:2:0 是上下兩排 4 個點為一個單位,每個點取樣(記錄)一個 Y(亮度)值,4 個點共用一個 C(色度,UV)值(因為人眼對亮度比較敏感,對色度的差異比較看不出來,所以亮度取樣多一點,色度少一點,可以節省空間,縮小容量)。像下面這個樣子 Y Y Y Y 然後一個 UV。 DVD 的解析度是 720x480,總共有 720x480 個點,所以解碼出來會有 720x480 個 Y(亮度)值和 360x240 個 U 值還有 360x240 個 V 值。 DVD2AVI 會將這個 4:2:0 的資料先展開成 4:2:2,也就是同排的兩個點為一個單位,每個點一個 Y,兩個點共用一個 UV。像下面這樣 Y Y 然後一個 UV .... Y Y 然後一個 UV .... 展開的時候如果直接複製同樣的 UV 值,四個點顏色都一樣,看起來會是一塊一塊的色塊,很難看,所以通常會做一些內插的處理。DVD2AVI 的計算式是(**交錯畫面 4:4:4**) odd line 8*n+1: [ Yo1, ( Co0 + 7*Co1)/8 ] even line 8*n+2: [ Ye1, (3*Ce0 + 5*Ce1)/8 ] odd line 8*n+3: [ Yo2, (5*Co1 + 3*Co2)/8 ] even line 8*n+4: [ Ye2, (7*Ce1 + Ce2)/8 ] odd line 8*n+5: [ Yo3, ( Co1 + 7*Co2)/8 ] even line 8*n+6: [ Ye3, (3*Ce1 + 5*Ce2)/8 ] odd line 8*n+7: [ Yo4, (5*Co2 + 3*Co3)/8 ] even line 8*n+8: [ Ye4, (7*Ce2 + Ce3)/8 ] jackei 樣說效果等於 6-tap 的 FIR filter。 如果你的 Color Space 選的是 YUV 4:2:2 輸出,那就做到這裡為止了。 如果你的 Color Space 選的是 RGB24,**而且** YUV->RGB 選的是 "PC Scale",則 DVD2AVI 會繼續做 YUV 4:2:2 -> YUV 4:4:4 -> YC 伸張 -> RGB(0~255) 效果等同於 YUV 4:2:2 輸出 + AviUtl ITU-R BT.601 補正。 如果你選的是 TV Scale,則 DVD2AVI 就不會做 YC 伸張。 PC Scale/TV Scale 的選項影響的是 YUV -> RGB 的轉換,只有在 Color Space 選 RGB24 輸出時才有作用。 而 YC 伸張的計算式是(簡略) Y' = (Y - 16) * 255 / (235 - 16) C' = C * 255 / (255 - (240-16)) Y', C' 是伸張後的 YC 值。 引用:
不會。 |
||
2002-07-26, 10:46 AM
#39
|
Master Member
加入日期: Nov 2001
文章: 1,563
|
引用:
ㄏㄏ..了解了^^ 那"名師出高徒"總可以了吧^^d 所以只要我選 YUV 4:2:2 輸出,接下來不管選 PC Scale 還是 TV Scale,都不會做 YC 伸張,因此須再經過 AviUtl 做 ITU-R BT.601 補正,並且不能勾"Basic YCbCr 出力",轉出來的影片顏色才會是正確的,或是乾脆不經過 AviUtl 直接在壓縮時勾"Basic YCbCr 出力"也可 所以我整理一下: 要轉出正常顏色的選擇: 1.選 YUV 4:2:2 輸出-->選 PC Scale 或是 TV Scale 沒差--> a.用 AviUtl 做 ITU-R BT.601 補正-->壓縮時就不能勾選 "Basic YCbCr 出力"。 b.不用 AviUtl 做 ITU-R BT.601 補正-->壓縮時就要勾選 "Basic YCbCr 出力"。 2.選 RGB24 輸出-->選 PC Scale-->不用 AviUtl 做 ITU-R BT.601 補正-->壓縮時就要勾選 "Basic YCbCr 出力"。 3.選 RGB24 輸出-->選 TV Scale-->用 AviUtl 做 ITU-R BT.601 補正-->壓縮時就不能勾選 "Basic YCbCr 出力"。 |
|
2002-07-26, 01:14 PM
#40
|