在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做了部分调整如下:
运行效果: