次の方法で共有


WM ASF ライター フィルター (Windows Media Format 11 SDK)

[このページに関連付けられている機能である Windows Media Format 11 SDK は、レガシ機能です。 これは、ソース リーダーシンク ライターによって置き換えられます。 ソース リーダーシンク ライターは、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、Windows Media Format 11 SDK ではなくソース リーダーシンク ライターを使用することを強くお勧めします。 Microsoft は、従来の API を使用する既存のコードを、可能であれば新しい API を使用するように書き直すよう提案しています。]

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

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

次の表に、WM ASF ライター フィルターに関する情報 (サポートされているインターフェイスやメディアの種類など) を示します。

フィルター情報
フィルター インターフェイス IAMFilterMiscFlagsIBaseFilterIConfigAsfWriterIFileSinkFilter2、IMediaSeeking、IPersistStream、IServiceProvider、ISpecifyPropertyPages、 IWMIndexer2IWMHeaderInfoIWMWriterAdvanced2
入力ピン メディアの種類 プロファイルによって異なります。 通常、MEDIATYPE_AudioやMEDIATYPE_Videoなどの圧縮されていない型ですが、圧縮された型はプロファイルと一致する場合に受け入れられます
入力ピン インターフェイス IPinIMemInputPinIAMStreamConfigIServiceProviderIAMWMBufferPassIWMStreamConfig2 ( IServiceProvider 経由)
出力ピン メディアの種類 該当なし
出力ピン インターフェイス 該当なし
CLSID のフィルター処理 CLSID_WMAsfWriter
プロパティ ページ CLSID CLSID_WMAsfWriterProperties
[実行可能ファイル] Qasf.dll
メリット MERIT_DO_NOT_USE
フィルター カテゴリ 指定なし

 

解説

フィルターの入力ピンの数は、フィルターに渡されるプロファイルによって異なります。 プロファイルで定義されているストリームごとに、適切なメディア タイプの 1 つのピンが作成されます。

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

フィルターの IServiceProvider インターフェイスを使用すると、アプリケーションは Windows Media Format SDK で定義されている IWMWriterAdvanced2 インターフェイスを取得できます。 IWMWriterAdvanced2 インターフェイスは、ビデオのインターレース解除を制御し、入力が DV (デジタル ビデオ) などのインターレースソースである場合に便利です。 GetInputSetting メソッドと SetInputSetting メソッドを使用して、インターレース解除を制御します。 クライアントでは、このインターフェイスで他のメソッドを使用することはお勧めしません。 このインターフェイスは、フィルターがフィルター グラフに追加された後にのみ取得できます。 次の例は、このインターフェイスに対してクエリを実行する方法を示しています。

// Assume that m_pGraph is a valid IGraphBuilder interface pointer,
// and that pAsfWriter points to the IBaseFilter interface
// on the WM ASF Writer filter.

IServiceProvider *pProvider = NULL;
IWMWriterAdvanced2 *pWMWA2 = NULL;

hr = m_pGraph->AddFilter(pAsfWriter, L"WM ASF Writer");
...
hr = pAsfWriter->QueryInterface(IID_IServiceProvider, (void**)&pProvider)
if (SUCCEEDED(hr))
{
    hr = pProvider->QueryService(IID_IWMWriterAdvanced2,
        IID_IWMWriterAdvanced2, (void**)&pWMWA2);
    pProvider->Release();
}

DirectShow QASF リファレンス