グラフ ビルダーのキャプチャについて
[このページに関連付けられている機能 DirectShow は、従来の機能です。 MediaPlayer、IMFMediaEngine、Media Foundation のオーディオ/ビデオ キャプチャに置き換わりました。 これらの機能は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、DirectShow ではなく Media Foundation で MediaPlayer、IMFMediaEngine、Audio/Video Capture を使用することを強くお勧めします。 Microsoft は、レガシ API を使用する既存のコードを、可能であれば新しい API を使用するように書き換えるよう提案しています。]
ビデオまたはオーディオのキャプチャを実行するフィルター グラフは、 キャプチャ グラフと呼ばれます。 キャプチャ グラフは、多くの場合、ファイル再生グラフよりも複雑です。 アプリケーションでキャプチャ グラフを簡単に作成できるようにするために、DirectShow には、Capture Graph Builder と呼ばれるヘルパー オブジェクトが用意されています。 Capture Graph Builder は、キャプチャ グラフを構築および制御するためのメソッドを含む ICaptureGraphBuilder2 インターフェイスを公開します。 次の図は、グラフ ビルダーのキャプチャと ICaptureGraphBuilder2 インターフェイスを 示しています。
まず、CoCreateInstance を呼び出して、Capture Graph Builder と Filter Graph Manager の新しいインスタンスを作成します。 次に、フィルター グラフ マネージャーの IGraphBuilder インターフェイスへのポインターを使用して ICaptureGraphBuilder2::SetFiltergraph を呼び出して、Capture Graph Builder を 初期化します。 このプロセスを説明する図を次に示します。
次のコードは、これらの手順を実行するヘルパー関数を示しています。
HRESULT InitCaptureGraphBuilder(
IGraphBuilder **ppGraph, // Receives the pointer.
ICaptureGraphBuilder2 **ppBuild // Receives the pointer.
)
{
if (!ppGraph || !ppBuild)
{
return E_POINTER;
}
IGraphBuilder *pGraph = NULL;
ICaptureGraphBuilder2 *pBuild = NULL;
// Create the Capture Graph Builder.
HRESULT hr = CoCreateInstance(CLSID_CaptureGraphBuilder2, NULL,
CLSCTX_INPROC_SERVER, IID_ICaptureGraphBuilder2, (void**)&pBuild );
if (SUCCEEDED(hr))
{
// Create the Filter Graph Manager.
hr = CoCreateInstance(CLSID_FilterGraph, 0, CLSCTX_INPROC_SERVER,
IID_IGraphBuilder, (void**)&pGraph);
if (SUCCEEDED(hr))
{
// Initialize the Capture Graph Builder.
pBuild->SetFiltergraph(pGraph);
// Return both interface pointers to the caller.
*ppBuild = pBuild;
*ppGraph = pGraph; // The caller must release both interfaces.
return S_OK;
}
else
{
pBuild->Release();
}
}
return hr; // Failed
}
ビデオ キャプチャに関するこのセクションでは、キャプチャ グラフ ビルダーを使用してキャプチャ グラフを作成していることを前提としています。 ただし、IGraphBuilder メソッドを使用してキャプチャ グラフを完全に構築することはできます。 ただし、これは高度なトピックと見なされ、Graph Builder のキャプチャ メソッドが推奨されます。 詳細については、「 高度なキャプチャ トピック」を参照してください。
関連トピック