對於使用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