C# directshow 连接多个图

C# directshow connect multiple graphs

我正在构建一个 C# 应用程序,其中 2 个或更多摄像头连接到具有一个或多个输出的处理模块。我需要能够连接“监视器”windows 以预览每个摄像机和可以独立隐藏或显示的处理输出,在视频节目 运行ning 时向流中添加额外的处理过滤器.

从概念上讲,我正在尝试构建如下所示的内容:


(来源:fkeinternet.net

(使用 Video Mixing Filter from the Video Processing Project,我实际上可以构建上面的图表并让它 运行 三个视频渲染器显示各自的视频流 - 在 ActiveMovie windows 中,而不是 C#形式 windows。构建 并不是问题,构建完整的 应用程序 才是问题。)

基于 example code from the DirectShow .NET project, combined with code generated by GraphEditPlus,我可以使用以 C# 形式显示的来自单个摄像机的视频流来构建基本应用程序 window。我正在调试同时运行的多个预览 windows,但我意识到还有其他问题:

上图的一个问题是,如果任何输出 windows 关闭,整个图就会停止。另一个是它不允许在不停止整个图并重建它的情况下在处理阶段添加过滤器。

我的想法是将整体图分解为单独的源图、处理图和显示图,以便每个部分都可以根据需要启动或停止,如下所示:


(来源:fkeinternet.net

我假设我必须一直保留一张图 运行ning 以便为其他所有内容(可能是“处理图”组件)提供“主时钟”源,但我'我不太确定该怎么做。

是否有将多个图形连接在一起的“标准”方法?就此而言,这有可能吗?我已经按照“c# directshow connect two graphs”进行了多次搜索,但返回的所有链接都与将 过滤器 连接在一起有关,而不是图表。我问错问题了吗?

我偶然发现了this post which pointed me to the answer I was looking for - GMFBridge