Udostępnij przez


Podgląd wideo (DirectShow)

[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 i Audio/Video Capture w programie 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.]

Aby utworzyć graf podglądu wideo, wywołaj metodę ICaptureGraphBuilder2::RenderStream w następujący sposób:

ICaptureGraphBuilder2 *pBuild; // Capture Graph Builder
// Initialize pBuild (not shown).

IBaseFilter *pCap; // Video capture filter.

/* Initialize pCap and add it to the filter graph (not shown). */

hr = pBuild->RenderStream(&PIN_CATEGORY_PREVIEW, &MEDIATYPE_Video, 
    pCap, NULL, NULL);

W tym przykładzie przyjęto założenie, że:

Pierwszy parametr metody ICaptureGraphBuilder2::RenderStream określa kategorię pinów; dla grafu podglądowego użyj PIN_CATEGORY_PREVIEW. Drugi parametr określa typ nośnika jako identyfikator GUID typu głównego. W przypadku wideo użyj MEDIATYPE_Video. Urządzenia DV dostarczają audio i wideo w formacie przeplatanym, dla których typ nośnika to MEDIATYPE_Interleaved. (Aby uzyskać więcej informacji na temat przechwytywania DV, zobacz Digital Video w programie DirectShow.)

Trzeci parametr jest wskaźnikiem do interfejsu IBaseFilter filtru przechwytywania . W tym przykładzie nie są potrzebne dwa następne parametry. Służą one do określania dodatkowych filtrów, które mogą być potrzebne do renderowania strumienia. Ustawienie ostatniego parametru na wartość null powoduje, że konstruktor programu Capture Graph wybierze domyślny moduł renderowania dla strumienia na podstawie typu nośnika. W przypadku wideo narzędzie Capture Graph Builder zawsze używa filtra Video Renderer jako domyślnego renderera.

Notatka

W systemie Windows XP i nowszych, mimo że renderowanie z mieszaniem wideo (VMR) jest domyślnym modułem renderowania wideo dla metod IGraphBuilder, nie jest domyślnym modułem renderowania dla metody RenderStream. Na dowolnej platformie narzędzie Capture Graph Builder zawsze używa starego filtru renderowania wideo, chyba że określono inaczej.

 

Mimo że kategoria pinu jest podana jako PIN_CATEGORY_PREVIEW, nie ma znaczenia, czy filtr rzeczywiście ma pin podglądu; może mieć pin portu wideo lub po prostu pin przechwytywania. W obu przypadkach narzędzie Capture Graph Builder automatycznie kompiluje poprawny graf.

Na poniższym diagramie przedstawiono najprostszy możliwy wykres do wyświetlania podglądu wideo.

graf podglądu wideo

Na tym diagramie filtr przechwytywania ma pin podglądu, który łączy się bezpośrednio z renderem wideo.

Jeśli filtr przechwytywania zawiera tylko pin przechwytywania, konstruktor grafu przechwytywania wstawia filtr Smart Tee, który dzieli strumień na strumień przechwytywania i strumień podglądu. Opisano to bardziej szczegółowo w Łączenie funkcji przechwytywania wideo i podglądu.

W niektórych przypadkach strumień wideo musi przechodzić przez filtr Mikser Nakładkowy. Jeśli tak, metoda RenderStream automatycznie dodaje ją do grafu.

łączenie funkcji przechwytywania wideo i podglądu

przechwytywanie wideo