【问题标题】:Directshow recording/preview problemDirectshow 录制/预览问题
【发布时间】:2011-06-01 15:24:55
【问题描述】:

我有一个项目需要使用 DirectShow 从网络摄像头录制视频,但我需要能够在预览继续运行时停止录制。

我正在使用 WPFMediaKit

http://wpfmediakit.codeplex.com/

问题是当我录制视频时,暂停功能也会暂停应用程序中的预览窗格

我是 DirectShow 的新手,有什么建议可以解决这个问题或解决方案

非常感谢。

PS 我使用 C# 和 WPF

【问题讨论】:

  • 您是否尝试过创建两个图表?一个用于预览,另一个用于录制?
  • 我正在使用 WPFMEdiaKit 控件,我不太了解 directshow,所以我猜他们在该控件中创建了一个图表

标签: c# wpf video directshow capture


【解决方案1】:

我不了解 WPFMediaKit,但基本上当您想在保持预览的同时开始/停止录制时,您将需要两个图表,以及连接这些图表的东西。在GMFBridge 页面查看pdf document

【讨论】:

  • @David 我认为您最好的选择是遵循 Wimmel 的建议。由于您可以下载和修改 WPFMediaKit 的源代码,因此您应该可以在其上集成 GMFBridge 过滤器。
  • 我现在正在做,我收到一个异常“没有可用的样本缓冲区分配器。”你熟悉这个例外吗?
【解决方案2】:

如果您可以在开始/停止录制时接受预览中的短暂暂停,并且不想使用 2 图形 GMFBridge 方法,您可以断开视频捕获源过滤器上的任一捕获引脚(假设您是使用单独的预览和来自源过滤器的捕获引脚)或断开捕获子图的文件写入器链部分。

这里的问题是必须先暂停过滤图,然后才能对其拓扑进行更改,因此您需要:

暂停图表 断开或重新连接文件写入器链 简历图

根据我的经验,暂时的停顿不是很明显。

【讨论】:

  • 谢谢,我利用周末时间将 GMFBridge 与 WPFMediaKit 结合起来,效果很好,我希望我可以将它作为 WPFMediaKit 开源项目的补丁发布并帮助将来的人们,我愿意与任何询问的人分享代码
  • @David 这是一个很好的答案,你至少应该支持它。
【解决方案3】:

请使用 ICaptureGraphBuilder2 的 StreamControl 方法,它可以让您单独控制 Graph 中的任何过滤器。

【讨论】:

    猜你喜欢
    • 2012-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多