Erfassen von TV-Audio

Verwenden Sie den Audioaufnahmefilter , um Audiodaten aus analogem Fernsehgerät in einer Datei zu erfassen. Verwenden Sie den Systemgeräte-Enumerator, um den Audioaufnahmefilter zu erstellen. Auf dem System des Benutzers sind möglicherweise mehrere Audioaufnahmegeräte verfügbar. Der Benutzer muss das Gerät auswählen, das die Soundkarte darstellt.

Verbinden sie den Audioaufnahme-Ausgabepin an den Muxfilter an:

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.

Die Eingabepins müssen nicht mit etwas verbunden werden. Jeder Eingabepin stellt eine physische Eingabe auf dem Audioaufnahmegerät dar. Verwenden Sie die IAMAudioInputMixer-Schnittstelle, um die Eingabe zu aktivieren, die den Audiostream vom Tuner empfängt. Die Eingabepins werden anhand des Namens identifiziert, z. B. "Line In" oder "CD Audio". Leider können sich die Namen von einem Gerät zum nächsten ändern. Außerdem verwenden verschiedene TV-Tunerkarten unterschiedliche Eingaben für die Soundkarte. Daher muss der Benutzer bestimmen, welche Eingabe verwendet werden soll.

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();

Analoge Fernsehaudiodaten

Audioaufnahme