使用dshow如何打开指定摄像头
最近做了一个关于摄像头的项目,需要适配WindowsXP及以上系统,需要兼容XP系统就打算用dshow技术,顺便把相关技术学了一遍,这里给大家分享一下如何打开指定摄像头设备。
通过设备VID/PID找到指定摄像头设备
HRESULT GetCameraId()
{
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