Compartir a través de


Capturar un archivo DV de tipo 1

[La característica asociada a esta página, DirectShow es una característica heredada. Se ha reemplazado por MediaPlayer, IMFMediaEngine, y Captura de audio y vídeo en Media Foundation. Esas características se han optimizado para Windows 10 y Windows 11. Microsoft recomienda encarecidamente que el nuevo código useMediaPlayer, IMFMediaEngine y Captura de audio y vídeo en Media Foundation en lugar de DirectShow, siempre que sea posible. Microsoft recomienda reescribir el código actual que usa las API heredadas para usar las nuevas API si es posible.]

Un archivo DV AVI de tipo 1 contiene una única secuencia intercalada. Para capturar un archivo de tipo 1 durante la vista previa, use el gráfico de filtros que se muestra en el diagrama siguiente.

captura de type-1 con vista previa

Los filtros de este gráfico incluyen:

  • El filtro Smart Tee divide el DV intercalado en una secuencia de captura y una secuencia de vista previa. Ambos flujos contienen los mismos datos intercalados.
  • Avi Mux y File Writer escriben la secuencia intercalada en el disco.
  • El divisor DV divide la secuencia intercalada en una secuencia de vídeo DV y una secuencia de audio. Ambas secuencias se representan para obtener una vista previa.
  • El descodificador de vídeo DV descodifica la secuencia de vídeo DV para obtener una vista previa.

Compile este grafo de la siguiente manera:

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. Llame a ICaptureGraphBuilder2::SetOutputFileName para conectar el filtro Mux avi al filtro File Writer.
  2. Llame a ICaptureGraphBuilder2::RenderStream con la categoría pin PIN_CATEGORY_CAPTURE para representar la secuencia de captura. Capture Graph Builder inserta automáticamente el filtro Smart Tee.
  3. Vuelva a llamar a RenderStream, pero con la categoría pin PIN_CATEGORY_PREVIEW, para representar la secuencia de vista previa. Omita esta llamada si no desea obtener una vista previa del vídeo.

Para ambas llamadas a RenderStream, el tipo de medio es MEDIATYPE_Interleaved, lo que significa vídeo DV intercalado. En este código, Capture Graph Builder agrega automáticamente todos los filtros necesarios, excepto el filtro de captura de MSDV.

Vídeo digital en DirectShow