Partager via


Capturer un fichier DV type-1

[La fonctionnalité associée à cette page, DirectShow, est une fonctionnalité héritée. Elle a été remplacée par MediaPlayer, IMFMediaEngine et Capture audio/vidéo dans Media Foundation. Ces fonctionnalités ont été optimisées pour Windows 10 et Windows 11. Si possible, Microsoft recommande vivement d’utiliser MediaPlayer, IMFMediaEngine et Capture audio/vidéo dans Media Foundation pour le nouveau code, plutôt que DirectShow. Microsoft recommande, si possible, la réécriture du code existant qui utilise les API héritées pour être à jour avec les nouvelles API.]

Un fichier AVI de type 1 contient un flux entrelacé unique. Pour capturer un fichier de type 1 lors de l’aperçu, utilisez le graphique de filtre indiqué dans le diagramme suivant.

Capture type-1 avec préversion

Les filtres de ce graphique sont les suivants :

  • Le filtre Smart Tee fractionne la DV entrelacée en flux de capture et un flux d’aperçu. Les deux flux contiennent les mêmes données entrelacées.
  • Le Mux AVI et l’enregistreur de fichiers écrivent le flux entrelacés sur le disque.
  • Le séparateur DV fractionne le flux entrelacé en flux vidéo DV et un flux audio. Les deux flux sont rendus pour la préversion.
  • Le décodeur vidéo DV décode le flux vidéo DV pour la préversion.

Générez ce graphique comme suit :

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. Appelez ICaptureGraphBuilder2 ::SetOutputFileName pour connecter le filtre AVI Mux au filtre Enregistreur de fichiers.
  2. Appelez ICaptureGraphBuilder2 ::RenderStream avec la catégorie d’épingle PIN_CATEGORY_CAPTURE pour afficher le flux de capture. Le Générateur de graphiques de capture insère automatiquement le filtre Tee intelligent.
  3. Appelez à nouveau RenderStream, mais avec la catégorie d’épingle PIN_CATEGORY_PREVIEW, pour afficher le flux d’aperçu. Ignorez cet appel si vous ne souhaitez pas afficher un aperçu de la vidéo.

Pour les deux appels à RenderStream, le type de média est MEDIATYPE_Interleaved, ce qui signifie vidéo DV entrelacée. Dans ce code, le Générateur de graphiques de capture ajoute automatiquement chaque filtre nécessaire, à l’exception du filtre de capture MSDV.

Vidéo numérique dans DirectShow