Freigeben über


Übertragen von Typ-2-Datei

[Das dieser Seite zugeordnete Feature DirectShow-ist ein Legacyfeature. Es wurde von MediaPlayer, IMFMediaEngineund Audio/Video Capture in Media Foundationersetzt. Diese Features wurden für Windows 10 und Windows 11 optimiert. Microsoft empfiehlt dringend, dass neuer Code MediaPlayer-, IMFMediaEngine und Audio-/Videoaufnahme in Media Foundation anstelle von DirectShow-verwendet, wenn möglich. Microsoft schlägt vor, dass vorhandener Code, der die Legacy-APIs verwendet, um die neuen APIs zu verwenden, falls möglich umgeschrieben werden.]

Verwenden Sie zum Übertragen einer Typ-2-Datei während der Vorschau das im folgenden Diagramm dargestellte Filterdiagramm.

Typ 2 mit Vorschau-

Eine Typ-2-Datei verfügt über zwei Datenströme, einen Audiostream und einen DV-codierten Videostream. In diesem Diagramm wird der DV Muxer Filter verwendet, um die Audio- und Videodatenströme zu kombinieren. Er sendet den interleavierten Datenstrom an den MSDV-Filter, teilt den Datenstrom jedoch erneut für die Vorschau auf.

Erstellen Sie dieses Diagramm wie folgt:

// Add the DV Mux filter to the graph.
IBaseFilter *pDVMux;
hr = CoCreateInstance(CLSID_DVMux, 0, CLSCTX_INPROC_SERVER
    IID_IBaseFilter, reinterpret_cast<void**>)(&pDVMux));
hr = pGraph->AddFilter(pDVMux, L"DV Mux");

// Add the File Source filter to the graph.
IBaseFilter *pFileSource;
hr = pGraph->AddSourceFilter(L"C:\\Example2.avi", L"Source", 
    &pFileSource);

hr = pBuilder->RenderStream(0, 0, pFileSource, 0, pDVMux);
hr = pBuilder->RenderStream(0, 0, pFileSource, 0, pDVMux);

// Add the Infinite Pin Tee filter to the graph.
IBaseFilter *pTee;
hr = CoCreateInstance(CLSID_InfTee, 0, CLSCTX_INPROC_SERVER
    IID_IBaseFilter, reinterpret_cast<void**>)(&pTee));
hr = pGraph->AddFilter(pTee, L"Tee");

hr = pBuilder->RenderStream(0, 0, pDVMux, 0, pTee);
hr = pBuilder->RenderStream(0, 0, pTee, 0, pDV);
hr = pBuilder->RenderStream(0, &MEDIATYPE_Interleaved, pTee, 0, 0);

Dieser Code führt mehrere Aufrufe an RenderStream-:

Die ersten beiden verbinden den Quellfilter mit dem AVI Splitter und dem AVI Splitter mit dem DV Mux. Im ersten Aufruf fügt der Capture Graph Builder automatisch den AVI Splitter zum Diagramm hinzu und verbindet einen der Ausgabe-Pins von AVI Splitter mit dem DV Mux. Im zweiten Aufruf findet der Capture Graph Builder den zweiten Ausgabe-Pin von AVI Splitter und verbindet ihn mit dem DV Mux.

Der dritte Aufruf von RenderStream verbindet den DV Muxer mit dem Infinite Pin Tee Filter. Der nächste Aufruf verbindet einen Datenstrom vom Infinite Pin Tee mit dem MSDV-Aufnahmefilter. Dieser Stream wird an das Gerät übertragen. Der letzte Aufruf von RenderStream erstellt den Vorschauabschnitt des Diagramms.

Wenn Sie während der Übertragung keine Vorschau anzeigen möchten, können Sie den Infinite Pin Tee auslassen und einfach den DV Mux mit dem MSDV-Filter verbinden:

hr = pBuilder->RenderStream(0, 0, pDVMux, 0, pDV);

Digitales Video in DirectShow-