共用方式為


擷取 Type-1 DV 檔案

[與此頁面相關聯的功能, DirectShow 是舊版功能。 它已被媒體播放程式、IMFMediaEngine媒體基金會的音訊/視訊擷取所取代。 這些功能已針對 Windows 10 和 Windows 11 進行優化。 Microsoft 強烈建議新程式碼儘可能使用 MediaPlayerIMFMediaEngine 以及 Media Foundation 中的音訊/視訊擷取,而不是 DirectShow。 Microsoft建議使用舊版 API 的現有程式代碼,盡可能改寫成使用新的 API。]

type-1 DV AVI 檔案包含單一交錯數據流。 若要在預覽時擷取 type-1 檔案,請使用下圖中顯示的篩選圖表。

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.
  1. 呼叫 ICaptureGraphBuilder2::SetOutputFileName ,將 AVI Mux 篩選器連接到檔案寫入器篩選器。
  2. 使用 Pin 類別 PIN_CATEGORY_CAPTURE 呼叫 ICaptureGraphBuilder2::RenderStream 來呈現擷取串流。 擷取圖形產生器會自動插入 Smart Tee 濾鏡。
  3. 再次調用 RenderStream,但使用 PIN_CATEGORY_PREVIEW 類別來呈現預覽數據流。 如果您不想預覽影片,請略過此呼叫。

對於這兩次對 RenderStream 的呼叫,媒體類型都是 MEDIATYPE_Interleaved,這表示是交錯的 DV 視訊。 在此程式碼中,擷取圖形產生器會自動新增所有必需的篩選器,但不包括 MSDV 擷取篩選器。

DirectShow 中的數位視訊