2011-06-01 63 views
2

我有一个项目,我需要记录使用DirectShow从摄像头的视频,但我需要能够停止录制,同时预览继续运行。Directshow的记录/预览问题

我使用WPFMediaKit

http://wpfmediakit.codeplex.com/

的问题是,当我录制视频暂停功能还停留在预览窗格中的应用

我是新来的DirectShow,任何建议,就如何是可以解决这个问题或解决方案

非常感谢你。

PS我使用C#& WPF

+0

您是否尝试过创建两个图?一个用于预览,另一个用于录制? – yms 2011-06-01 16:43:43

+0

我现在用的是WPFMEdiaKit控制,我不知道DirectShow中发现舒服,所以我猜他们在控制 – 2011-06-01 21:18:19

回答

3

我不知道该WPFMediaKit,但基本上当你要开始/停止录制,同时保持预览,您将需要两个图,有所为那些之间的连接图表。看看pdf documentGMFBridge页面。

+0

@大卫我觉得你最好的选择是遵循Wimmel建议创建一个图表。由于您可以下载和修改WPFMediaKit的源代码,因此您应该可以在其上集成GMFBridge过滤器。 – yms 2011-06-02 22:31:55

+0

我正在执行此操作,我收到一个异常 “没有可用的样本缓冲区分配器。” 你是否熟悉这个例外? – 2011-06-03 22:13:31

+0

@大卫,没有我不.... – wimh 2011-06-04 07:18:33

3

如果当您开始/停止录制,不想用的东西就像一个2图GMFBridge方法,您可以接受预览瞬间的停顿,你可以断开该视频捕捉源过滤器上的捕获引脚(假设你正在使用单独的预览和源过滤器中的捕获引脚)或断开捕获子图的文件写入器链部分。

这里的问题是必须FilterGraph动态暂停可以改变其拓扑结构进行之前,所以你需要:

暂停图 断开或重新连接文件写入链 恢复图

在我的经历暂时停顿不是很明显。

+0

谢谢你,我把周末和合并GMFBridge与WPFMediaKit它的伟大工程一起,我希望我可以释放以此为WPFMediaKit开源项目补丁并帮助人们在未来,我愿意与任何询问 – 2011-06-07 11:21:28

+0

的人分享代码@David这是一个很好的答案,你至少应该加入它。 – yms 2011-06-09 22:32:52

0

请使用ICaptureGraphBuilder2的StreamControl方法,它为您提供单独控制在图形中的任何过滤器。