Compartir a través de


Capturar vídeo en un archivo de Windows Media

[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 capturar vídeo y codificarlo en un archivo de Windows Media Video (WMV), conecte el pin de captura al filtro WM ASF Writer , como se muestra en el diagrama siguiente.

gráfico de captura de windows media

La manera más fácil de compilar este grafo es especificar MEDIASUBTYPE_Asf en el método ICaptureGraphBuilder2::SetOutputFileName :

IBaseFilter* pASFWriter = 0;
hr = pBuild->SetOutputFileName(
    &MEDIASUBTYPE_Asf,   // Create a Windows Media file.
    L"C:\\VidCap.wmv",   // File name.
    &pASFWriter,         // Receives a pointer to the filter.
    NULL);  // Receives an IFileSinkFilter interface pointer (optional).

El valor MEDIASUBTYPE_Asf indica a Capture Graph Builder que use el filtro WM ASF Writer como receptor de archivos. Capture Graph Builder crea el filtro, lo agrega al grafo y llama a IFileSinkFilter::SetFileName para establecer el nombre del archivo de salida. Devuelve un puntero al filtro como parámetro saliente (

pASFWriter

en el ejemplo anterior).

Usa la interfaz IConfigAsfWriter en wm ASF Writer para establecer el perfil de Windows Media. Debe hacer esto antes de conectar cualquier patilla en wm ASF Writer.

IConfigAsfWriter *pConfig = 0;
hr = pASFWriter->QueryInterface(IID_IConfigAsfWriter, (void**)&pConfig);
if (SUCCEEDED(hr))
{
     // Configure the ASF Writer filter.
    pConfig->Release();
}

Para obtener más información sobre cómo establecer el perfil, vea Crear archivos ASF en DirectShow.

Llame a ICaptureGraphBuilder2::RenderStream para conectar el filtro de captura al escritor de ASF:

hr = pBuild->RenderStream(
    &PIN_CATEGORY_CAPTURE,   // Capture pin.
    &MEDIATYPE_Video,        // Video. Use MEDIATYPE_Audio for audio.
    pCap,                    // Pointer to the capture filter. 
    0, 
    pASFWriter);             // Pointer to the sink filter (ASF Writer).

Cada patilla de entrada del filtro WM ASF Writer corresponde a una secuencia del perfil de Windows Media. Debe conectar cada patilla para que el contenido del archivo coincida con el perfil.

Capturar vídeo en un archivo