次の方法で共有


WM ASF ライタ フィルタ

WM ASF ライタは、Windows Media™ Format SDK に備えられたライタ オブジェクトのラッパー フィルタである。このフィルタは、可変数の入力ストリームを受け入れて ASF (Advanced Systems Format) ファイルを作成する。このフィルタは、すべての圧縮と多重化を取り扱うが、圧縮メカニズムはバイパスする場合がある。デジタル ビデオ (DV) キャプチャ、オーディオ再圧縮、ネットワーク ストリーミングの AVI (Audio-Video Interleaved) ファイルや MPEG マルチメディア ファイルの変換など、さまざまな状況で WM ASF ライタを使える。Microsoft DirectShow で Microsoft® Windows Media™ Audio ファイルおよび Windows Media Video ファイルを作成するには、このフィルタを使うのが唯一の方法である。

詳細については、「DirectShow での ASF ファイルの作成」を参照すること。

フィルタ インターフェイス IAMFilterMiscFlagsIBaseFilterIConfigAsfWriterIFileSinkFilter2IMediaSeekingIPersistStreamIServiceProviderISpecifyPropertyPages
入力ピン メディア タイプ ASF プロファイルに依存する。一般に、非圧縮オーディオおよびビデオ タイプ。ただしこのフィルタは、ASF プロファイルに適合する圧縮タイプは受け入れる。
入力ピン インターフェイス IPinIMemInputPinIAMStreamConfig
出力ピン メディア タイプ 該当なし。
出力ピン インターフェイス 該当なし。
フィルタ CLSID CLSID_WMAsfWriter
プロパティ ページ CLSID CLSID_AsfWriterProperties
実行モジュール Qasf.dll
メリット MERIT_DO_NOT_USE
フィルタ カテゴリ 指定なし。

注意

このフィルタには、Windows Media Format Software Development Kit (SDK) およびその必須条件を必要とする。

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

入力ピンは、IAMStreamConfig インターフェイスの 1 つのメソッド IAMStreamConfig::GetFormat をサポートする。他のすべてのメソッドは E_NOTIMPL を返す。ピンの宛先圧縮フォーマットを問い合わせるには、GetFormat メソッドを呼び出す。これは、現在の ASF プロファイルで定義される。プロファイルを設定するには、IConfigAsfWriter インターフェイスを使う。

フィルタの IServiceProvider インターフェイスによって、アプリケーションは、IWMWriterAdvanced2 インターフェイスを取得できる。これは、Windows Media Format SDK で定義されている。このインターフェイスは、フィルタ グラフにフィルタが追加された後にのみ取得できる。IWMWriterAdvanced2 インターフェイスは、ビデオの非インターレース化を制御するため、入力が DV ビデオのようなインターレース ソースの場合に便利である。非インターレース化を制御するには、GetInputSetting および SetInputSetting メソッドを使う。クライアントがこのインターフェイス上で他のメソッドを使うことは推奨しない。以下に、このインターフェイスの問い合わせの例を示す。

// m_pGraph が有効な IGraphBuilder インターフェイス ポインタであり、
// pAsfWriter が WM ASF Writer フィルタの IBaseFilter インターフェイスへの
// ポインタであると仮定する。

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();
}