我正在构建一个C#应用程序,其中2个或更多相机连接到具有一个或多个输出的处理模块。我需要能够连接"监控"用于预览每个摄像机的窗口以及可以独立隐藏或显示的已处理输出,并在视频程序运行时将额外的处理过滤器添加到流中。
从概念上讲,我试图构建一个看起来像这样的东西:
(使用Video Mixing Filter中的Video Processing Project,我实际上可以构建上面的图表并让它与三个视频渲染器一起显示各自的视频流 - 在ActiveMovie窗口中,而不是C#窗体窗口。构建图形并不是问题,构建完整的应用程序是个问题。)
在example code的DirectShow .NET project上构建,结合GraphEditPlus生成的代码,我可以使用C#表单窗口中显示的单个摄像头构建一个基本应用程序。我正在调试同时运行的多个预览窗口,但我已经意识到还有其他问题:
上图所示图形的一个问题是,如果任何输出窗口关闭,则整个图形停止。另一个原因是它不允许在处理阶段添加过滤器而不停止整个图并重建它。
我的想法是将整体图形分解为单独的源图,处理图形和显示图形,以便可以根据需要启动或停止每个图形,如下所示:
我假设我必须始终保持一个图表运行,以提供一个主时钟"其他一切的来源(可能是" Processing Graph"组件),但我不太清楚如何做到这一点。
是否有"标准"将多个图连接在一起的方法?就此而言,它甚至可能吗?我已按照" c# directshow connect two graphs"进行了大量搜索。但返回的所有链接都与将过滤器连接在一起而不是图形有关。我问的是错误的问题吗?