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

加入日期: Oct 2002
您的住址: El's room
文章: 1,046
引用:
作者snic
如果我是要用 TMPGEnc 在環境設定中把 DirectShow 讀取的優先權調到最高的情況下轉一個 XVID 的 AVI,並且用 VOBSUB 外掛字幕轉檔,那這樣子 TMPGEnc 讀到的 XVID 資料還會是輸出 YUY2 嗎?

TMPGEnc 會讀到 VobSub 輸出的資料,所以這個資料是什麼格式,由 VobSub 決定。
用 Media Player 播放時情況
XviD(YUY2) -> DirectVobSub(疊合字幕) -> Media Player(Renderer)

用 TMPGEnc 以 DirectShow 讀取的情況,也是一樣
XviD(YUY2) -> DirectVobSub(疊合字幕) -> TMPGEnc

DirectVobSub 的設定中可以指定輸出的色彩格式。
不過這個格式是什麼不重要,因為你用 TMPGEnc 讀,最後一定都會轉成 RGB 的格式。
即使輸入的是 YUY2,最後還是會轉成 RGB,TMPGEnc 的這個轉換是轉成伸張後的 RGB,也就是 0~255 的 RGB,也就是一般正常的 RGB。
如果不是用 TMPGEnc 執行壓縮也一樣,經過 TMPGEnc 讀取後,轉 VFAPI 輸出,格式都會是 RGB24。
TMPGEnc Plus 只支援 RGB 的輸出入格式。

TMPGEnc 3.0 XPress 才支援 YUY2 的輸入和處理,而且它的 Filter 裡面,仍然有部分 Filter 不能在 YUY2 下處理,只能在 RGB 格式下處理,只要使用這些 Filter,TMPGEnc XPress 就會自動在內部做 YUV -> RGB -> YUV 的轉換動作。
引用:
使用 VfW Codec 跟 DirectShow Filter 來解碼、讀取檔案有什麼差別嗎?

用 DirectShow 讀取就跟用 Media Player 播放一樣,Media Player 能放的檔案,用 DirectShow 都能讀取,包括 .MPG。
VfW (AVISource) 當然就只能開 .AVI。
VfW 的讀取方式也就是 VirtualDub 的開檔方式。
所以即使系統上有 DirectShow 的 Decoder(附檔名是 .ax,例如 xvid.ax),Media Player 能放,但是缺少 VfW Codec(附檔名是 .dll,例如 xvid.dll。Codec 代表它不只是 Decoder,還包括 Encoder),同一個檔案你用 VirtualDub 就是開不了。
引用:
另外我曾經用 Avisynth 內建的 VfW Codec 將 AVS 轉成偽 AVI 檔
可是我將這個偽 AVI 檔拉進 VirtualDubMod 裡在資訊裡卻看不出來他為何種色空間
若我的 AVS 原版輸出是 YV12,那轉會成偽 AVI 以後還能維持 YV12 輸出的色空間嗎?

呃,您說的是 Avisynth 附的 makeAVIS 這個小程式嗎?
這個程式其實是 ffdshow 的作者寫的,它可以很快速的把 .avs 轉成一個很小的、虛擬的 .avi 檔,讓不支援直接讀取 .avs 的程式可以直接開啟。
AVIS 會遵照你原本 .avs 的色空間輸出,不會去更動,例如你原本 .avs 最後輸出的色空間是 YUY2,它輸出的就是 YUY2。
不過 AVIS 在儲存 .avi 的時候,你也可以選擇要強迫更改它輸出的色彩格式,例如我強迫這個 .avi 一定要輸出 RGB24,則這個 AVI 在輸出的時候,就會由 AVIS(ffdshow) 的色彩轉換程式做色彩轉換的工作。

makeAVIS 這個小程式 Avisynth 有內附,安裝的時候可以一併安裝。或者安裝 ffdshow,現在 ffdshow 合併了解碼(ffdshow) 和壓縮(ffvfw) 兩個程式,安裝的時候選擇要安裝 VfW 的介面,ffdshow 就會順便一起安裝 ffvfw 的 Codec,這樣你就可以在 VD 裡面選擇所有 libavcodec 支援的壓縮格式來壓縮。
由於現在 ffdshow 整合了 VfW Codec 在裡面,所以安裝的時候也可以選擇順便一起安裝 makeAVIS 這個程式,以前這個程式是在 ffvfw 裡面。
整合以後,原本的另一個程式 ffvfw 就取消了不再繼續更新,後續的發展就合併到 ffdshow 裡面。
所以如果要 makeAVIS,安裝 ffdshow 也可以。

不過現在大部分的 MPEG 壓縮程式都支援直接開啟 .avs,所以不一定會用到 AVIS。
CCE SP 是最早支援 .avs 的壓縮程式,而且它支援 YV12 直接輸入。
MainConcept MPEG Encoder 也可以直接開 .avs,不過注意不能接受 YV12 的輸入,如果你丟 YV12 輸出的 .avs 給它,它會去找系統上的 YV12 Decoder 來解碼,轉成它可以接受的 RGB 格式。
系統上的 YV12 Decoder,這個 Windows 沒有內建,所以如果沒有安裝額外的 YV12 Decoder,就會直接跳出來說不能開啟。
但是如果你有裝 DivX 或 XviD 的 Codec,這兩個 Codec 會順便向系統註冊說他們可以解 YV12,所以如果你有裝這兩個 Codec,就會由這兩個 Codec 來解碼 YV12 -> RGB。
於是這樣就不會跳出不能開啟的訊息,可以順利開啟有畫面,而你完全不知道背後其實轉了又轉,已經由 YV12 變成 RGB,中間還多出一個 DivX/XviD Codec 充當 YV12 Decoder 出來參一腳

TMPGEnc 也可以直接開啟 .avs,同樣它只接受 RGB 輸入,所以如果你丟 YUY2/YV12 給它,它也一律都先轉成 RGB,這個也是在背後默默地做,表面上完全感覺不出來
TMPGEnc 3.0 XPress 支援直接 YUY2 輸入,所以如果你的 .avs 最後是輸出 YUY2,例如最後一行加上 ConvertToYUY2(),TMPGEnc 3.0 XPress 就會直接接受,不會再去轉換色彩格式。

最後是 ProCoder,ProCoder 同樣可以直接開 .avs,同樣也只能接受 YUY2/RGB 的輸入,YV12 不可,所以你丟 YV12 的東西給它,它會和 MainConcept MPEG Encoder 一樣去找系統上的 YV12 Decoder。
舊 2004-09-25, 06:11 PM #20
回應時引用此文章
Shade離線中