共用方式為


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

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

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

  • 將某些其他格式的內容轉換成 Windows 媒體格式或轉換內容。
  • 將非 Windows 媒體型 (原生資料流程格式的內容插入 ASF 檔案中) 。
  • 擷取即時資料並將其立即編碼為 Windows Media Format。

轉碼 ASF 檔案

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

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

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

轉碼篩選圖形

將原生資料流程格式插入 ASF 檔案

根據預設,WM ASF 寫入器篩選會在其輸入釘選上預期未壓縮的音訊和視訊資料流程,並使用 Windows 媒體音訊和 Windows Media 視訊編解碼器來壓縮串流。 不過,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 媒體視訊擷取圖表

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

除非已連接所有針腳,否則 WM ASF 寫入器不會執行。 如果您使用預設系統設定檔來設定 WM ASF 寫入器, (不建議) ,或是任何具有音訊和視訊串流的設定檔,則會為每個資料流程建立輸入釘選,而且每個釘選都必須連線。 例如,如果您不想要擷取音訊,請務必使用僅限視訊設定檔來設定篩選準則,這樣就不會建立任何音訊釘選。

在 DirectShow 中建立 ASF 檔案