捕获类型 1 DV 文件
[与此页面关联的功能 DirectShow 是一项旧功能。 它已被 MediaPlayer、 IMFMediaEngine 和 媒体基金会中的音频/视频捕获取代。 这些功能已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能使用 MediaPlayer、 IMFMediaEngine 和 Media Foundation 中的音频/视频捕获 ,而不是 DirectShow。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]
类型 1 DV AVI 文件包含单个交错流。 若要在预览时捕获类型 1 文件,请使用下图所示的筛选器图。
此图中的筛选器包括:
- Smart Tee 筛选器将交错的 DV 拆分为捕获流和预览流。 这两个流包含相同的交错数据。
- AVI 复用器和文件编写器将交错的流写入磁盘。
- 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 复用器筛选器连接到文件编写器筛选器。
- 使用引脚类别PIN_CATEGORY_CAPTURE调用 ICaptureGraphBuilder2::RenderStream 以呈现捕获流。 捕获图形生成器会自动插入 Smart Tee 筛选器。
- 再次调用 RenderStream,但使用引脚类别PIN_CATEGORY_PREVIEW,以呈现预览流。 如果不想预览视频,请跳过此调用。
对于对 RenderStream 的两个调用,媒体类型MEDIATYPE_Interleaved,即交错 DV 视频。 在此代码中,捕获图形生成器会自动添加除 MSDV 捕获筛选器之外所需的每个筛选器。
相关主题
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈