Compartir a través de


Captura de audio de TV

[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 audio de televisión analógica a un archivo, use el filtro de captura de audio. Use el enumerador de dispositivos del sistema para crear el filtro de captura de audio. Puede haber varios dispositivos de captura de audio en el sistema del usuario; el usuario debe seleccionar el dispositivo que representa la tarjeta de sonido.

Conecte el pin de salida de captura de audio al filtro mux:

hr = pBuild->RenderStream(
   &PIN_CATEGORY_CAPTURE, // Capture pin.
   &MEDIATYPE_Audio,      // Audio media type.
   pAudioCap,             // Pointer to the audio capture filter.
   NULL,                  // Optional audio compressor filter.
   pMux);                 // Pointer to the mux filter.

Los pines de entrada no tienen que estar conectados a nada. Cada patilla de entrada representa una entrada física en el dispositivo de captura de audio. Use la interfaz IAMAudioInputMixer para habilitar la entrada que recibe la secuencia de audio del tóner. Los pines de entrada se identifican por nombre, como "Line In" o "CD Audio". Desafortunadamente, los nombres pueden cambiar de un dispositivo a otro. Además, diferentes tarjetas de sintonizador de TV usan diferentes entradas para la tarjeta de sonido. Por lo tanto, es necesario que el usuario identifique qué entrada se va a usar.

IEnumPins *pEnum = NULL;
hr = pAudioCap->EnumPins(&pEnum);
if (SUCCEEDED(hr))
{
    IPin *pPin = NULL;
    while (S_OK == pEnum->Next(1, &pPin, NULL))
    {
        IAMAudioInputMixer *pMix;
        hr = pPin->QueryInterface(IID_IAMAudioInputMixer, (void**)&pMix);
        if (SUCCEEDED(hr))
        {
            // Use IPin::QueryPinInfo to get the pin name.
            pPin->Release();
            if (...) // If the user selects this pin:
            {
                pMix->put_Enable(TRUE);
                pMix->put_MixLevel(1.0);
                pMix->Release();
                break;
            }
            pMix->Release();
        }
    }
}
pEnum->Release();

Audio de televisión analógica

Captura de audio