使用DirectShow捕获相机

时间:2012-10-07 22:31:21

标签: c# c++ camera windows-mobile directshow

我正在C#为带有Windows Mobile 6.1的设备开发SmartDevice应用程序(Pocket PC 2003模板)。我需要使用这个设备的相机(照片,视频);为了做这项工作,我尝试使用CameraCaptureDialog类,但它不适用于Pocket PC应用程序。 所以,我在互联网上记录并发现我可能会引用DirectShow API,但问题是我不知道从哪里开始,因为我找不到一个正常工作/正确的例子。

我的问题:
这是正确的方法吗?有替代品吗?
我在哪里可以找到一个非常好的示例来说明如何完成这项工作?

4 个答案:

答案 0 :(得分:4)

如果您真的想使用DirectShow和NetCF,可以尝试directshowbetcf:http://alexmogurenko.com/blog/directshownetcf/

答案 1 :(得分:1)

网上有很多关于directshow的例子。有一个网站致力于将API转换为C#,这使得它变得更加容易,也许这就是它http://directshownet.sourceforge.net/about.html。我一直在努力学习DirectShow,直到我从microsoft press上读到“编程指导”这本书。通过那本书的大约三分之一,这一切看起来非常简单,我能够完成我想要的。最后,它很像引用任何库并使用该库中的类。增加的难点是你需要添加包装器,因为它们都是COM对象,但已经为你完成了。

答案 2 :(得分:1)

这可能对您了解DirectShow技术很有用。基本上是DirctShow的开始,并解释了一些重要的观点。但它的C ++不是C#。希望这个帮助

Basic Video Capture

答案 3 :(得分:1)

DirectShow是Windows Mobile 6中的video capture API。其中有一个Video Capture Filter,所有内容的设计方式与Windows中的相同。

问题是,这是一个原生API,而不仅仅是Windows Mobile。要在C#中开发,你需要一些绑定而且它们都缺失了。在桌面上有DirectShow.NET,这是一个缺失的部分,但它似乎不适合CE。但是你仍然需要在Windows Mobile中填补这个空白。

要解决这个问题,你有几种方法,第一种方法是通过DirectShow.NET并适当更新它以开始在你的设备上工作,剥离移动操作系统中缺少的部分等。这会让你成为DS的双胞胎.NET但适用于移动操作系统。

另一个选择是进行一些C ++开发并在该域中实现最小的足够功能集,通过COM公开组件。然后,您将从托管代码中引用它,并将事物连接在一起。另一个明显的选择是使用已经完成上述任何一种的第三方解决方案。