Compartir a través de


Transmitir desde el archivo de tipo 2

[La característica asociada a esta página, DirectShow, es una característica heredada. Se ha reemplazado por MediaPlayer, IMFMediaEnginey 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 use MediaPlayer, IMFMediaEngine y captura de audio y vídeo 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 transmitir un archivo de tipo 2 durante la vista previa, use el gráfico de filtros que se muestra en el diagrama siguiente.

transmisión de tipo 2 con de vista previa

Un archivo de tipo 2 tiene dos secuencias, una secuencia de audio y una secuencia de vídeo codificada en DV. Este gráfico usa el filtro muxer DV para combinar las secuencias de audio y vídeo. Envía la secuencia intercalada al filtro MSDV, pero divide la secuencia de nuevo para la versión preliminar.

Compile este grafo de la siguiente manera:

// Add the DV Mux filter to the graph.
IBaseFilter *pDVMux;
hr = CoCreateInstance(CLSID_DVMux, 0, CLSCTX_INPROC_SERVER
    IID_IBaseFilter, reinterpret_cast<void**>)(&pDVMux));
hr = pGraph->AddFilter(pDVMux, L"DV Mux");

// Add the File Source filter to the graph.
IBaseFilter *pFileSource;
hr = pGraph->AddSourceFilter(L"C:\\Example2.avi", L"Source", 
    &pFileSource);

hr = pBuilder->RenderStream(0, 0, pFileSource, 0, pDVMux);
hr = pBuilder->RenderStream(0, 0, pFileSource, 0, pDVMux);

// Add the Infinite Pin Tee filter to the graph.
IBaseFilter *pTee;
hr = CoCreateInstance(CLSID_InfTee, 0, CLSCTX_INPROC_SERVER
    IID_IBaseFilter, reinterpret_cast<void**>)(&pTee));
hr = pGraph->AddFilter(pTee, L"Tee");

hr = pBuilder->RenderStream(0, 0, pDVMux, 0, pTee);
hr = pBuilder->RenderStream(0, 0, pTee, 0, pDV);
hr = pBuilder->RenderStream(0, &MEDIATYPE_Interleaved, pTee, 0, 0);

Este código realiza varias llamadas a renderStream:

Los dos primeros conectan el filtro de origen al divisor AVI y al divisor avi a la mux DV. En la primera llamada, capture Graph Builder agrega automáticamente el divisor AVI al grafo y conecta una de las patillas de salida de AVI Splitter a la mux DV. En la segunda llamada, capture Graph Builder busca el segundo pin de salida del divisor AVI y lo conecta a la mux DV.

La tercera llamada a RenderStream conecta el muxer DV al filtro Infinite Pin Tee. La siguiente llamada conecta una secuencia desde infinite Pin Tee al filtro de captura de MSDV. Esta secuencia se transmite al dispositivo. La última llamada a RenderStream compila la sección de vista previa del gráfico.

Si no desea obtener una vista previa durante la transmisión, puede omitir el Pin Tee infinito y simplemente conectar la mux DV al filtro MSDV:

hr = pBuilder->RenderStream(0, 0, pDVMux, 0, pDV);

vídeo digital en DirectShow