在VC ++中指导GMFBridge

时间:2012-05-30 15:19:21

标签: visual-c++ directshow video-capture

我有一个mp4 Capture应用程序,连续捕获图形30分钟(或一些动态值),我需要非常高的捕获精度,不会丢失频率。数据的。

为此,我们决定制作2个捕获图,首先运行第一个图,然后在30分钟后制作第二个图,运行它然后停止第一个图,这样我们就不会丢失任何数据。

以简单的方式,我们无法创建第二个图表,因为第一个图表正在运行且资源正在使用中(几乎这就是我猜测逻辑不起作用的原因)

我正在为它冲浪并找到GMFBridge,我想这对我们的情况很有用,我想在下面制作流程

来源图

Video Source --> XCodec Filter --> Infinite tee --> GMF Bridge Sink Filter (multile as per tee)-->

Audio Source --> ACM Wrapper --> MonoGraph AAC Encodec --> Infinite Tee (multile as per tee)--> GMF Bridge Sink Filter -->

第一张图

  --> GMF Source Filter -->  GDCL Mux --> Filter Writer

第二张图

  --> GMF Source Filter -->  GDCL Mux --> Filter Writer

现在使用GMFBridge,我们将使源仅使用一次并使用Infinite Pin Tee Filter制作副本,并使应用程序同时Source Graph to First GraphSource Graph to Second Graph

首先运行Source Graph to First Graph的组合,并在30分钟后运行Source Graph to First Graph的组合,然后停止该图表。

我想知道我的理解是否合适?我能用GMFbridge实现这个目标吗?而且我需要简单的GMFBridge代码,而不是在他们的示例应用程序中提供。

请帮忙。

由于

1 个答案:

答案 0 :(得分:1)

您只需在源图中添加一个GMF Bridge Sink Filter。如果需要多个流,则可以将网桥配置为具有多个流。但仅仅因为你需要两次才能将无限T恤放入其中是没有意义的。

你做的是:

  • 启动源图。
  • 启动第一张图
  • 将源与第一个图表连接
  • 启动第二张图
  • (30分钟后)将源图与第二个图连接
  • 停止第一张图
  • ...

这样您就不会丢失任何样本,前30分钟所有样本都会转到第一张图表。从您切换的那一刻起,所有样本都会转到第二个图表。