Capturer un fichier DV de type 2

Un fichier AVI DV type-2 a deux flux, un qui contient une vidéo DV et un autre qui contient des données audio. Pour capturer un fichier de type 2 lors de l’aperçu, utilisez le graphique de filtre illustré dans le diagramme suivant.

capture de type 2 avec aperçu

Ce graphique est quasiment identique au graphique pour la capture de type 1 (voir capture d’un fichier DV de type 1). Toutefois, le flux de capture traverse le filtre de séparateur DV avant d’atteindre le filtre multiplex MUX . Le multiplexeur de données AVI reçoit donc deux flux, un flux audio et un flux vidéo encodé au format DV.

Générez ce graphique comme suit :

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

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

// Create the DV Splitter and add it to the filter graph.
hr = CoCreateInstance(CLSID_DVSplitter, 0, CLSCTX_INPROC_SERVER,
    IID_IBaseFilter, reinterpret_cast<void**>)(&pDVSplit));
hr = pGraph->AddFilter(pDVSplit, L"DV Splitter");

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

// Connect the capture pin to the DV Splitter, and render one stream from
// the DV Splitter to the AVI Mux. 
hr = pBuilder->RenderStream(&PIN_CATEGORY_CAPTURE, &MEDIATYPE_Interleaved, 
    pDV, pDVSplit, pAviMux);

// Render the other stream from the DV splitter to the AVI Mux.
hr = pBuilder->RenderStream(0, 0, pDVSplit, 0, pAviMux);

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

// Remember to release all interfaces.
  1. Créez le séparateur DV et ajoutez-le au graphique de filtre.
  2. Appelez ICaptureGraphBuilder2 :: SetOutputFileName pour connecter le filtre multiplex MUX au filtre du writer de fichier.
  3. Appelez ICaptureGraphBuilder2 :: RenderStream pour connecter le filtre de capture MSDV au séparateur DV. Cet appel connecte également l’une des broches de sortie du séparateur DV à AVI Mux.
  4. Appelez à nouveau RenderStream pour connecter l’autre code confidentiel DV au multiplexeur AVI.
  5. Appelez RenderStream une troisième fois pour afficher le flux d’aperçu. Ignorez cette étape si vous ne souhaitez pas afficher un aperçu de la vidéo.

Vidéo numérique en DirectShow