DirectShow控制台输出和保存视频设备名称
来源:互联网 发布:免费流程审批软件 编辑:程序博客网 时间:2024/05/22 11:54
#include "windows.h" #include "TCHAR.h" #include <dshow.h>#include <vector>#include <iostream>#include <cwctype>#define MAX_FRIENDLY_NAME_LENGTH 128 #define MAX_MONIKER_NAME_LENGTH 256typedef struct _TDeviceName{WCHAR FriendlyName[MAX_FRIENDLY_NAME_LENGTH]; // 设备友好名 WCHAR MonikerName[MAX_MONIKER_NAME_LENGTH]; // 设备Moniker名 } TDeviceName;int _tmain(int argc, _TCHAR* argv[]){TDeviceName name;HRESULT hr;// 初始化std::vector<TDeviceName> vectorDevices;vectorDevices.clear();// 初始化COM hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);if (FAILED(hr)){return hr;}// 创建系统设备枚举器实例 ICreateDevEnum *pSysDevEnum = NULL;hr = CoCreateInstance(CLSID_SystemDeviceEnum, NULL, CLSCTX_INPROC_SERVER, IID_ICreateDevEnum, (void **)&pSysDevEnum);if (FAILED(hr)){CoUninitialize();return hr;}// 获取设备类枚举器 IEnumMoniker *pEnumCat = NULL;hr = pSysDevEnum->CreateClassEnumerator(CLSID_VideoInputDeviceCategory, &pEnumCat, 0);if (hr == S_OK){// 枚举设备名称 IMoniker *pMoniker = NULL;ULONG cFetched;while (pEnumCat->Next(1, &pMoniker, &cFetched) == S_OK){IPropertyBag *pPropBag;hr = pMoniker->BindToStorage(NULL, NULL, IID_IPropertyBag, (void **)&pPropBag);if (SUCCEEDED(hr)){// 获取设备友好名 VARIANT varName;VariantInit(&varName);hr = pPropBag->Read(L"FriendlyName", &varName, NULL);if (SUCCEEDED(hr)){StringCchCopy(name.FriendlyName, MAX_FRIENDLY_NAME_LENGTH, varName.bstrVal);std::wcout << name.FriendlyName << std::endl;// 获取设备Moniker名 LPOLESTR pOleDisplayName = reinterpret_cast<LPOLESTR>(CoTaskMemAlloc(MAX_MONIKER_NAME_LENGTH * 2));if (pOleDisplayName != NULL){hr = pMoniker->GetDisplayName(NULL, NULL, &pOleDisplayName);if (SUCCEEDED(hr)){StringCchCopy(name.MonikerName, MAX_MONIKER_NAME_LENGTH, pOleDisplayName);vectorDevices.push_back(name);}CoTaskMemFree(pOleDisplayName);}}VariantClear(&varName);pPropBag->Release();}pMoniker->Release();} // End for While pEnumCat->Release();}pSysDevEnum->Release();CoUninitialize();}
0 0
- DirectShow控制台输出和保存视频设备名称
- DirectShow 视频上画线和输出文字
- Directshow视频采集保存
- linux 保存控制台输出
- DirectShow 录制视频时,如何在视频上画线和输出文字
- DirectShow 视频录制保存为avi文件
- DirectShow 切割视频保存到本地
- 使用DirectShow捕获视频,并截图保存
- DirectShow视频采集和OpenCV
- 控制台输入和输出
- 保存Eclipse控制台输出的内容
- 保存Eclipse控制台输出的内容
- 保存Eclipse控制台输出的内容
- 保存Eclipse控制台输出的内容
- 将控制台输出直接保存到文本文件
- 保存eclipse控制台的日志输出
- C#控制台 枚举类型,输出数值,输出名称
- 用DirectShow抓取视频帧,保存为位图
- [NOIP2014]寻找道路
- Java中的继承和组合
- 超酷!这些事也可以用Google做
- **android Intent 的Componet ,Action ,Category,Data,Type,Extra,Flag 7种属性详解
- 解决Expected MultipartHttpServletRequest: is a MultipartResolver configured问题。
- DirectShow控制台输出和保存视频设备名称
- POJ 3422 Kaka's Matrix Travels【最大费用流】
- Tomcat Error deploying configuration descriptor...的错误处理
- 使用Java泛型构造模板方法模式
- 2012年5月SAT香港真题解析
- hdu 1686 Oulipo
- [Android初级]android单元测试之Activity单独测试
- php strftime()的使用
- 生日日数(java处理日期,日期加法)