共用方式為


將視訊擷取至 Windows Media 檔案

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

若要擷取視訊並將其編碼為 Windows Media Video (WMV) 檔案,請將擷取釘選連接到 WM ASF 寫入器 篩選器,如下圖所示。

Windows 媒體擷取圖表

建置此圖形最簡單的方式是在 ICaptureGraphBuilder2::SetOutputFileName 方法中指定MEDIASUBTYPE_Asf:

IBaseFilter* pASFWriter = 0;
hr = pBuild->SetOutputFileName(
    &MEDIASUBTYPE_Asf,   // Create a Windows Media file.
    L"C:\\VidCap.wmv",   // File name.
    &pASFWriter,         // Receives a pointer to the filter.
    NULL);  // Receives an IFileSinkFilter interface pointer (optional).

值MEDIASUBTYPE_Asf會指示擷取圖形產生器使用 WM ASF 寫入器篩選器做為檔案接收。 擷取圖形產生器會建立篩選、將其新增至圖形,並呼叫 IFileSinkFilter::SetFileName 來設定輸出檔的名稱。 它會將篩選的指標當做傳出參數傳回 (

pASFWriter

在上一個範例中) 。

使用 WM ASF 寫入 器上的 IConfigAsfWriter 介面來設定 Windows 媒體設定檔。 在 WM ASF 寫入器上連接任何針腳之前,您必須先執行此動作。

IConfigAsfWriter *pConfig = 0;
hr = pASFWriter->QueryInterface(IID_IConfigAsfWriter, (void**)&pConfig);
if (SUCCEEDED(hr))
{
     // Configure the ASF Writer filter.
    pConfig->Release();
}

如需設定設定檔的詳細資訊,請參閱 在 DirectShow 中建立 ASF 檔案

呼叫 ICaptureGraphBuilder2::RenderStream 以將擷取篩選器連線到 ASF 寫入器:

hr = pBuild->RenderStream(
    &PIN_CATEGORY_CAPTURE,   // Capture pin.
    &MEDIATYPE_Video,        // Video. Use MEDIATYPE_Audio for audio.
    pCap,                    // Pointer to the capture filter. 
    0, 
    pASFWriter);             // Pointer to the sink filter (ASF Writer).

WM ASF 寫入器篩選器上的每個輸入針腳都會對應至 Windows 媒體設定檔中的資料流程。 您必須連接每個釘選,讓檔案內容符合設定檔。

將視訊擷取至檔案