擷取 Type-1 DV 檔案
[與此頁面相關聯的功能, DirectShow 是舊版功能。 它已被媒體播放程式、IMFMediaEngine 和媒體基金會的音訊/視訊擷取所取代。 這些功能已針對 Windows 10 和 Windows 11 進行優化。 Microsoft 強烈建議新程式碼儘可能使用 MediaPlayer、IMFMediaEngine 以及 Media Foundation 中的音訊/視訊擷取,而不是 DirectShow。 Microsoft建議使用舊版 API 的現有程式代碼,盡可能改寫成使用新的 API。]
type-1 DV AVI 檔案包含單一交錯數據流。 若要在預覽時擷取 type-1 檔案,請使用下圖中顯示的篩選圖表。
此圖表中的篩選包括:
- Smart Tee 篩選器會將交錯 DV 數據分割成擷取串流和預覽串流。 這兩個數據流都包含相同的交錯數據。
- AVI Mux 和檔案寫入器會將交錯數據流寫入磁碟。
- DV 分隔器會將交錯串流分割成 DV 視訊串流和音訊串流。 這兩個串流都會呈現為預覽。
- DV 視訊譯碼器將 DV 視訊串流譯碼以供預覽。
建置此圖表,如下所示:
ICaptureGraphBuilder2 *pBuilder; // Capture graph builder.
IBaseFilter *pDV; // DV capture filter (MSDV)
IBaseFilter *pAviMux // Avi Mux filter.
// Initialize pDV (not shown).
// Create and initialize the Capture Graph Builder (not shown).
// Create the file-writing section of the graph.
hr = pBuilder->SetOutputFileName(&MEDIASUBTYPE_Avi,
OLESTR("C:\\Example1.avi"), &pAviMux, 0);
// Render the capture stream.
hr = pBuilder->RenderStream(&PIN_CATEGORY_CAPTURE, &MEDIATYPE_Interleaved,
pDV, 0, pAviMux);
// Render the preview stream.
hr = pBuilder->RenderStream(&PIN_CATEGORY_PREVIEW, &MEDIATYPE_Interleaved,
pDV, 0, 0);
// Remember to release all interfaces.
- 呼叫 ICaptureGraphBuilder2::SetOutputFileName ,將 AVI Mux 篩選器連接到檔案寫入器篩選器。
- 使用 Pin 類別 PIN_CATEGORY_CAPTURE 呼叫 ICaptureGraphBuilder2::RenderStream 來呈現擷取串流。 擷取圖形產生器會自動插入 Smart Tee 濾鏡。
- 再次調用 RenderStream,但使用 PIN_CATEGORY_PREVIEW 類別來呈現預覽數據流。 如果您不想預覽影片,請略過此呼叫。
對於這兩次對 RenderStream 的呼叫,媒體類型都是 MEDIATYPE_Interleaved,這表示是交錯的 DV 視訊。 在此程式碼中,擷取圖形產生器會自動新增所有必需的篩選器,但不包括 MSDV 擷取篩選器。
相關主題