WM ASF 寫入器篩選器 (DirectShow)

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

WM ASF 寫入器是 Windows 媒體™格式 SDK 所提供寫入器對象的包裝函式篩選。 篩選會接受可變數目的輸入數據流,並建立進階系統格式 (ASF) 檔案。 篩選會處理所有壓縮和多任務處理(雖然可以略過壓縮機制)。 您可以在各種案例中使用 WM ASF 寫入器,包括數位視訊 (DV) 擷取、音訊重新壓縮,以及音訊-視訊交錯 (AVI) 或 MPEG 多媒體檔案以進行網路串流轉換。 此篩選器提供在 Microsoft DirectShow 中建立Microsoft® Windows Media Audio 和 Windows Media™ Video 檔案的唯一方法。

如需詳細資訊,請參閱 在 DirectShow 中建立 ASF 檔案。

標籤
篩選介面 IAMFilterMiscFlagsIBaseFilter、IConfigAsfWriterIConfigAsfWriter2IFileSinkFilter2IMediaSeekingIPersistStream、IServiceProviderISpecifyPropertyPages此外,篩選條件也會公開下列 Windows Media Format SDK 接口:IWMIndexer2、IWMHeaderInfo、 IWMWriterAdvanced2
輸入釘選媒體類型 取決於 ASF 設定檔。 通常未壓縮的音訊和視訊類型,但如果篩選條件符合 ASF 配置檔,則會接受壓縮的類型。
輸入針腳介面 IAMStreamConfigIAMWMBufferPass、IMemInputPin、IPinIServiceProvider此外,針腳也會公開下列 Windows 媒體格式 SDK 介面:IWMStreamConfig2 (透過 IServiceProvider)
輸出釘選媒體類型 不適用。
輸出釘選介面 不適用。
篩選 CLSID CLSID_WMAsfWriter
屬性頁 CLSID CLSID_AsfWriterProperties
可執行檔 Qasf.dll
優點 MERIT_DO_NOT_USE
篩選類別 未指定

 

備註

此篩選器需要 Windows 媒體格式軟體開發工具套件 (SDK) 及其基礎相依性。

根據 ASF 數據流的設定檔或設定檔識別碼而定,篩選上的輸入針腳數目。

輸入針腳支援 IAMStreamConfig 介面中的一種方法:IAMStreamConfig::GetFormat。 所有其他方法都會傳回E_NOTIMPL。 呼叫 GetFormat 方法,以查詢目前 ASF 配置檔所定義的針腳目的地壓縮格式。 使用 IConfigAsfWriter 介面來設定配置檔。

您可以使用篩選的 IServiceProvider 介面來取得 IWMWriterAdvanced2 介面的指標,該介面定義於 Windows 媒體格式 SDK 中。 您可以使用 IWMWriterAdvanced2 介面來控制來源視訊交錯時解除交錯的視訊。 若要設定解交模式,請呼叫 IWMWriterAdvanced2::SetInputSetting。 針對 dwInputNum 參數,請使用視訊輸入釘選的以零起始的索引,如 IEnumPins 介面所列舉

下列範例示範如何查詢此介面:

// Assume that pAsfWriter is a valid IBaseFilter pointer.
IServiceProvider *pProvider = NULL;
IWMWriterAdvanced2 *pWMWA2 = NULL;

hr = pAsfWriter->QueryInterface(
    IID_IServiceProvider, 
    (void**)&pProvider
    );
if (SUCCEEDED(hr))
{
    hr = pProvider->QueryService(
        IID_IWMWriterAdvanced2,
        IID_IWMWriterAdvanced2, 
        (void**)&pWMWA2
        );
    pProvider->Release();
    if (SUCCEEDED(hr))
    {
        // Use pWMWA2. (Not shown.)
        pWMWA2->Release();
    }
}

應用程式不應該使用 IWMWriterAdvanced2 介面繼承的任何 IWMWriterAdvanced 方法。 呼叫這些方法可能會干擾篩選的作業。

此篩選唯一支援的檔案寫入模式是AM_FILE_OVERWRITE。 請參閱 IFileSinkFilter2::GetMode

當 Windows 媒體格式 SDK 運行時間將WMT_STATUS訊息傳送至 WM ASF 寫入器篩選器時,篩選會將訊息轉送為 EC_WMT_EVENT 事件。

DirectShow 篩選