使用DirectShow捕获相机

Capture camera using DirectShow

本文关键字:相机 DirectShow 使用      更新时间:2023-10-16

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

我的问题:
这是正确的方式吗?有其他选择吗
在哪里可以找到非常好的示例来展示如何完成这项工作?

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

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

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

基本视频捕获

DirectShow是Windows Mobile 6中的视频捕获API。那里有一个视频捕获过滤器,所有的东西都是以与Windows中几乎相同的方式设计的。

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

要解决这个问题,你有几种方法,第一种是通过DirectShow.NET进行适当的更新,以开始在设备上工作,去掉移动操作系统中缺少的部分等。这将使你成为DS.NET和移动操作系统的双胞胎。

另一种选择是进行一些C++开发,并在该域中实现最小的足够功能集,通过COM公开组件。然后你将从托管代码中引用它,事情就会连接在一起。另一个显而易见的选择是使用第三方解决方案,该解决方案已经做到了上述其中一个。