다음을 통해 공유


TV 오디오 캡처

[이 페이지와 연결된 기능인 DirectShow는 레거시 기능입니다. MediaPlayer, IMFMediaEngineMedia 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();

아날로그 텔레비전 오디오

오디오 캡처