如何在不停止的情况下向图表添加预览流?

时间:2014-02-27 13:06:19

标签: graph directshow video-capture

问题是构建一个支持三种状态的捕获图:

  1. 仅预览
  2. 仅捕获到AVI文件
  3. 联合
  4. 我已经构建了这样的图形:

    enter image description here

    此图对应于状态3.现在,如果我想更改状态2,我删除预览流并获取如下图:

    enter image description here

    想象一下,我运行图表并开始捕获。现在我想回到状态3.如何在不停止图形的情况下执行此操作(添加预览流)? (捕获应该继续)。

    UPD。也许有可能捕获到AVI文件的末尾?如果是这样,我可以在状态2停止图形,向其添加预览流(更改为状态3)并继续捕获到现有AVI文件的结尾(在上一步生成)。可能吗?

    UPD2。我找到了一些黑客。当我想从状态3更改状态2时,我只是隐藏预览窗口。当我想回到状态3时,我会显示一个预览窗口。因此,我不再需要状态2,因为状态2只是状态3,隐藏了预览窗口!

1 个答案:

答案 0 :(得分:3)

即使存在Dynamic Graph Building(另请参阅Dynamic Reconnection),但在大多数情况下它几乎没用:

  

在大多数DirectShow过滤器中,当图表主动传输数据时,无法重新连接引脚。应用程序必须在重新连接引脚之前停止图形。但是,某些过滤器确实在图形运行时支持引脚重新连接,这一过程称为动态重新连接。

您使用的过滤器很可能与动态重新连接或限制可扩展性不兼容。您可能有其他原因不使用此方法,例如如果在动态操作过程中无法承受延迟和丢失数据。

典型的解决方案包括两个图表:实时(捕获,预览演示)和录制。您在两者之间传递数据以使工作同步。您可能想要阅读图形桥接和GMFBridge

您可能还想阅读有关此主题的相关问题: