次の方法で共有


WM ASF ライター フィルター (DirectShow)

[このページに関連付けられている機能である DirectShow はレガシ機能です。 これは、MediaPlayerIMFMediaEngineメディア ファンデーションの Audio/Video Capture に置き換えられました。 これらの機能は、Windows 10 および Windows 11 用に最適化されています。 新しいコードでは、可能な場合は、DirectShow ではなく、MediaPlayerIMFMediaEngineメディア ファンデーションの Audio/Video Capture を使用することを強くお勧めします。 Microsoft は、レガシ API を使用する既存コードを、新しい API を使用するように可能であれば書き直すことを提案しています。]

WM ASF ライターは、Windows Media™ Format SDK で提供されるライター オブジェクトのラッパー フィルターです。 このフィルターは、可変数の入力ストリームを受け入れ、ADVANCED Systems Format (ASF) ファイルを作成します。 フィルターはすべての圧縮と多重化を処理します (ただし、圧縮メカニズムはバイパスできます)。 WM ASF ライターは、デジタル ビデオ (DV) キャプチャ、オーディオの再圧縮、ネットワーク ストリーミング用のオーディオ ビデオ インターリーブ (AVI) または MPEG マルチメディア ファイルの変換など、さまざまなシナリオで使用できます。 このフィルターは、Microsoft DirectShow で Microsoft® Windows Media™ Audio ファイルと Windows Media Video ファイルを作成する唯一の方法です。

詳細については、「 DirectShow での ASF ファイルの作成」を参照してください。

Label Value
フィルター インターフェイス IAMFilterMiscFlagsIBaseFilterIConfigAsfWriterIConfigAsfWriter2IFileSinkFilter2IMediaSeekingIPersistStreamIServiceProviderISpecifyPropertyPagesI WMIndexer2IWMHeaderInfoIWMWriterAdvanced2
入力ピン メディアの種類 ASF プロファイルによって異なります。 通常、圧縮されていないオーディオとビデオの種類ですが、フィルターは ASF プロファイルと一致する場合、圧縮された種類を受け入れます。
入力ピン インターフェイス IAMStreamConfigIAMWMBufferPassIMemInputPinIPinIServiceProviderさらに、ピンは次の Windows Media Format SDK インターフェイスを公開します。 IWMStreamConfig2 ( IServiceProvider を介して)
出力ピン メディアの種類 該当なし。
出力ピン インターフェイス 該当なし。
CLSID のフィルター処理 CLSID_WMAsfWriter
プロパティ ページ CLSID CLSID_AsfWriterProperties
Executable Qasf.dll
価値 MERIT_DO_NOT_USE
フィルター カテゴリ 指定なし

 

解説

このフィルターには、Windows Media Format Software Development Kit (SDK) とその基になる依存関係が必要です。

フィルター上の入力ピンの数は、ASF ストリームのプロファイルまたはプロファイル識別子に応じて異なります。

入力ピンは、 IAMStreamConfig インターフェイスの 1 つのメソッド ( IAMStreamConfig::GetFormat をサポートします。 その他のすべてのメソッドは、E_NOTIMPLを返します。 GetFormat メソッドを呼び出して、現在の ASF プロファイルで定義されているピンの宛先圧縮形式を照会します。 IConfigAsfWriter インターフェイスを使用してプロファイルを設定します。

フィルターの IServiceProvider インターフェイスを使用して、Windows Media Format SDK で定義されている IWMWriterAdvanced2 インターフェイスへのポインターを取得できます。 IWMWriterAdvanced2 インターフェイスを使用して、ソース ビデオがインターレースされるときにビデオのインターレース解除を制御できます。 インターレース解除モードを設定するには、 IWMWriterAdvanced2::SetInputSetting を呼び出します。 dwInputNum パラメーターには、IEnumPins インターフェイスによって列挙されるビデオ入力ピンの 0 から始まるインデックスを使用します。

次の例は、このインターフェイスのクエリを実行する方法を示しています。

// 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 Media Format SDK ランタイムが WM ASF ライター フィルターにWMT_STATUSメッセージを送信すると、フィルターによって EC_WMT_EVENT イベントとして転送されます。

DirectShow フィルター