共用方式為


擷取 Type-1 DV 檔案

[與此頁面相關聯的功能, DirectShow 是舊版功能。 它已被媒體播放程式、IMFMediaEngine媒體基金會的音訊/視訊擷取所取代。 這些功能已針對 Windows 10 和 Windows 11 進行優化。 Microsoft強烈建議新程式代碼盡可能使用 MediaPlayer、IMFMediaEngineMedia 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_CATEGORY_CAPTURE呼叫 ICaptureGraphBuilder2::RenderStream 來轉譯擷取數據流。 擷取圖形產生器會自動插入Smart Tee篩選條件。
  3. 再次呼叫 RenderStream,但使用釘選類別PIN_CATEGORY_PREVIEW轉譯預覽數據流。 如果您不想預覽影片,請略過此呼叫。

對於轉譯數據流的這兩個呼叫,媒體類型都會MEDIATYPE_Interleaved,這表示交錯的 DV 視訊。 在此程式代碼中,擷取圖形產生器會自動新增每個所需的篩選,但 MSDV 擷取篩選條件除外。

DirectShow 中的數位視訊