Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
[Funkcja skojarzona z tą stroną, DirectShow, jest starszą funkcją. Został zastąpiony przez MediaPlayer, IMFMediaEnginei Audio/Video Capture w Media Foundation. Te funkcje zostały zoptymalizowane pod kątem systemów Windows 10 i Windows 11. Firma Microsoft zdecydowanie zaleca, aby nowy kod używał MediaPlayer, IMFMediaEngine oraz funkcji Audio/Video Capture w ramach Media Foundation, zamiast DirectShow, jeśli to możliwe. Firma Microsoft sugeruje, że istniejący kod, który używa starszych interfejsów API, należy przepisać go do korzystania z nowych interfejsów API, jeśli to możliwe.]
Graf filtru, który wykonuje przechwytywanie wideo lub audio, jest nazywany grafem przechwytywania . Wykresy przechwytywania są często bardziej skomplikowane niż wykresy odtwarzania plików. Aby ułatwić aplikacjom tworzenie grafów przechwytywania, directshow udostępnia obiekt pomocnika o nazwie Capture Graph Builder. Capture Graph Builder udostępnia interfejs ICaptureGraphBuilder2, który zawiera metody do budowania i kontrolowania grafu przechwytywania. Na poniższym diagramie przedstawiono narzędzie Capture Graph Builder i interfejs ICaptureGraphBuilder2.
Zacznij od wywołania metody CoCreateInstance w celu utworzenia nowych wystąpień konstruktora programu Capture Graph i Menedżera filtru programu Graph. Następnie zainicjuj konstruktora Capture Graph, wywołując ICaptureGraphBuilder2::SetFiltergraph z wskaźnikiem do interfejsu IGraphBuilder menedżera schematu filtrów. Na poniższym diagramie przedstawiono ten proces.
Poniższy kod przedstawia funkcję pomocnika, aby wykonać następujące kroki:
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
}
W tej sekcji dotyczącej przechwytywania wideo zakłada się, że do utworzenia grafu przechwytywania używasz narzędzia Capture Graph Builder. Jednak można tworzyć wykresy przechwytywania w całości przy użyciu metod IGraphBuilder. Jest to jednak uważane za zaawansowany temat, a preferowane są metody Capture Graph Builder. Aby uzyskać więcej informacji, zobacz tematy advanced capture.
Tematy pokrewne
-
Informacje o przechwytywaniu wideo w DirectShow