【问题标题】:Directshow GMFBridge in VC++VC++ 中的 Directshow GMFBridge
【发布时间】:2012-05-30 15:19:21
【问题描述】:

我有一个 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 代码。

请帮忙。

谢谢

【问题讨论】:

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


    【解决方案1】:

    您只需将一个 GMF Bridge Sink Filter 添加到源图中。如果需要多个流,可以将桥配置为具有多个流。但是仅仅因为您需要两次就将 Infinite tee 放入其中是没有意义的。

    你要做的是:

    • 启动源图。
    • 开始第一张图
    • 将源与第一张图联系起来
    • 开始第二张图
    • (30 分钟后)将源图与第二个图连接
    • 停止第一张图
    • ...

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

    【讨论】:

    • 感谢@Wimmel 的回复,我已经放了无限的 tee bcoz 我想在同一时间和地点同时连接 source graph to first graphsource graph to second graph,但好像你建议不要松开任何数据然后我会先尝试,但我也不想丢失几毫秒的数据......这可能吗?而且我也看到了 GMF 桥代码,但没有得到如何将它集成到我的代码中(应该在我的应用程序中添加什么才能在我的应用程序中使用 GMFBridge)? ,你能在这方面给我建议吗??
    • 据我所知,这样使用不会丢失任何数据。这正是 GMFBridge 的用例之一。另请参阅this 回复,其中我解释了如何使用 GMFBridge,但 GMFBridge 下载中也包含一些很好的文档。我不知道是否可以在一个图形中使用两个桥同时连接到两个图形。但如果需要,您可以修改源代码。
    • 嗨@Wimmel,我正在尝试制作一个简单的GMFBridge应用程序,但是当我桥接2个greaphs时,它给了我错误:除非它的事件类已经存在任何想法,否则无法存储订阅?为什么会出现这样的错误??
    猜你喜欢
    • 2011-08-31
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多