次の方法で共有


TV オーディオのキャプチャ

[このページに関連付けられている機能 DirectShow は、従来の機能です。 MediaPlayer、IMFMediaEngine、Media Foundation のオーディオ/ビデオ キャプチャに置き換わりました。 これらの機能は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、DirectShow ではなく Media Foundation で MediaPlayerIMFMediaEngineAudio/Video Capture を使用することを強くお勧めします。 Microsoft は、レガシ 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" などの名前で識別されます。残念ながら、名前はデバイス間で変更される可能性があります。 また、異なるテレビチューナーカードは、サウンドカードに異なる入力を使用します。 そのため、どの入力を使用するかを識別するのはユーザー次第です。

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

アナログ テレビ オーディオ

オーディオ キャプチャ