將視訊擷取至 Windows Media 檔案
[與此頁面 相關的功能 DirectShow是舊版功能。 它已被 MediaPlayer、 IMFMediaEngine和 Media Foundation 中的音訊/視訊擷取取代。 這些功能已針對Windows 10和Windows 11進行優化。 Microsoft 強烈建議新程式碼盡可能使用 MediaPlayer、 IMFMediaEngine 和 音訊/視訊擷取 ,而不是 DirectShow。 Microsoft 建議盡可能重寫使用舊版 API 的現有程式碼,以使用新的 API。]
若要擷取視訊並將其編碼為 Windows Media Video (WMV) 檔案,請將擷取釘選連接到 WM ASF 寫入器 篩選器,如下圖所示。
建置此圖形最簡單的方式是在 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 媒體設定檔中的資料流程。 您必須連接每個釘選,讓檔案內容符合設定檔。
相關主題