Erfassen einer Typ-1 DV-Datei

[Bei dem dieser Seite zugeordneten Feature DirectShow handelt es sich um ein Legacyfeature. Es wurde von MediaPlayer, IMFMediaEngine sowie der Audio- und Videoaufnahme in Media Foundation abgelöst. Diese Features wurden für Windows 10 und Windows 11 optimiert. Microsoft empfiehlt für neuen Code nach Möglichkeit dringend die Verwendung von MediaPlayer, IMFMediaEngine sowie der Audio- und Videoaufnahme in Media Foundation anstelle von DirectShow. Microsoft schlägt vor, dass vorhandener Code, der die Legacy-APIs verwendet, wenn möglich umgeschrieben wird, um die neuen APIs zu verwenden.]

Eine DV AVI-Datei vom Typ 1 enthält einen einzelnen interleavierten Datenstrom. Verwenden Sie das im folgenden Diagramm gezeigte Filterdiagramm, um eine Datei vom Typ 1 während der Vorschau zu erfassen.

Type-1-Aufnahme mit Vorschau

Filter in diesem Diagramm umfassen:

  • Der Smart Tee-Filter teilt die interleavierte DV in einen Aufnahmedatenstrom und einen Vorschaudatenstrom auf. Beide Datenströme enthalten dieselben interleavierten Daten.
  • Der AVI Mux und File Writer schreiben den interleavierten Datenstrom auf einen Datenträger.
  • Der DV Splitter teilt den interleavierten Datenstrom in einen DV-Videostream und einen Audiostream auf. Beide Datenströme werden für die Vorschau gerendert.
  • Der DV-Videodecoder decodiert den DV-Videostream für die Vorschau.

Erstellen Sie dieses Diagramm wie folgt:

ICaptureGraphBuilder2 *pBuilder;  // Capture graph builder.
IBaseFilter           *pDV;       // DV capture filter (MSDV)
IBaseFilter           *pAviMux    // Avi Mux filter.

// Initialize pDV (not shown). 
// Create and initialize the Capture Graph Builder (not shown).

// Create the file-writing section of the graph.
hr = pBuilder->SetOutputFileName(&MEDIASUBTYPE_Avi, 
    OLESTR("C:\\Example1.avi"), &pAviMux, 0);

// Render the capture stream.
hr = pBuilder->RenderStream(&PIN_CATEGORY_CAPTURE, &MEDIATYPE_Interleaved, 
    pDV, 0, pAviMux);

// Render the preview stream.
hr = pBuilder->RenderStream(&PIN_CATEGORY_PREVIEW, &MEDIATYPE_Interleaved,
    pDV, 0, 0);

// Remember to release all interfaces.
  1. Rufen Sie ICaptureGraphBuilder2::SetOutputFileName auf, um den AVI Mux-Filter mit dem File Writer-Filter zu verbinden.
  2. Rufen Sie ICaptureGraphBuilder2::RenderStream mit der Pinkategorie PIN_CATEGORY_CAPTURE auf, um den Aufnahmedatenstrom zu rendern. Der Capture Graph Builder fügt automatisch den Smart Tee-Filter ein.
  3. Rufen Sie RenderStream erneut auf, aber mit der Pinkategorie PIN_CATEGORY_PREVIEW, um den Vorschaudatenstrom zu rendern. Überspringen Sie diesen Anruf, wenn Sie das Video nicht in der Vorschau anzeigen möchten.

Für beide Aufrufe von RenderStream ist der Medientyp MEDIATYPE_Interleaved, d. h. interleaved DV-Video. In diesem Code fügt der Capture Graph Builder automatisch jeden benötigten Filter hinzu, mit Ausnahme des MSDV-Aufnahmefilters.

Digitales Video in DirectShow