将视频捕获到 Windows 媒体文件
[与此页面关联的功能 DirectShow 是旧版功能。 它已被 MediaPlayer、 IMFMediaEngine 和 Media Foundation 中的音频/视频捕获所取代。 这些功能已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能在 Media Foundation 中使用 MediaPlayer、 IMFMediaEngine 和 音频/视频捕获 ,而不是 DirectShow。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]
若要捕获视频并将其编码为 Windows Media Video (WMV) 文件,请将捕获引脚连接到 WM ASF 编写器 筛选器,如下图所示。
生成此图的最简单方法是在 ICaptureGraphBuilder2::SetOutputFileName 方法中指定MEDIASUBTYPE_Asf:
IBaseFilter* pASFWriter = 0;
hr = pBuild->SetOutputFileName(
&MEDIASUBTYPE_Asf, // Create a Windows Media file.
L"C:\\VidCap.wmv", // File name.
&pASFWriter, // Receives a pointer to the filter.
NULL); // Receives an IFileSinkFilter interface pointer (optional).
值MEDIASUBTYPE_Asf告知捕获图形生成器使用 WM ASF 编写器筛选器作为文件接收器。 捕获图形生成器创建筛选器,将其添加到图形,并调用 IFileSinkFilter::SetFileName 来设置输出文件的名称。 它将返回指向筛选器的指针作为传出参数 (
pASFWriter
在上一个示例中) 。
使用 WM ASF 编写 器上的 IConfigAsfWriter 接口设置 Windows Media 配置文件。 在连接 WM ASF 编写器上的任何固定之前,必须执行此操作。
IConfigAsfWriter *pConfig = 0;
hr = pASFWriter->QueryInterface(IID_IConfigAsfWriter, (void**)&pConfig);
if (SUCCEEDED(hr))
{
// Configure the ASF Writer filter.
pConfig->Release();
}
有关设置配置文件的详细信息,请参阅 在 DirectShow 中创建 ASF 文件。
调用 ICaptureGraphBuilder2::RenderStream 将捕获筛选器连接到 ASF 编写器:
hr = pBuild->RenderStream(
&PIN_CATEGORY_CAPTURE, // Capture pin.
&MEDIATYPE_Video, // Video. Use MEDIATYPE_Audio for audio.
pCap, // Pointer to the capture filter.
0,
pASFWriter); // Pointer to the sink filter (ASF Writer).
WM ASF 编写器筛选器上的每个输入引脚对应于 Windows 媒体配置文件中的一个流。 必须连接每个引脚,以便文件内容与配置文件匹配。
相关主题