共用方式為


建置篩選圖形以寫入 ASF 檔案

[與此頁面相關聯的功能,DirectShow是舊版功能。 它已被 MediaPlayerIMFMediaEngine和媒體基金會中的音訊/視訊擷取 取代。 這些功能已針對 Windows 10 和 Windows 11 進行優化。 Microsoft強烈建議新程式代碼盡可能在媒體 基礎中使用 MediaPlayerIMFMediaEngine 音訊/視訊擷取,而不是 DirectShow。 Microsoft建議使用舊版 API 的現有程式代碼,盡可能改寫成使用新的 API。]

建立以 Windows 媒體為基礎的內容時,應用程式通常會使用下列其中一個案例:

  • 將其他格式的內容轉換或轉碼成 Windows 媒體格式。
  • 將非 Windows 媒體格式(原生流格式)的內容插入至 ASF 檔案。
  • 擷取實時數據並將其立即編碼為 Windows 媒體格式。

轉碼 ASF 檔案

您可以使用 WM ASF 寫入器,以各種方式建置檔案轉碼篩選圖形。 最簡單的方式是將 WM ASF 寫入器新增至篩選圖形,然後使用 IGraphBuilder::RenderFile 方法來自動建置圖形。

另一種方法是手動將每個濾鏡新增至圖表,並連接端子。 新增 WM ASF 寫入器之後,如果預設配置檔不適用,請使用 IConfigAsfWriter 方法來設定它,並將 WM ASF 寫入器輸入針腳連接到上游篩選條件上的對應輸出針腳。

下圖顯示典型的 WM ASF 寫入器轉碼篩選圖形組態。

轉碼篩選圖表

將原生數據流格式插入 ASF 檔案

根據預設,WM ASF 寫入器篩選器會在其輸入端預期未壓縮的音訊和視訊串流,並使用 Windows Media Audio 和 Windows Media Video 编解碼器來壓縮這些串流。 不過,ASF 檔案容器可用於任何類型的數據。 將數位媒體數據放入 ASF 檔案容器中,即可新增 ASF 所提供的功能,例如元數據和數位版權管理 (DRM),而不需要轉碼內容。

若要建立包含非 Windows 媒體型內容的 ASF 檔案,應用程式必須壓縮 WM ASF 寫入器上游篩選圖形中的數據流,並呼叫 IConfigAsfWriter2::SetParam,以略過 WM ASF 寫入器的壓縮機制,如下所示:

pConfigAsfWriter2->SetParam(AM_CONFIGASFWRITER_PARAM_DONTCOMPRESS,TRUE,0)

然後使用所需的配置檔來設定篩選條件。 輸入數據流的媒體類型必須完全符合配置檔中的格式。 在某些情況下,可能需要檢查輸入數據流的格式,並建立自定義配置檔來比對它。

當您將 WM ASF 寫入器連線到上游篩選時,請使用 IGraphBuilder::ConnectDirect 方法。 請勿使用任何「智慧型連線」方法,例如 IGraphBuilder::Connect 或 IGraphBuilder::RenderFile 來連接篩選,因為這將會停用篩選的「略過壓縮」模式。

直接從裝置擷取至 ASF 檔案

直接擷取音訊或視訊至 ASF 檔案時,篩選圖表看起來會類似下列內容,視所使用的擷取裝置類型而定。

Windows Media 視訊擷取流程

如需建立視訊和音訊擷取圖形的詳細資訊,請參閱下列主題:

除非連接所有端點,否則 WM ASF 寫入器不會執行。 如果您使用預設系統配置檔來設定WM ASF 寫入器(不建議),或具有音訊和視訊串流的任何配置檔,則它會為每個數據流建立輸入釘選,而且必須連接每個釘選。 例如,如果您不想擷取音訊,請務必將篩選條件設置為僅限視訊的配置檔,這樣就不會建立任何音訊端點。

在 DirectShow 中建立 ASF 檔案