共用方式為


設定 ASF 寫入器

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

建立 WM ASF 寫入器 篩選器時,會自動設定WMProfile_V80_256Video設定檔。 此設定檔會使用 Windows Media Audio 和 Windows Media Video 第 8 版編解碼器,這與 Windows Media 9 系列編解碼器不同。 建議您建立使用 Windows Media 9 系列編解碼器的自訂設定檔,並使用自訂設定檔設定 WM ASF 寫入器,如 設定設定檔和其他 ASF 檔案屬性中所述。 您必須先將 WM ASF 寫入器篩選準則新增至篩選圖形,再設定篩選準則,再將它連接到任何其他篩選準則。

所有輸入資料都必須經過時間戳記,而且必須先連接所有輸入針腳,才能執行或暫停篩選。 因此,如果您使用具有音訊串流和視訊串流的設定檔來設定篩選,篩選準則將會建立音訊和視訊輸入釘選,而且必須連接這兩個釘選,才能執行篩選。 因為 Windows 媒體格式 SDK 需要音訊串流才能運作,所以 WM ASF 寫入器一律必須有輸入音訊接腳,即使它適用于虛擬串流,亦即靜音、低位元速率的音訊串流。

新增資料單位延伸模組

您可以設定資料單位延伸模組的設定檔資料流程,例如 SMPTE 時間代碼,只要遵循此作業順序,篩選準則連接之前或之後:

  1. 使用 IWMStreamConfig2::AddDataUnitExtension將一或多個資料單位延伸模組新增至資料流程。
  2. 呼叫 IWMProfile::ReconfigStream 以更新設定檔。
  3. 使用更新的設定檔物件呼叫 IConfigAsfWriter::ConfigureFilterUsingProfile
  4. 尋找視訊輸入針腳,並呼叫其 IAMWMBufferPass::SetNotify 方法來註冊應用程式定義的 IAMWMBufferPassCallback 介面。

當圖形執行時,會針對每個畫面呼叫 IAMWMBufferPassCallback::Notify 方法,而且您將能夠使用其 INSSBuffer3 介面方法來取得和設定範例的屬性。

注意

在某些處理器密集型案例中,例如反向遠端分析,WM ASF 寫入器可能需要比某些下游篩選所能支援的輸出緩衝區更多。 例如,DV 解碼器不會接受其輸出針腳的多個緩衝區,而且在某些情況下,AVI 解壓縮程式也是如此。 如果您在嘗試連線到這些篩選時遇到問題,或可能在執行圖形時發生問題,可能需要撰寫可在其輸出釘選上接受任意數目緩衝區的中繼篩選。

 

在 DirectShow 中建立 ASF 檔案