擷取 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_CATEGORY_CAPTURE呼叫 ICaptureGraphBuilder2::RenderStream 來轉譯擷取數據流。 擷取圖形產生器會自動插入Smart Tee篩選條件。
- 再次呼叫 RenderStream,但使用釘選類別PIN_CATEGORY_PREVIEW轉譯預覽數據流。 如果您不想預覽影片,請略過此呼叫。
對於轉譯數據流的這兩個呼叫,媒體類型都會MEDIATYPE_Interleaved,這表示交錯的 DV 視訊。 在此程式代碼中,擷取圖形產生器會自動新增每個所需的篩選,但 MSDV 擷取篩選條件除外。
相關主題