码迷,mamicode.com
首页 > Windows程序 > 详细

视频开发技术 视频设备枚举 C#

时间:2015-01-12 11:02:36      阅读:404      评论:0      收藏:0      [点我收藏+]

标签:移动视频开发   手机视频 开发技术   手机视频 sdk   音视频解决方案   音视频 sdk   

由于小编之前使用过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、调用实现代码:

  1. int iDeviceCount = -1;
  2. IntPtr[] lpDevicePtrs;

  3. // 枚举系统所有的视频设备
  4. int ret = AnyChatCoreSDK.EnumVideoCapture(null, ref iDeviceCount);
  5. if(ret != 0 || iDeviceCount == 0)
  6.         return;
  7. lpDevicePtrs = new IntPtr[iDeviceCount];
  8. ret = AnyChatCoreSDK.EnumVideoCapture(lpDevicePtrs, ref iDeviceCount);

  9. cbxCamera.Items.Clear();
  10. foreach (IntPtr p in lpDevicePtrs)
  11. {
  12.         string device = Marshal.PtrToStringAnsi(p);    // 如果是Unicode版本,需要使用:Marshal.PtrToStringUni(p);
  13.         if (string.IsNullOrEmpty(device) == false)
  14.         {
  15.                 cbxCamera.Text = device;
  16.                 cbxCamera.Items.Add(device);
  17.         }
  18. }

  19. // 获取当前视频采集设备
  20. StringBuilder sb = new StringBuilder(1024);
  21. AnyChatCoreSDK.GetCurVideoCapture(sb, sb.Capacity);
  22. if (string.IsNullOrEmpty(sb.ToString()) == false)
  23.         cbxCamera.Text = sb.ToString();
  24. else if (cbxCamera.Items.Count > 0)
  25.         cbxCamera.Text = cbxCamera.Items[0].ToString();

视频开发技术 视频设备枚举 C#

标签:移动视频开发   手机视频 开发技术   手机视频 sdk   音视频解决方案   音视频 sdk   

原文地址:http://blog.csdn.net/little_rui/article/details/42638413

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!