C# directshow 连接多个图

Posted

技术标签:

【中文标题】C# directshow 连接多个图【英文标题】:C# directshow connect multiple graphs 【发布时间】:2017-03-31 15:41:08 【问题描述】:

我正在构建一个 C# 应用程序,其中 2 个或更多摄像头连接到具有一个或多个输出的处理模块。我需要能够连接“监视器”窗口来预览每个摄像头以及可以隐藏或独立显示的已处理输出,并在视频程序运行时将其他处理过滤器添加到流中。

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

(来源:fkeinternet.net)

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

在DirectShow .NET project 中的example code 的基础上,结合GraphEditPlus 生成的代码,我可以构建一个基本应用程序,其中包含显示在C# 窗体窗口中的单个摄像头的视频流。我正在调试同时运行的多个预览窗口,但我意识到还有其他问题:

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

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

(来源:fkeinternet.net)

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

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

【问题讨论】:

【参考方案1】:

我偶然发现了this post,它指出了我正在寻找的答案 - GMFBridge

【讨论】:

以上是关于C# directshow 连接多个图的主要内容,如果未能解决你的问题,请参考以下文章

将实时视频从我的 c# 应用程序流式传输到 ASP.NET 网页

C++ / W32 - 录制声音、Direct Show 或 WaveInOpen?

DirectShow 的 eof 检测

同时使用 DirectShow 播放多个 wav 文件并记录它们 C++

如何在 VS 2010 中创建 DirectShow 项目

解构ffmpeg