首页 > 代码库 > 视频开发技术 视频设备枚举 C#
视频开发技术 视频设备枚举 C#
由于小编之前使用过BR_Chat的音视频解决方案作视频会议系统开发,所以这里也就以当时的环境和处理机制简单做一个介绍。
1、BR_Chat-枚举本地视频采集设备-方法概述:
DWORD BRAC_EnumVideoCapture(TCHAR** lpDeviceName, DWORD&
dwDeviceNum);
功能:枚举本地视频采集设备
返回值:0 表示成功,否则为出错代码
参数:
lpDeviceName
视频设备名称,可为空,表示只获取设备数量;
dwDeviceNum
视频设备数量;
备注:
该方法将会在内部分配缓冲区,外部使用完成之后,必需手工释放这些缓冲区,否则会造成内存泄露,由于内部采用了“GlobalAlloc”来分配高端内存,故外部需要调用“GlobalFree”来释放,而不能是 delete 或 free 方法,具体使用方法请参考BR_Chat SDK中 Demo 程序的源代码,SDK/src目录。
2、调用实现代码:
- int iDeviceCount = -1;
- IntPtr[] lpDevicePtrs;
- // 枚举系统所有的视频设备
- int ret = AnyChatCoreSDK.EnumVideoCapture(null, ref iDeviceCount);
- if(ret != 0 || iDeviceCount == 0)
- return;
- lpDevicePtrs = new IntPtr[iDeviceCount];
- ret = AnyChatCoreSDK.EnumVideoCapture(lpDevicePtrs, ref iDeviceCount);
- cbxCamera.Items.Clear();
- foreach (IntPtr p in lpDevicePtrs)
- {
- string device = Marshal.PtrToStringAnsi(p); // 如果是Unicode版本,需要使用:Marshal.PtrToStringUni(p);
- if (string.IsNullOrEmpty(device) == false)
- {
- cbxCamera.Text = device;
- cbxCamera.Items.Add(device);
- }
- }
- // 获取当前视频采集设备
- StringBuilder sb = new StringBuilder(1024);
- AnyChatCoreSDK.GetCurVideoCapture(sb, sb.Capacity);
- if (string.IsNullOrEmpty(sb.ToString()) == false)
- cbxCamera.Text = sb.ToString();
- else if (cbxCamera.Items.Count > 0)
- cbxCamera.Text = cbxCamera.Items[0].ToString();
视频开发技术 视频设备枚举 C#
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。