如何在directshow中渲染网络摄像头过滤器而不是视频文件?

时间:2010-05-16 19:41:00

标签: c++ visual-studio-2008 directshow

如何渲染网络摄像头过滤器而不是视频文件?我正在查看directshow sdk中包含的vmr9compositor示例。它呈现一个视频文件。我想从网络摄像头流入来源。这样看起来应该是可能的,但我对directshow没有多少把握。

目前使用此方法调用:

hr = g_graph->RenderFile( pFileName, NULL );

查看sdk中的playcap示例,它可以在窗口中显示Web cam feed,我看到它使用

hr = g_pCapture->RenderStream (&PIN_CATEGORY_PREVIEW, &MEDIATYPE_Video, pSrcFilter, NULL, NULL));

显示网络摄像头流。 pSrcFilter是一个IBaseFilter。

如何使用网络摄像头Feed将vmr应用中的视频文件交换?

Windows XP,Visual Studio 2008 C ++

2 个答案:

答案 0 :(得分:2)

枚举网络摄像头(视频捕捉)源并使用此处说明的技术创建源过滤器:

http://msdn.microsoft.com/en-us/library/dd377566%28v=VS.85%29.aspx

从那里,您只需将其作为源过滤器连接到图表中。

此处有关DShow视频捕捉的详细信息。 http://msdn.microsoft.com/en-us/library/dd407331%28v=VS.85%29.aspx

答案 1 :(得分:0)

我真的不明白playcap样本没有做什么。 RenderFile相当于调用AddSourceFilter,然后枚举每个输出引脚(使用IEnumPins)并渲染每个引脚。 RenderStream是一个包装器,用于定位引脚然后呈现它。那么playcap示例如何插入源过滤器(来自捕获名字对象)然后渲染它(使用RenderStream)是RenderFile的实时源等效。