对于使用Windows Mobile 6.1的设备,我正在为C#
开发SmartDevice应用程序(Pocket PC 2003模板)。我需要使用此设备的相机(照片,视频);做这个工作我尝试使用CameraCaptureDialog
类,但它不适用于Pocket PC应用程序。 所以,我记录在互联网上,发现我可能指DirectShow API,但问题是,我不知道从哪里开始,因为我找不到一个工作/正确的例子。
我的问题:
这是正确的方法吗?有替代品吗?
我在哪里可以找到一个非常好示例显示如何做这项工作?使用DirectShow捕获相机
回答
网上有很多directshow的例子。有一个网站致力于将API转换为C#,这使得它变得更容易,也许这就是它http://directshownet.sourceforge.net/about.html。直到我从微软出版社读到“编程directshow”这本书之前,我一直在使用DirectShow。在这本书中,大约三分之一的内容看起来非常简单,我能够完成我想要的东西。最后,它很像引用任何库并使用该库中的类。另外的困难是你需要添加包装,因为它们都是COM对象,但是已经为你完成了。
网上没有很多directshow的例子..然而,你唯一的链接(directshow.net)是一个伟大的库,但它不适用于我的设备:我有很多编译错误,我不能使用其中的一些类,因为它们抛出了TypeLoadException(例如,我收到了这条消息:_Cannot从程序集'DirectShowLib-2005'_中加载'DirectShowLib.DsDevice'类型)。 – Nick
如果您真的想要使用DirectShow和NetCF,您可以尝试directshowbetcf:http://alexmogurenko.com/blog/directshownetcf/。
这可能对您了解DirectShow技术有用。基本上给了DirctShow一个开始,并解释了一些重要的观点。但它的C++不是C#。希望这有助于
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公开该组件。然后,您将从托管代码中引用此内容,并将事物连接在一起。另一个显而易见的选择是使用第三方解决方案,该解决方案已经完成了上述的一个。
- 1. 如何从不使用DirectShow的相机捕获数据?
- 2. 使用DirectShow捕获音频
- 3. 相机不可用/检测为DirectShow视频捕获设备
- 4. 如何使用DirectShow捕捉RGB中的实时相机帧
- 5. 用DirectShow捕获AVI视频
- 6. DirectShow原始捕获
- 7. 使用DirectShow从非DirectShow源捕获到AVI
- 8. Android相机捕获
- 9. 使用directshow来控制相机和使用开放的cv来捕捉图像
- 10. 需要捕获使用相机的Android
- 11. DirectShow,捕获静止图像
- 12. directshow RedenStream无法捕获
- 13. DirectShow DVD操作和捕获
- 14. 在DirectShow中预览相机并捕获静止图像 - 在VB.net中
- 15. android捕获图片相机
- 16. 黑白相机捕获WinJS
- 17. 5秒后捕获相机
- 18. 如何使用相机类捕获到系统默认相册
- 19. 用安卓相机捕获ISBN号码
- 20. 如何捕获回用相机
- 21. 从手机相机捕获图像?
- 22. “假”DirectShow视频捕获设备
- 23. 的DirectShow不能启动捕获两次
- 24. DirectShow C#捕获Pin属性窗口#
- 25. DirectShow - 在观看时捕获摄像头?
- 26. C++ IPC - d3d钩子和directshow捕获源
- 27. 的ffmpeg的DirectShow捕获2个引脚
- 28. 如何忽略使用DirectShow API捕获按钮/区域?
- 29. 使用DirectShow捕获帧和OpenCV来处理
- 30. 如何使用DirectShow正确捕获音频
为什么使用不知道CameraCaptureDialog的PocketPC2003模板?对于WindowsMobile 6.1,您应该使用WM6pro模板。使用DirectShow将会很困难,并且没有设备OEM的额外信息,您将无法使用所有功能。更进一步说,在Compact Framework中使用DirectShow使得方法变得更加困难。我测试了DirectShow示例(由MS或其他人)以及紧凑的框架包装器。他们没有一个让我满意。什么是该设备的制造商?他们是否为那里的设备提供了一个SDK? – josef
因为如果我使用WM 6标准(或专业)模板,当我尝试使用此代码使用CameraCaptureDialog时:'CameraCaptureDialog dlg = new CameraCaptureDialog(); dlg.ShowDialog();'它引发一个InvalidOperationException异常,消息:“发生未知错误”。该设备是[Getac PS236](http://us.getac.com/products/handhelds/ps236/techspecs)。 – Nick
@downvoter为什么选择downvote?!? – Nick