目录
一、背景
网络上对于海康设备网络SDK对接,存在诸多难点和槽点;笔者结合多年来海康设备开发的经验,海康设备SDK二次开发进行总结,打算写一个系列文章,旨在帮助大家在集成海康设备时少走一些弯路,快速高效的集成起来。笔者力求以最短的篇幅,将重点列出来。
二、SDK开发对接入门
1、各类SDK下载
设备网络SDK下载:海康开放平台 海康开放平台-硬件设备SDK下载
海康各类SDK开发包如下,综合自己的设备类型、网络环境、应用程序架构来选择:
下载下来的网络SDK包:
2、网络SDK接口重点说明
NET_DVR_Init:SDK初始化接口,分配SDK所需全局资源;接口调用之前必须调用。
NET_DVR_Clean:SDK反初始化接口,释放初始化接口申请的资源。程序退出前调用。
NET_DVR_Login_V40:设备登录(注册)接口
1)返回值为用户ID(从0开始,-1表示失败),用户ID用来调用其他接口;
2)出参NET_DVR_DEVICEINFO_V40
设备序列号: NET_DVR_DEVICEINFO_V40.struDeviceV30.sSerialNumber
模拟通道数:NET_DVR_DEVICEINFO_V40.struDeviceV30.byChanNum
数字通道数:NET_DVR_DEVICEINFO_V40.struDeviceV30.byIPChanNum
起始数字通道号:NET_DVR_DEVICEINFO_V40.struDeviceV30.byStartDChan
注意:数字通道号=起始数字通道号+通道索引-1 eg:起始数字通道号=33,则第1通道数字
通道号为33+1-1=33,第2通道数字通道号为33+2-1=34。
3)设备的登录连接个数有限制,一般为6-10个,如果频繁登录不注销,会出现错误码52、46等。
4)NET_DVR_Login_V40是兼容NET_DVR_Login_V30、NET_DVR_Login的,任意一个都可以登录,V40较新参数较多,建议使用。
NET_DVR_Logout:设备登出(注销)接口,释放设备的登录连接,如果程序中用户ID不再使用,应当注销设备。
报警布防/监听功能:用于接收设备上传的报警事件。
1)布防布防:
NET_DVR_SetDVRMessageCallBack_V31--设置接受报警的回调函数
NET_DVR_SetupAlarmChan_V41 -- 布防设备,布防成功后,设备触发事件,回调函数将输出事件信息。
NET_DVR_CloseAlarmChan_V30 -- 撤防设备,撤防后,回调函数不再输出事件信息。
2)监听方式:
一般首先需要设置报警上传的服务器地址:可以在设备WEB页面找一下配置的地方,有些找不到配置监听主机IP的配置,可能是不支持监听,可以采用布防方式。
NET_DVR_StartListen_V30 -- 启动监听,这里是监听接收报警的服务器的地址,在哪台电脑上运行程序,就监听这台电脑的IP;如果接收报警的服务器在公网,则要把服务器的公网地址配给设备,而SDK监听还是监听服务器的网卡IP地址;监听成功后,服务器上监听的端口会处于占用状态,相当于开启了一个socket与设备建立了链接。
NET_DVR_StopListen_V30 -- 停止监听。
3、最小Demo实例运行
这里用VS运行一个官网预览C#Demo。
找不到SDK库文件:
需要把SDK库文件拷贝到exe同级目录:
我拷贝的Win32位的库,目标平台选择的x64,会报错如下:
解决方案:调整目标程序的位数需要与SDK位数一致即可,即32位程序用32位的SDK,64位程序用64位的SDK。
重新生成并运行:
三、各类业务介绍
官网的开发者平台,已经对海康各类设备、业务场景、需要用到的接口,做了全面的介绍:
通用视频业务:海康各类摄像机、硬盘录像机等具备音视频功能的设备,提供视频预览、回放、录音录像、云台控制、语音对讲等。
智能应用业务:智能设备,基于音视频+AI算法,提供人脸抓拍、比对,客流量检测,安全帽检测,高空抛物检测等业务。
交通产品业务:智能交通类设备,提供车牌识别、违章检测、车位检测等业务。
明眸门禁业务:门禁刷脸、刷卡、闸机类设备,提供人员管理,报警事件(可实现考勤),远程开门、健康码等业务。
热成像业务:热成像类设备,热成像相机一般有2个通道,可见光通道和热成像通道,可以实现如
烟火检测、温度报警、人脸测温(疫情期间很多测温场所都用到)。
协议透传业务:通过SDK透传ISAPI协议,ISAPI协议是一个类似HTTP的协议,比SDK简单很多,不用定义复杂的结构体;SDK通过设备8000端口通讯,HTTP通过设备80端口通讯;后续我们单独介绍ISAPI协议的用法。