跳到內容

Ffdshow/參考

來自華夏公益教科書,開放的世界,開放的書籍
(從 MeGUI/FFDShow reference 重定向)

ffdshow 是一個 DirectShow 過濾器,旨在使用 DirectShow 和影片 for windows (VfW) 介面來編碼和解碼影片。它最初由一位名叫米蘭的人建立和維護,但他在 2006 年初消失了。在那之後,ffdshow tryouts 誕生了,繼承了 ffdshow 的使命,並且一直在努力改進 ffdshow。

ffdshow 由三個主要元件組成。

  • 影片解碼器:這可以被認為是 ffdshow 的“核心”。它是 DirectShow 元件,可以將許多不同的影片格式解碼為原始影片。此外,它還可以選擇性地以多種方式變換影片(銳化、調整大小等)。
  • 音訊解碼器:它是之前元件的對應部分,是一個 DirectShow 音訊解碼器,還包括大量變換過濾器(通道混合器、均衡器等)。
  • VfW 編解碼器:ffdshow VfW 元件既是影片編碼器又是解碼器,它複製了 DirectShow 解碼器的功能,只是它與 VfW 介面配合使用。VfW 介面是一個較舊的系統,通常用於影片處理程式(VirtualDub、Adobe Premiere 等)。除了提供 VfW 解碼,它還是多種格式的 VfW 編碼器。

影片解碼器

[編輯 | 編輯原始碼]

編解碼器頁面

[編輯 | 編輯原始碼]
檔案:Ffdshow video codecs.gif

編解碼器頁面允許您控制 ffdshow 將解碼哪些格式。解碼器列將允許您為列出的每個格式選擇解碼器,您可以選擇“停用”以阻止 ffdshow 解碼它。請務必閱讀備註,並非所有解碼器都已完全實現。

提示和技巧

  • 如果您右鍵單擊列表中的任何位置,您可以在一次點選中啟用所有穩定的解碼器。這不會啟用原始影片處理。
  • 最後一個專案,用於原始影片,如果您希望 ffdshow 處理來自另一個流的解碼影片,則此專案很有用。啟用此功能的一個副作用是 ffdshow 將插入到幾乎所有流中。您可以選擇僅對一個顏色空間或所有顏色空間啟用解碼。
  • 某些專案在您選擇它們時會在列表下方顯示額外的複選框。這些框將以某些方式更改解碼器的行為
  • h264:如果您選中“在安全時跳過去塊”,解碼器將不會始終將迴圈內去塊過濾器應用於顯示幀,這將降低 CPU 使用率。如果您選中“始終跳過去塊”,解碼器將永遠不會應用迴圈內去塊器。請注意,迴圈內去塊器是 h264 解碼的正常部分,停用它(尤其是在低質量流上)將導致影像質量不佳。
  • MPEG1/2:MPEG1 和 MPEG2 都包含一個設定“使用加速技巧”。此設定將減少解碼的 CPU 使用率,但會產生更低質量的影像。使用 MPEG2 解碼,您還可以啟用 DVD 解碼,這將允許 ffdshow 解碼 DVD 影片。將其視為實驗性功能,但穩定。
  • 原始影片:正在執行 Vista?如果您想在 WMP11 中使用 ffdshow 作為原始影片的直通,則必須選中“在 Vista WMP11 中啟用”複選框。

資訊 & 除錯

[編輯 | 編輯原始碼]
檔案:Ffdshow video info.gif

此頁面允許您設定少量雜項選項,如果存在,還會提供有關當前處理的流的統計資訊。

設定

  • 您可以在此頁面更改解碼器的過濾器價值。過濾器價值基本上是 ffdshow 與其他過濾器的優先順序。如果多個過濾器可以解碼檔案,則價值最高的過濾器將被使用。
  • 如果您選中“不在以下程式中使用 ffdshow”框,您可以指定 ffdshow 將拒絕從中執行的可執行檔案列表。這僅影響影片解碼器。音訊解碼器必須單獨配置。Vfw 編解碼器沒有此功能。

提示和技巧

  • 只有在您檢視當前處理影片的 ffdshow 例項的配置面板時,統計資訊才會顯示。因為 ffdshow 的多個副本可以同時執行,所以您不能只是從任何地方開啟 ffdshow 並獲取有關您想要的特定流的資訊。如果您在媒體播放器中使用 ffdshow,則必須從相關媒體播放器中開啟配置面板,它才會顯示流統計資訊。在媒體播放器中,這通常可以透過右鍵單擊影片 -> 過濾器來實現。當流正在播放並且您啟用了托盤圖示(預設情況下啟用)時,您可以雙擊該圖示 (檔案:Ffdshow icon.gif) 也是。
  • “平均位元率”資訊是從您開啟 ffdshow 視窗時開始計算的。如果您在動作場景的中間開啟視窗,不要驚訝於看到意外的高位元率。

調整大小 & 縱橫比

[編輯 | 編輯原始碼]
調整大小 & 縱橫比對話方塊
調整大小 & 縱橫比對話方塊

本節基於 ffdshow-tryouts rev 1103 或更高版本。早期版本(或原始 ffdshow)將有一些細微的或不那麼細微的差異。
該對話方塊由三個協同工作的部分組成

  • 調整大小,它定義了基本輸出解析度,
  • 縱橫比,它限制輸出解析度以滿足縱橫比限制,以及
  • 條件啟用,它根據原始解析度啟用或停用調整大小。

調整大小

檔案:Radiobox.gif指定水平和垂直大小
  • 選擇“無縱橫比校正”:拉伸或縮小到指定大小。
  • 選擇“保持原始縱橫比”:拉伸或縮小,直到寬度或高度使用原始縱橫比接觸到指定大小。必要時新增黑邊。
  • 手動配置:拉伸或縮小,直到寬度或高度使用指定的縱橫比接觸到指定大小。必要時新增黑邊。
檔案:Radiobox.gif指定水平大小
高度將自動計算以保持原始縱橫比。
  • “無縱橫比校正”和“保持原始縱橫比”的結果相同。
  • 手動配置:您可以手動指定縱橫比。
檔案:Radiobox.gif指定縱橫比
高度將根據寬度計算。(我們在這裡稱之為一個
  • 無縱橫比校正 : 拉伸以填滿框。
  • 保持原始縱橫比 : 拉伸或縮小,直到寬度或高度使用原始縱橫比接觸到框。必要時新增黑邊。
  • 手動 : 拉伸或縮小,直到寬度或高度使用指定的縱橫比接觸到框。必要時新增黑邊。
檔案:Radiobox.gif擴充套件到下一個的倍數
  • 寬度和高度都擴充套件到指定值的下一個倍數。例如,如果您指定 100,則 320x160 變為 400x200。當 ffdshow 連線到一個不能處理非 16 倍數的寬度或高度的過濾器時,您可能需要使用此模式。
  • “保持原始縱橫比”和“手動”在此模式下也有效。
檔案:Radiobox.gif乘以
  • 水平和垂直大小都使用指定的放大倍率進行拉伸。
內部處理畫素縱橫比
  • 如果選中(預設),則調整大小以考慮畫素縱橫比 (SAR),並將輸出 SAR 固定為 1:1。
  • 如果未選中,則輸出 SAR 等於輸入 SAR,並且影片渲染器(或任何下游過濾器)處理它。

縱橫比

File:Radiobox.gif不進行縱橫比校正
  • 輸出縱橫比 (DAR) 不會受到原始 DAR 的影響。
File:Radiobox.gif保留原始縱橫比
  • 輸出 DAR 將與輸入 DAR 相同。
File:Radiobox.gif手動
  • 手動指定輸出 DAR。
  • 疊加縱橫比:如果您的計算機疊加層沒有 1:1 的 SAR(即,您的顯示器具有非正方形畫素),您可以使用此滑塊進行校正。

條件啟用

File:Radiobox.gif如果... 則調整大小
  • 僅在輸入解析度匹配指定條件時才調整大小。透過單擊<>符號以及符號,您可以指定調整大小過濾器將觸發的條件。如果不滿足條件,調整大小過濾器將不會啟用。
File:Radiobox.gif如果畫素數為... 則調整大小
  • 您可以根據每個輸入幀中的畫素數指定調整大小過濾器觸發的條件。您可以單擊大於小於符號來交換條件型別。您可以透過將寬度乘以高度來確定幀中的畫素數。

示例以下情況:您有一個 1280x720 解析度的投影儀,並且您想播放 DVD,其畫素縱橫比(也稱為 SAR)在播放過程中會發生變化。要獲得最佳調整大小系統

  • 指定水平和垂直大小"->1280x720。
  • 選擇“保留原始縱橫比”。
  • 確保選中“內部處理畫素縱橫比”。

您會發現影片將始終調整為最大可能的最佳解析度,同時保持正確的縱橫比。

Avisynth

[edit | edit source]

官方 ffdshow-tryouts 網站上有一個關於此過濾器的頁面。

輸出

[edit | edit source]
File:Ffdshow video output.gif

輸出頁面可以讓您控制 ffdshow 使用的輸出格式。上半部分可以讓您控制允許的輸出顏色空間,而下半部分用於其他輸出設定。

顏色空間

此頁面允許您設定 ffdshow 使用的預設輸出顏色空間和格式。可以使用兩種通用的顏色空間,並且每種顏色空間中都有多種格式。

  • YUV 顏色空間
預設輸出顏色空間。在這裡這裡閱讀有關 YUV 的更多資訊維基百科文章。由於 YUV 顏色空間(特別是 YV12)是影片壓縮的首選顏色空間,因此將 ffdshow 設定為輸出 YV12 可以避免它對解碼後的影像進行任何顏色空間轉換,從而加快解碼速度。
ffdshow 支援多種不同的 YUV 輸出格式。
  • I420/IYUV:類似於下面描述的 YV12,但硬體支援較少。不推薦使用,即使您的顯示卡支援它,因為 YV12 速度更快。每畫素使用 12 位 (bpp)。
  • YV12:幾乎總是最快的輸出模式(影片編解碼器通常使用 YV12 進行儲存)。對於大多數系統設定而言,推薦的輸出,儘管一些較舊的/板載顯示卡不支援它 - 如果這種情況發生在您身上,請嘗試 YUY2。Windows Media Player 有時在使用 YV12 輸出時會出現問題。使用 12bpp。
注意 NVIDIA 8800 使用者!YV12 輸出在許多情況下以及在當前可用的大多數驅動程式版本(2007 年)中似乎已損壞。如果您遇到任何影像損壞問題,請嘗試回退到 YUY2。
  • YUY2:用於 MJPEG 和一些 MPEG2 影片流,並且比 YV12 具有略高的顏色定義。輸出速度略慢於 YV12,但總體而言不會慢太多。如果您的輸入影片是 YUY2,或者您的顯示卡不支援 YV12,那麼這是推薦的輸出。使用 16bpp。
  • YVYU & UYVY:罕見且未使用,請避免。使用 12bpp。
  • NV12:另一種罕見的輸出格式,甚至不被許多卡支援。使用 12bpp。
  • RGB 顏色空間

這些模式使用更傳統、更熟悉的 RGB 顏色格式。在維基百科(再次)上閱讀有關 RGB 的資訊。RGB 輸出速度較慢,但可能比 YUV 輸出更準確 - 無論如何,差異都很小。

支援的 RGB 格式。
  • RGB32 & RGB24:這些模式將為您提供相同的影像輸出,唯一的區別是 RGB32 被打包到 32 位,這通常更快地進行操作。這些模式分別使用 32 或 24bpp。
  • RGB16 & RGB15:與上述情況相同,但只有 16/15 位。除非您知道這是一個好主意,否則 RGB15 不是一個好主意。這些分別使用 16 或 15bpp。
  • 高質量 YV12 到 RGB 轉換:因為(幾乎)所有影片檔案都是以 YUV 格式(通常是 YV12)壓縮的,所以 ffdshow 在輸出 RGB 模式時必須從 YUV 顏色系統轉換為 RGB 顏色系統。此複選框將指示它使用速度較慢但質量更高的轉換方法。如果您打算擷取螢幕截圖,或者真正非常需要每滴忠實質量的再現,請啟用此選項。

選擇最接近的匹配顏色空間

  • 選中:將自動選擇最接近輸入流的顏色空間。
  • 未選中:顏色空間將按照對話方塊中列出的順序進行嘗試。

File:Checkbox semi.gif 在輸出媒體型別中設定畫素縱橫比 / 使用疊加混合器

  • 未選中:使用經典連線方法。
  • 選中:使用高階連線方法,該方法在與下一個過濾器(通常是影片渲染器)連線時包含畫素縱橫比 (SAR) 和隔行掃描資訊。
  • 不確定/灰色:首先嚐試高階連線方法,如果失敗,則回退到經典連線方法。這是預設設定,除非您有特殊用途,否則不應觸碰。

File:Checkbox empty.gif 在輸出媒體型別中設定隔行掃描標誌 / 硬體隔行掃描消除

  • 將從輸入流或 ffdshow 的內部解碼器獲得的隔行掃描相關資訊傳送到下一個過濾器。
  • 一些過濾器(如影片渲染器)將使用此資訊在必要時對影片進行隔行掃描消除。
  • 這隻用於通知下游過濾器 - 實際結果將完全取決於這些過濾器的實現。
  • 預設情況下未選中。DVD 被標記為隔行掃描,但在大多數情況下它們最初是電影(逐行掃描)並且只是進行了電視轉換。對於此類影片,建議保持未選中狀態。

提示和技巧

  • 您可以選擇多個輸出格式,ffdshow 將嘗試使用最接近輸入的輸出格式。通常這意味著 YV12,但並非總是如此。
  • 頁面上的其他設定不應觸碰,除非您知道它們是什麼。作者建議使用右側影像中的設定(儘管啟用了 YV12)。翻轉影片偶爾對損壞或舊流很有用。

音訊解碼器

[edit | edit source]

音訊解碼器與影片解碼器有很多相似之處。因此,此處將不會介紹一些頁面,您可以改為直接參考影片解碼器的資訊。這些頁面包括

  • 編解碼器:唯一的變化是支援的格式,並且有三個帶有複選框的專案
  • AC3:複選框啟用動態範圍壓縮,這是正常 AC3 解碼器的一部分。不建議您停用此功能,除非您有充分的理由這樣做。
  • DTS:動態範圍壓縮的複選框與上面相同。第二個複選框“在 WAV 中檢查 DTS”用於告訴 ffdshow 檢查 .wav 檔案,看看它們是否實際上包含 DTS 音訊。您可以從超級音訊 CD 和 DVD 音訊光碟中獲取這些檔案。
  • Vorbis: 啟用 VorbisGain 會告訴 ffdshow 讀取可能寫入 vorbis 位元流的建議增益設定,並在存在時應用它。使用取決於使用者偏好,您可以將其視為一種“音量均衡”形式。
  • 資訊和除錯: 除了為當前播放的流提供的不同資訊外,其他方面都相同。

混音器

[編輯 | 編輯原始碼]
檔案:Ffdshow audio mixer.gif

此頁面控制混音器過濾器,它可以更改正在處理的音訊流中的聲道數量。它的主要用途是混合所有音訊流,使其具有與您的音訊設定相同的聲道數量。增加聲道數量被稱為上混,而減少則被稱為下混。

有兩種方法可以定義輸出聲道的數量:使用配置預設,或手動指定矩陣。請注意,ffdshow 最多可以輸出 6 個聲道(即 5.1)。配置預設 最常用且推薦的預設以全尺寸顯示,其他預設以較小的字型顯示。請注意,使用的聲道定義(2/0、3/2 等)指的是前置揚聲器 / 後置揚聲器

  • 1/0 - 單聲道
  • 2/0 - 立體聲: 如果您的電腦連線了兩個揚聲器,那麼這就是您想要的預設。
  • 3/0 - 3 個前置揚聲器
  • 2/1 - 環繞聲
  • 3/1 - 環繞聲
  • 2/2 - 四聲道
  • 3/2 - 5 聲道: 如果您的電腦連線了 5 個揚聲器,您幾乎肯定想要使用此設定。
  • 杜比環繞/ProLogic: 如果您將音訊輸出傳送到僅支援立體聲輸入但支援 ProLogic/ ProLogic II 的放大器,您可能想要使用此預設或下一個預設。
  • 杜比 ProLogic II
  • 與輸入相同: 不進行混音。
  • 耳機虛擬空間化: 可以使 >2 聲道音訊在耳機中聽起來更好,也可能使之聽起來更糟;通常會使 2 聲道音訊聽起來更糟。
  • 頭部相關傳遞函式
檔案:Ffdshow audio output.gif

此頁面的設計與影片解碼器的頁面相同,但實際內容不同。

設定

  • 支援的輸出樣本格式: 此處的複選框設定了影片解碼器將使用的允許輸出格式。
  • 16/24/32/32float: 這些是普通 PCM 輸出,具有不同的位深度級別。幾乎所有遇到的音訊流的“正常”速率是 16 位(在 CD、DVD、大多數 HDVD/BD 中使用),但在某些設定中使用較大的位深度可能更有優勢。如果您使用任何音訊過濾器,增加位深度可以幫助產生更準確的“舍入”。在增加此處的位深度時,有兩個重要注意事項
  • 在不同的音訊位深度之間轉換是一種有損轉換,它不會將音訊質量提高到原始質量以上。將 16 位 CD 作為 32 位輸出沒有任何意義,您不會發現聲音有任何改善。
  • 許多音效卡不支援除 16 位之外的位深度。特別是,許多 Creative 卡會在將 24/32/32float 輸出傳送到揚聲器之前將其重新取樣回 16 位,這意味著您最終只會將音訊經過多個破壞性過程而沒有獲得任何收益。
  • AC3: 此模式將音訊編碼為 AC3,然後透過 SPDIF 輸出(如果音訊已經是 AC3,則不會重新編碼)。如果您想透過連線到 SPDIF 相容放大器的揚聲器播放音訊,請考慮使用此選項。使用您的連結支援的最高位元率以獲得最佳質量。
  • LPCM: 正如幫助文字中所說:“LPCM 輸出旨在連線到來自 Cyberlink 等的 DVD 音訊解碼器過濾器。” 夠了。
  • 連線到在您希望嘗試強制將音訊輸出傳送到特定位置時很有用。通常情況下,DirectSound 是預設的也是首選的輸出,但在某些情況下,您可能想要使用其他輸出。
華夏公益教科書