最近做了一个关于摄像头的项目,需要适配WindowsXP及以上系统,需要兼容XP系统就打算用dshow技术,顺便把相关技术学了一遍,这里给大家分享一下如何打开指定摄像头设备。
通过设备VID/PID找到指定摄像头设备
HRESULTGetCameraId(){
ICreateDevEnum *pDevEnum =NULL;
IEnumMoniker *pEnum =NULL;HRESULT hr =NULL;CoInitialize(NULL);
int index =-1;
int iCapCount =0;
hr =CoCreateInstance(CLSID_SystemDeviceEnum,NULL,CLSCTX_INPROC_SERVER, IID_ICreateDevEnum, reinterpret_cast<void**>(&pDevEnum));if(SUCCEEDED(hr)){
hr = pDevEnum->CreateClassEnumerator(CLSID_VideoInputDeviceCategory,&pEnum,0);if(hr ==S_OK){
//枚举捕获设备
IMoniker *pMoniker =NULL;ULONG cFetched;while(pEnum->Next(1,&pMoniker,&cFetched)==S_OK){
IPropertyBag* pPropBag;
hr = pMoniker-

发布评论