在windowsmobile下進行視頻採集,我採用的directshow進行實現。
我的開發環境是vs2005,用的開發語言爲C++,做正兒八經的事情,我還是傾向於使用C++來做,當然用directshow可能最好用C++比較好。
我開發電腦上安裝的是windowsmobile sdk 6.0。在安裝好了SDK後,在c:/Program Files/Windows Mobile 6SDK/Samples/PocketPC/CPP/win32/CameraCapture/目錄下有個視頻採集的例子,打開就可以編譯。如果編譯過程中出現如下錯誤:
錯誤 1 errorLNK2001: 無法解析的外部符號IID_IMediaEvent graphmanager.obj
錯誤 2 errorLNK2001: 無法解析的外部符號PIN_CATEGORY_STILL graphmanager.obj
錯誤 3 errorLNK2001: 無法解析的外部符號CLSID_IMGSinkFilter graphmanager.obj
錯誤 4 errorLNK2001: 無法解析的外部符號PIN_CATEGORY_CAPTURE graphmanager.obj
錯誤 5 errorLNK2001: 無法解析的外部符號MEDIATYPE_Video graphmanager.obj
錯誤 6 errorLNK2001: 無法解析的外部符號MEDIASUBTYPE_Asf graphmanager.obj
錯誤 7 errorLNK2001: 無法解析的外部符號DMOCATEGORY_VIDEO_ENCODER graphmanager.obj
錯誤 8 errorLNK2001: 無法解析的外部符號CLSID_DMOWrapperFilter graphmanager.obj
錯誤 9 errorLNK2001: 無法解析的外部符號CLSID_VideoCapture graphmanager.obj
錯誤 10 errorLNK2001: 無法解析的外部符號CLSID_FilterGraph graphmanager.obj
錯誤 11 errorLNK2001: 無法解析的外部符號CLSID_CaptureGraphBuilder graphmanager.obj
錯誤 12 fatalerror LNK1120: 11 個無法解析的外部命令 Windows Mobile 6Professional SDK
不用着急,我也遇到了這樣的情況,可能跟DIRECTX的安裝有些關係,請調整vs2005的編譯環境設置,“工具/選項/項目和解決方案/VC++目錄/”,平臺選windows mobile 6 professional,庫文件中將“C:/Program Files/WindowsMobile 6 SDK/PocketPC/lib/ARMV4I”調整到最上面,然後編譯就應該就可以編譯通過了。
我的測試真機爲S900,顯示出來的按鈕顯示不正常,我對appwindow.cpp做了部分調整如下:
運行效果: