TV 오디오 캡처
[이 페이지와 연결된 기능인 DirectShow는 레거시 기능입니다. MediaPlayer, IMFMediaEngine 및 Media Foundation의 오디오/비디오 캡처로 대체되었습니다. 이러한 기능은 Windows 10 및 Windows 11 최적화되었습니다. 가능한 경우 새 코드에서 DirectShow 대신 MediaPlayer, IMFMediaEngine 및 오디오/비디오 캡처를 사용하는 것이 좋습니다. 가능한 경우 레거시 API를 사용하는 기존 코드를 다시 작성하여 새 API를 사용하도록 제안합니다.]
아날로그 텔레비전에서 파일로 오디오를 캡처하려면 오디오 캡처 필터를 사용합니다. 시스템 디바이스 열거자를 사용하여 오디오 캡처 필터를 만듭니다. 사용자 시스템에 여러 오디오 캡처 디바이스가 있을 수 있습니다. 사용자는 사운드 카드 나타내는 디바이스를 선택해야 합니다.
오디오 캡처 출력 핀을 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.
입력 핀은 아무것도 연결할 필요가 없습니다. 각 입력 핀은 오디오 캡처 디바이스의 실제 입력을 나타냅니다. IAMAudioInputMixer 인터페이스를 사용하여 튜너에서 오디오 스트림을 수신하는 입력을 사용하도록 설정합니다. 입력 핀은 "Line In" 또는 "CD Audio"와 같은 이름으로 식별됩니다. 아쉽게도 이름은 한 디바이스에서 다음 디바이스로 변경됩니다. 또한, 다른 TV 튜너 카드는 사운드 카드 다른 입력을 사용합니다. 따라서 사용할 입력을 식별하는 것은 사용자에게 달려 있습니다.
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();
관련 항목