Capture audio tv
[La fonctionnalité associée à cette page, DirectShow, est une fonctionnalité héritée. Il a été remplacé par MediaPlayer, IMFMediaEngine et Audio/Video Capture dans Media Foundation. Ces fonctionnalités ont été optimisées pour Windows 10 et Windows 11. Microsoft recommande vivement au nouveau code d’utiliser MediaPlayer, IMFMediaEngine et La capture audio/vidéo dans Media Foundation au lieu de DirectShow, lorsque cela est possible. Microsoft suggère que le code existant qui utilise les API héritées soit réécrit pour utiliser les nouvelles API si possible.]
Pour capturer l’audio de la télévision analogique vers un fichier, utilisez le filtre de capture audio. Utilisez l’énumérateur de périphérique système pour créer le filtre de capture audio. Il peut y avoir plusieurs appareils de capture audio sur le système de l’utilisateur ; l’utilisateur doit sélectionner l’appareil qui représente le son carte.
Connectez la broche de sortie de capture audio au filtre 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.
Les broches d’entrée n’ont pas besoin d’être connectées à quoi que ce soit. Chaque broche d’entrée représente une entrée physique sur le périphérique de capture audio. Utilisez l’interface IAMAudioInputMixer pour activer l’entrée qui reçoit le flux audio du tuner. Les broches d’entrée sont identifiées par leur nom, par exemple « Line In » ou « CD Audio ». Malheureusement, les noms peuvent changer d’un appareil à l’autre. En outre, différentes cartes tuner TV utilisent des entrées différentes pour le son carte. Par conséquent, il incombe à l’utilisateur d’identifier l’entrée à utiliser.
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();
Rubriques connexes