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, 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 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 type-2 con versión preliminar

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 el divisor AVI a dv Mux. En la primera llamada, capture Graph Builder agrega automáticamente el divisor AVI al grafo y conecta uno de los pines de salida de AVI Splitter a la mux dv. En la segunda llamada, capture Graph Builder busca el segundo pin de salida de AVI Splitter 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 Infinito Tee y simplemente conectar dv Mux al filtro MSDV:

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

Vídeo digital en DirectShow