次の方法で共有


Windows メディア ファイルへのビデオのキャプチャ

[このページに関連付けられている機能 DirectShow は、従来の機能です。 MediaPlayerIMFMediaEngine、および Media Foundation のオーディオ/ビデオ キャプチャに置き換わりました。 これらの機能は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、DirectShow ではなく Media Foundation で MediaPlayerIMFMediaEngineAudio/Video Capture を使用することを強くお勧めします。 Microsoft は、従来の API を使用する既存のコードを、可能であれば新しい API を使用するように書き直すよう提案しています。]

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

Windows メディア キャプチャ グラフ

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

IBaseFilter* pASFWriter = 0;
hr = pBuild->SetOutputFileName(
    &MEDIASUBTYPE_Asf,   // Create a Windows Media file.
    L"C:\\VidCap.wmv",   // File name.
    &pASFWriter,         // Receives a pointer to the filter.
    NULL);  // Receives an IFileSinkFilter interface pointer (optional).

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

pASFWriter

前の例で)。

WM ASF ライターの IConfigAsfWriter インターフェイスを使用して、Windows メディア プロファイルを設定します。 WM ASF ライターでピンを接続する前に、これを行う必要があります。

IConfigAsfWriter *pConfig = 0;
hr = pASFWriter->QueryInterface(IID_IConfigAsfWriter, (void**)&pConfig);
if (SUCCEEDED(hr))
{
     // Configure the ASF Writer filter.
    pConfig->Release();
}

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

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

hr = pBuild->RenderStream(
    &PIN_CATEGORY_CAPTURE,   // Capture pin.
    &MEDIATYPE_Video,        // Video. Use MEDIATYPE_Audio for audio.
    pCap,                    // Pointer to the capture filter. 
    0, 
    pASFWriter);             // Pointer to the sink filter (ASF Writer).

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

ビデオをファイルにキャプチャする