c语言编程笔录

首页 >   > 笔记大全

笔记大全

C中怎么连接海康威视

更新时间:2023-10-09

海康威视 SDK

海康威视是一家全球领先的智能安防解决方案提供商,提供智能楼宇、智慧交通、智能安防、智慧养老等多个领域的全套产品和解决方案。

海康威视提供了多种 APIs 来连接设备,其中最常用的是基于 C# 的 SDK。

首先需要下载并安装海康威视 SDK,然后在项目中添加对 HCNetSDK.dll 和 PlayCtrl.dll 的引用。

连接和登录设备

使用 SDK 连接设备需要执行以下步骤:

  1. 初始化
  2. 登录设备
  3. 获取设备能力集
  4. 启动预览或回放

接下来我们将逐个步骤介绍代码示例。

初始化

初始化 SDK 的方式如下所示:

  CHCNetSDK.NET_DVR_Init();

登录设备

登录设备的方式如下所示:

  CHCNetSDK.NET_DVR_USER_LOGIN_INFO loginInfo = new CHCNetSDK.NET_DVR_USER_LOGIN_INFO();
  loginInfo.sDeviceAddress = "192.168.1.64";
  loginInfo.wPort = 8000;
  loginInfo.sUserName = "admin";
  loginInfo.sPassword = "123456";

  CHCNetSDK.NET_DVR_DEVICEINFO_V30 deviceInfo = new CHCNetSDK.NET_DVR_DEVICEINFO_V30();
  IntPtr loginHandle = CHCNetSDK.NET_DVR_Login_V30(loginInfo, ref deviceInfo);
  if (loginHandle == IntPtr.Zero)
  {
    MessageBox.Show("登录设备失败");
  }

获取设备能力集

获取设备能力集的方式如下所示:

  uint dwReturned = 0;
  IntPtr lpInBuffer = IntPtr.Zero;
  byte[] pBuffer = new byte[100 * 1024];
  lpInBuffer = Marshal.AllocHGlobal(pBuffer.Length);
  Marshal.Copy(pBuffer, 0, lpInBuffer, pBuffer.Length);
  CHCNetSDK.NET_DVR_GetDVRConfig(loginHandle, CHCNetSDK.NET_DVR_GET_DEVICECFG_V40, -1, lpInBuffer, (uint)pBuffer.Length, ref dwReturned);
  CHCNetSDK.NET_DVR_DEVICECFG_V40 deviceConfig = (CHCNetSDK.NET_DVR_DEVICECFG_V40)Marshal.PtrToStructure(lpInBuffer, typeof(CHCNetSDK.NET_DVR_DEVICECFG_V40));

启动预览或回放

启动预览或回放的方式如下所示:

  CHCNetSDK.NET_DVR_PREVIEWINFO previewInfo = new CHCNetSDK.NET_DVR_PREVIEWINFO();
  previewInfo.hPlayWnd = previewHandle;
  previewInfo.lChannel = 1;
  previewInfo.dwStreamType = 0;
  previewInfo.dwLinkMode = 0;
  previewInfo.bBlocked = true;
  previewInfo.byProtoType = 0;
  previewInfo.byPreviewMode = 0;

  IntPtr playHandle = CHCNetSDK.NET_DVR_RealPlay_V40(loginHandle, ref previewInfo, null, IntPtr.Zero);
总结:

以上就是使用 C# 连接和登录海康威视设备的基本步骤和代码示例。在实际项目中,我们还需要考虑对视频流的处理、设置设备参数、调用云台控制等问题。

海康威视 SDK 提供了丰富的 API 和文档,开发人员只需要按照文档中的接口说明编写代码,就可以轻松实现与海康威视设备的连接和操作。