共用方式為


擷取電視音訊

[與此頁面 相關的功能 DirectShow是舊版功能。 它已被 MediaPlayerIMFMediaEngineMedia Foundation 中的音訊/視訊擷取取代。 這些功能已針對Windows 10和Windows 11進行優化。 Microsoft 強烈建議新程式碼盡可能使用 MediaPlayerIMFMediaEngine音訊/視訊擷取 ,而不是 DirectShow。 Microsoft 建議盡可能重寫使用舊版 API 的現有程式碼,以使用新的 API。]

若要從類比電視擷取音訊到檔案,請使用 音訊擷取篩選器。 使用系統裝置列舉值來建立音訊擷取篩選器。 使用者系統上可能有數個音訊擷取裝置;使用者必須選取代表音效卡的裝置。

將音訊擷取輸出釘選連接到多工篩選器:

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

類比電視音訊

音訊擷