C# 使用DirectShow拍摄相机

C# 使用DirectShow拍摄相机,c#,c++,camera,windows-mobile,directshow,C#,C++,Camera,Windows Mobile,Directshow,我正在用C为装有WindowsMobile 6.1的设备开发一个智能设备应用程序(PocketPC2003模板)。我需要使用此设备的摄像头(照片、视频);为了完成这项工作,我尝试使用CameraCaptureDialog类,但它不适用于Pocket PC应用程序。 所以,我在互联网上做了记录,发现我可能提到了,但问题是我不知道从哪里开始,因为我找不到一个有效/正确的例子。 我的问题: 这条路对吗?有其他选择吗? 在那里我可以找到一个非常好的例子来说明如何做这项工作。网上有很多directsho

我正在用
C
为装有WindowsMobile 6.1的设备开发一个智能设备应用程序(PocketPC2003模板)。我需要使用此设备的摄像头(照片、视频);为了完成这项工作,我尝试使用
CameraCaptureDialog
类,但它不适用于Pocket PC应用程序。 所以,我在互联网上做了记录,发现我可能提到了,但问题是我不知道从哪里开始,因为我找不到一个有效/正确的例子。

我的问题:
这条路对吗?有其他选择吗?

在那里我可以找到一个非常好的例子来说明如何做这项工作。

网上有很多directshow的例子。有一个网站专门将API转换为C#,这使它变得更容易,也许就是它。我一直在努力学习DirectShow,直到我读了微软出版社的《DirectShow编程》一书。在这本书的三分之一的篇幅中,这一切似乎都非常简单,我能够完成我想要的。最后,它非常类似于引用任何库并使用该库中的类。增加的困难是,您需要添加包装器,因为它们都是COM对象,但这已经为您完成了。

如果您真的想使用DirectShow和NetCF,您可以尝试directshowbetcf:这可能有助于您了解DirectShow技术。基本上为DirctShow提供了一个开始,并解释了一些要点。但是它的C++不是C语言。希望这有帮助

DirectShow是Windows Mobile 6中的首选。有一个在那里和所有东西的设计几乎相同的方式,他们在Windows中

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

要解决这一问题,有几种方法,第一种方法是通过DirectShow.NET进行适当的更新,以开始在您的设备上工作,去除移动操作系统中缺少的部分等。这将为DS.NET提供一个孪生兄弟,但移动操作系统除外


另一种选择是做一些C++开发,并在该域中实现最小充分特征集,通过COM公开组件。然后,您将从托管代码中引用它,然后事情将连接在一起。另一个明显的选择是使用第三方解决方案,该解决方案已经实现了上述功能。

为什么要使用PocketPC2003模板,而该模板不知道CameraCaptureDialog?对于WindowsMobile 6.1,您应该使用WM6pro模板。使用DirectShow将是一个艰难的过程,如果没有设备OEM提供的其他信息,您将无法使用所有功能。此外,将DirectShow与Compact Framework结合使用会使方法更加困难。我已经测试了DirectShow示例(由MS或其他人提供)以及Compact Framework包装器。他们没有一个工作让我满意。该设备的制造商是什么?他们是否为这些设备提供SDK?因为如果我尝试使用带有以下代码的CameraCaptureDialog时使用WM 6标准(或专业)模板:
CameraCaptureDialog dlg=new CameraCaptureDialog();dlg.ShowDialog()它抛出InvalidOperationException,消息:“发生未知错误”。该设备是。网络上的directshow示例并不多。。但是,您唯一的链接(directshow.net)是一个很棒的库,但它对我的设备不起作用:我有很多编译错误,并且我无法使用其中的一些类,因为它们引发TypeLoadException(例如,我收到以下消息:无法从程序集“DirectShowLib-2005”加载“DirectShowLib.DsDevice”类型).Eccept对于DirectShowNetCF没有其他(开源或非开源)用于compact framework的directshow库。你可以继续搜索,但如果你想走directshow的路,以上是你能得到的最好的方法。简单的方法是MS Official使用CameraCaptureDialog。如果您有机会,您可能无法为您的设备找到Intermec Muldtimedia资源工具包替代方案。MMRK通过摄像头将所有DirectShow包裹在Intermec手持设备上。