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 i 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.]
[Ten interfejs API nie jest obsługiwany i może zostać zmieniony lub niedostępny w przyszłości.]
Aby wyświetlić podgląd projektu, najpierw wywołaj metodę CoCreateInstance, aby utworzyć wystąpienie Podstawowego Silnika Renderowania. Identyfikator klasy jest CLSID_RenderEngine. Następnie wywołaj metodę IRenderEngine::SetTimelineObject, aby określić oś czasu renderowania.
Przy pierwszym wyświetleniu podglądu osi czasu wykonaj następujące wywołania w podanej kolejności:
- Wywołaj IRenderEngine::SetRenderRange, aby określić zakres osi czasu do podglądu. (Opcjonalnie)
- Wywołaj IRenderEngine::ConnectFrontEnd, aby skompilować fronton grafu.
- Wywołaj IRenderEngine::RenderOutputPins. Ta metoda łączy każdy pin wyjściowy z modułem renderowania wideo lub modułem renderowania audio, zakończając graf.
Poniższy przykład kodu przedstawia następujące kroki:
IRenderEngine *pRender = NULL;
hr = CoCreateInstance(CLSID_RenderEngine, NULL,
CLSCTX_INPROC_SERVER, IID_IRenderEngine, (void**)&pRender);
hr = pRender->SetTimelineObject(pTL);
hr = pRender->ConnectFrontEnd();
hr = pRender->RenderOutputPins();
Teraz uruchom wykres filtru. Najpierw wywołaj metodę IRenderEngine::GetFilterGraph, aby pobrać wskaźnik do interfejsu IGraphBuilder menedżera grafu filtrów. Następnie zapytaj menedżera Filter Graph o interfejs IMediaControl i wywołaj IMediaControl::Run, jak pokazano w poniższym kodzie:
IGraphBuilder *pGraph = NULL;
IMediaControl *pControl = NULL;
hr = pRender->GetFilterGraph(&pGraph);
hr = pGraph->QueryInterface(IID_IMediaControl, (void **)&pControl);
hr = pControl->Run();
Użyj interfejsu IMediaEventEx menedżera grafów filtrów, aby poczekać na zakończenie podglądu. Możesz również wyszukać graf przy użyciu interfejsu IMediaSeeking Menedżera filtrów, tak jak w przypadku grafu odtwarzania plików.
Aby ponownie wyświetlić podgląd projektu, przewiń wykres do początku i ponownie uruchom Run. Jeśli zmienisz zawartość osi czasu, wykonaj następujące czynności:
- Wywołaj SetRenderRange. (Opcjonalnie)
- Wywołaj ConnectFrontEnd.
- Jeśli metoda ConnectFrontEnd zwraca S_WARN_OUTPUTRESET, wywołaj metodę RenderOutputPins. (Jeśli ConnectFrontEnd zwraca S_OK, możesz pominąć ten krok).
- Przywróć wykres do czasu zerowego.
- Uruchom wykres.
W poniższym przykładzie przedstawiono następujące kroki:
hr = pRender->ConnectFrontEnd();
if (hr == S_WARN_OUTPUTRESET)
{
hr = pRender->RenderOutputPins();
}
LONGLONG llStart = 0;
hr = pSeek->SetPositions(&llStart, AM_SEEKING_AbsolutePositioning, 0, 0);
hr = pControl->Run();
Pełny przykład ładowania i wyświetlania podglądu pliku projektu znajdziesz w Ładowanie i wyświetlanie podglądu projektu.
Tematy pokrewne