Compartir a través de


Vídeo de vista previa (DirectShow)

[La característica asociada a esta página, DirectShow, es una característica heredada. Se ha reemplazado por MediaPlayer, IMFMediaEngine y Captura de audio/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 use MediaPlayer, IMFMediaEngine y Audio/Video Capture en Media Foundation en lugar de DirectShow, siempre que sea posible. Microsoft sugiere que el código existente que usa las API heredadas se reescriba para usar las nuevas API si es posible.

Para compilar un gráfico de vista previa de vídeo, llame al método ICaptureGraphBuilder2::RenderStream de la siguiente manera:

ICaptureGraphBuilder2 *pBuild; // Capture Graph Builder
// Initialize pBuild (not shown).

IBaseFilter *pCap; // Video capture filter.

/* Initialize pCap and add it to the filter graph (not shown). */

hr = pBuild->RenderStream(&PIN_CATEGORY_PREVIEW, &MEDIATYPE_Video, 
    pCap, NULL, NULL);

En este ejemplo se supone lo siguiente:

El primer parámetro para el método ICaptureGraphBuilder2::RenderStream especifica una categoría de patillas; para un gráfico en versión preliminar, use PIN_CATEGORY_PREVIEW. El segundo parámetro especifica un tipo de medio, como un GUID de tipo principal. Para vídeo, use MEDIATYPE_Video. Los dispositivos DV proporcionan audio y vídeo intercalados, para los que se MEDIATYPE_Interleaved el tipo de medio. (Para obtener más información sobre la captura de DV, consulte Vídeo digital en DirectShow).

El tercer parámetro es un puntero a la interfaz IBaseFilter del filtro de captura. Los dos parámetros siguientes no son necesarios en este ejemplo. Se usan para especificar filtros adicionales que podrían ser necesarios para representar la secuencia. Establecer el último parámetro en NULL hace que Capture Graph Builder seleccione un representador predeterminado para la secuencia, en función del tipo de medio. En el caso del vídeo, Capture Graph Builder siempre usa el filtro Video Renderer como representador predeterminado.

Nota:

En Windows XP y versiones posteriores, aunque el representador de mezcla de vídeos (VMR) es el representador de vídeo predeterminado para los métodos IGraphBuilder , no es el representador predeterminado para el método RenderStream . En cualquier plataforma, Capture Graph Builder siempre usa el filtro antiguo de Video Renderer a menos que especifique lo contrario.

 

Aunque la categoría pin se da como PIN_CATEGORY_PREVIEW, no importa si el filtro tiene realmente un pin de vista previa; podría tener un pin de puerto de vídeo o simplemente un pin de captura. En cualquier caso, Capture Graph Builder compila automáticamente el grafo correcto.

En el diagrama siguiente se muestra el gráfico más sencillo posible para obtener una vista previa del vídeo.

gráfico de vista previa de vídeo

En este diagrama, el filtro de captura tiene un pin de vista previa, que se conecta directamente al representador de vídeo.

Si el filtro de captura solo tiene un pin de captura, capture Graph Builder inserta un filtro Smart Tee , que divide la secuencia en una secuencia de captura y una secuencia de vista previa. Esto se describe con más detalle en Combinación de captura de vídeo y vista previa.

En algunos casos, la secuencia de vídeo debe pasar por el filtro Mezclador de superposición. Si es así, el método RenderStream lo agrega automáticamente al grafo.

Combinación de captura de vídeo y vista previa

Captura de vídeo