次の方法で共有


Windows Media ファイルへのビデオのキャプチャ

ビデオをキャプチャし、Windows Media Video (WMV) ファイルにエンコードするには、キャプチャ ピンを WM ASF ライタ フィルタに接続する。

Windows Media キャプチャ グラフ

このグラフを作成する最も簡単な方法は、ICaptureGraphBuilder2::SetOutputFileName メソッドに MEDIASUBTYPE_Asf を指定することである。

IBaseFilter* pASFWriter = 0;
hr = pBuild->SetOutputFileName(
    &MEDIASUBTYPE_Asf,   // Windows Media ファイルを作成する。
    L"C:\\VidCap.wmv",   // ファイル名。
    &pASFWriter,         // フィルタへのポインタを受け取る。
    NULL);  // IFileSinkFilter インターフェイス ポインタを受け取る (省略可能)。

値 MEDIASUBTYPE_Asf を指定すると、Capture Graph Builder は WM ASF ライタ フィルタをファイル シンクとして使う。Capture Graph Builder はフィルタを作成し、グラフに追加し、IFileSinkFilter::SetFileName を呼び出して出力ファイル名を設定する。出力パラメータとしてフィルタへのポインタを返す (前の例では pASFWriter)。

Windows Media プロファイルを設定するには、WM ASF ライタの IConfigAsfWriter インターフェイスを使う。この処理は、WM ASF ライタのピンを接続する前に行う必要がある。

IConfigAsfWriter *pConfig = 0;
hr = pASFWriter->QueryInterface(IID_IConfigAsfWriter, (void**)&pConfig);
if (SUCCEEDED(hr))
{
     // ASF ライタ フィルタを設定する。
    pConfig->Release();
}

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

キャプチャ フィルタを ASF ライタに接続するには、ICaptureGraphBuilder2::RenderStream を呼び出す。

hr = pBuild->RenderStream(
    &PIN_CATEGORY_CAPTURE,   // キャプチャ ピン。
    &MEDIATYPE_Video,        // ビデオ。オーディオには MEDIATYPE_Audio を使う。
    pCap,                    // キャプチャ フィルタへのポインタ。
    0, 
    pASFWriter);             // シンク フィルタへのポインタ (ASF ライタ)。

WM ASF ライタ フィルタの各入力ピンは Windows Media プロファイルのストリームに対応する。ファイルの内容をプロファイルに一致させるため、すべてのピンを接続する必要がある。