Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
[Das dieser Seite zugeordnete Feature DirectShow ist ein Legacyfeature. Es wurde durch MediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation ersetzt. Diese Features wurden für Windows 10 und Windows 11 optimiert. Microsoft empfiehlt dringend, dass neuer Code nach Möglichkeit MediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation anstelle von DirectShow verwendet. Microsoft schlägt vor, vorhandenen Code, der die Legacy-APIs verwendet, um nach Möglichkeit die neuen APIs zu verwenden.]
[Diese API wird nicht unterstützt und kann in Zukunft geändert oder nicht mehr verfügbar sein.]
Um eine Vorschau eines Projekts anzuzeigen, rufen Sie zuerst CoCreateInstance auf, um eine instance der Basic Render Engine zu erstellen. Der Klassenbezeichner ist CLSID_RenderEngine. Rufen Sie dann die IRenderEngine::SetTimelineObject-Methode auf, um die Zeitleiste anzugeben, die Sie rendern.
Führen Sie bei der ersten Vorschau der Zeitleiste die folgenden Aufrufe in der aufgeführten Reihenfolge aus:
- Rufen Sie IRenderEngine::SetRenderRange auf, um anzugeben, welcher Teil des Zeitleiste in der Vorschau angezeigt werden soll. (Optional)
- Rufen Sie IRenderEngine::ConnectFrontEnd auf, um das Front-End des Graphen zu erstellen.
- Rufen Sie IRenderEngine::RenderOutputPins auf. Diese Methode verbindet jeden Ausgabenadel mit einem Videorenderer oder Audiorenderer und vervollständigt das Diagramm.
Das folgende Codebeispiel zeigt die folgenden Schritte:
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();
Führen Sie nun das Filterdiagramm aus. Rufen Sie zunächst die IRenderEngine::GetFilterGraph-Methode auf, um einen Zeiger auf die IGraphBuilder-Schnittstelle des Filter Graph-Managers abzurufen. Fragen Sie dann den Filter Graph Manager für die IMediaControl-Schnittstelle ab, und rufen Sie IMediaControl::Run auf, wie im folgenden Code gezeigt:
IGraphBuilder *pGraph = NULL;
IMediaControl *pControl = NULL;
hr = pRender->GetFilterGraph(&pGraph);
hr = pGraph->QueryInterface(IID_IMediaControl, (void **)&pControl);
hr = pControl->Run();
Verwenden Sie die IMediaEventEx-Schnittstelle des Filter Graph-Managers, um zu warten, bis die Vorschau abgeschlossen ist. Sie können das Diagramm auch über die IMediaSeeking-Schnittstelle des Filter Graph-Managers suchen, genau wie bei einem Dateiwiedergabegraphen.
Um eine erneute Vorschau des Projekts anzuzeigen, suchen Sie das Diagramm zurück zur Zeit 0, und rufen Sie erneut Ausführen auf . Wenn Sie den Inhalt der Zeitleiste ändern, gehen Sie wie folgt vor:
- Rufen Sie SetRenderRange auf. (Optional)
- Rufen Sie ConnectFrontEnd auf.
- Wenn die ConnectFrontEnd-Methode S_WARN_OUTPUTRESET zurückgibt, rufen Sie RenderOutputPins auf. (Wenn ConnectFrontEnd S_OK zurückgibt, können Sie diesen Schritt überspringen.)
- Suchen Sie das Diagramm zurück zur Zeit 0.
- Führen Sie das Diagramm aus.
Das folgende Beispiel zeigt die folgenden Schritte:
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();
Ein vollständiges Beispiel zum Laden und Anzeigen einer Vorschau einer Projektdatei finden Sie unter Laden und Vorschau eines Projekts.
Zugehörige Themen