首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

怎么枚举所有视频设备(摄像头 ),如QQ视频一样可以选择视频设备

2012-01-19 
如何枚举所有视频设备(摄像头 ),如QQ视频一样可以选择视频设备?如题所述,请指点一下。谢谢。[解决办法]使用D

如何枚举所有视频设备(摄像头 ),如QQ视频一样可以选择视频设备?
如题所述,请指点一下。谢谢。

[解决办法]
使用DirectShow的SystemDeviceEnum
[解决办法]
http://www.cnblogs.com/nemolog/archive/2005/11/03/268353.html
//参考一下吧
[解决办法]
hr = CoCreateInstance(CLSID_SystemDeviceEnum, NULL, CLSCTX_INPROC_SERVER,IID_ICreateDevEnum, (void**)&pCreateDevEnum);
if (hr != NOERROR) {m_nVideoInputDeviceIndex = 0; return;}

hr = pCreateDevEnum->CreateClassEnumerator(CLSID_VideoInputDeviceCategory,&pEm, 0);
if (hr != NOERROR) {m_nVideoInputDeviceIndex = 0; goto EnumAudioCapture;}

pEm->Reset();

while(hr = pEm->Next(1, &pM, &cFetched), hr==S_OK)
{
IPropertyBag *pBag;
hr = pM->BindToStorage(0, 0, IID_IPropertyBag, (void **)&pBag);
if(SUCCEEDED(hr)) 
{
VARIANT var;
var.vt = VT_BSTR;
hr = pBag->Read(L"FriendlyName", &var, NULL);
if (hr == NOERROR) 
{
m_csVideoInputDevices.Add(W2T(var.bstrVal));
SysFreeString(var.bstrVal);

ASSERT(m_rgpmVideoMenu[uIndex] == 0);
m_rgpmVideoMenu[uIndex] = pM;
pM->AddRef();
}
pBag->Release();
}
pM->Release();
uIndex++;
}
pEm->Release();

热点排行