捕获类型 1 DV 文件
[与本页关联的功能 DirectShow 是一项旧版功能。 它已被 MediaPlayer、IMFMediaEngine 和媒体基础中的音频/视频捕获所取代。 这些功能已针对 Windows 10 和 Windows 11 进行了优化。 Microsoft 强烈建议新代码尽可能使用 MediaPlayer、IMFMediaEngine 和媒体基础中的音频/视频捕获,而不是 DirectShow。 如果可能,Microsoft 建议应重写使用旧 API 的现有代码,以尽可能地使用新的 API。]
类型 1 DV AVI 文件包含单个交错流。 若要在预览时捕获类型 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 筛选器连接到文件编写器筛选器。
- 使用 固定类别调用 ICaptureGraphBuilder2::RenderStream PIN_CATEGORY_CAPTURE来呈现捕获流。 捕获图形生成器会自动插入 Smart Tee 筛选器。
- 再次调用 RenderStream,但使用固定类别PIN_CATEGORY_PREVIEW来呈现预览流。 如果不想预览视频,请跳过此调用。
对于对 RenderStream 的两次调用,媒体类型MEDIATYPE_Interleaved,这意味着交错的 DV 视频。 在此代码中,Capture Graph Builder 会自动添加所需的每个筛选器,MSDV 捕获筛选器除外。
相关主题