海康摄像SDK开发笔记(一):海康威视网络摄像头SDK介绍与模块功能

简介: 海康摄像SDK开发笔记(一):海康威视网络摄像头SDK介绍与模块功能

前言

  视频监控、人脸识别等应用中经常使用到摄像头,当前占据主流视频监控摄像头就是海康和大华两家,都可通过自家的sdk或者是onvif方式使用和控制摄像头。

  本文章讲解海康的sdk方式。


海康

  海康(海康威视)是以视频为核心的智能物联网解决方案和大数据服务提供商,在视频行业是当前实打实的老大哥,当然还有大华,其他不多做介绍。

海康设备网络SDK下载

  下载地址:https://www.hikvision.com/cn/download_61.html

  

  在ubuntu16.04 x86_64上开发,下载SDK_Linux64版本,可查看详细描述,右上角下载:

  

  点击下载:

  

  解压后:

  

  海康威视SDK自带QtDemo,不过是qt4.7版本的,笔者使用qt5版本。


海康SDK概述与使用流程

初始化SDK

  海康sdk有其固有的使用流程,如下图:

  

初始化SDK(NET_DVR_Init)

  对整个网络SDK系统的初始化,内存预分配等。

设置连接超时时间(NET_DVR_SetConnectTime)可选

  设置SDK中的网络连接超时时间,不调用则使用默认值。

异常回调函数(NET_DVR_SetDVRMessage或NET_DVR_SetExceptionCallBack_V30)

  sdk中大部分模块的功能是异步异常,海康提供此接口用于接收预览、报警、回放、透明通道和语音对讲等模块发生异常信息。用户可以在初始化 SDK 后就设置该回调函数,在应用层对各个模块异常消息的接收和处理。

从解析服务器获得设备的 IP 地址(NET_DVR_GetDVRIPByResolveSvr_EX)

  该接口提供一种在仅知道设备名称(或 DDNS 域名)或者序列号的情况下,从解析服务器获得设备 IP 地址的方法。如:当前设备是通过拨号上网方式获取到动态 IP 地址,而运行了我公司 IPServer 软件的服务器即为解析服务器或者设备注册到我公司 DDNS 服务器上,我们可以通过此接口输入服务器的地址、设备的名称或序列号等信息查询该设备的 IP 地址。(注意:由此看来不能达到没有任何配置的情况下,直接使用该函数搜索到局域网内的所有摄像头信息)。

用户注册设备(NET_DVR_Login_V30)

  实现用户的注册功能,注册成功后,返回的用户 ID 作为其他功

能操作的唯一标识, SDK 允许最大注册用户数为 512 个。就设备而言, V3.0 以上版本支持的设备允许有 32 个注册用户名,而且同时最多允许 128 个用户注册; V3.0 以下版本支持的设备允许有 16 个注册用户名,而且同时最多允许 128 个用户注册。

  登录后才可进行功能其他功能的调用(除了报警模块不需要登录)。

释放SDK(NET_DVR_Cleanup)

  不再使用sdk后,释放其使用的资源。

SDK功能模块

  

预览模块

  从设备取实时码流,解码显示以及播放控制等功能,同时支持软解码和解码卡解码。

回放和下载模块

  可以通过按时间和按文件名的方式远程回放或者下载设备的录像文件,后续可以进行解码或者存储。同时还支持断点续传功能(需要设备支持)。

参数配置模块

  设置和获取设备的参数,主要包括设备参数、网络参数、通道压缩参数、串口参数、报警参数、异常参数、交易信息和用户配置等参数信息。

远程设备维护模块

  实现关闭设备、重启设备、恢复默认值、远程硬盘格式化、远程升级和配置文件导入/导出等维护工作。

语音对讲转发模块

  语音对讲转发模块:实现和设备的语音数据对讲和语音数据获取,音频编码格式可以指定。

报警模块

  报警模块:处理设备上传的各种报警信号。报警分为“布防”和“监听”两种方式,在采用监听方式并且不 需要获取用户 ID 的情况下,报警模块可以无需进行“用户注册”操作步骤。

透明通道模块

  透明通道模块:透明通道是将 IP 数据报文解析后直接发送到串行口的一种技术。实际上起到了延伸串行设备控制距离的作用。可利用 IP 网络控制多种串行设备,如控制解码器、矩阵、报警主机、门禁、仪器仪表等串行设备,对用户来说,只看到点对点传输,无须关心网络传输过程,所以称为串口透明通道。SDK提供485和232串口作为透明通道功能,其中要将 232 串口作为透明通道使用,首先必须在232串口的配置信息(NET_DVR_RS232CFG)中将工作模式选为透明通道,这样232串口才可作为透明通道使用。

云台控制模块

  云台控制模块:实现对云台的基本操作、预置点、巡航、轨迹和透明云台的控制。SDK将云台控制分为两种模式:一种是通过图像预览返回的句柄进行控制;另一种是无预览限制,通过用户注册ID号进行云台控制。

IP通道概念与相关说明

模拟输入

  DVR 视频输入接模拟摄像机,其通道称为模拟通道; 混合型 DVR、 NVR 等设备支持 IPC 接入,通道称IP 通道(或者数字通道),配置相关参数时需调用 IP 接入配置参数来进行资源的获取和重新分配。

模拟通道个数

  客户端通过注册设备(NET_DVR_Login_V30)返回的设备信息 NET_DVR_DEVICEINFO_V30 获取模拟通道个数(byChanNum)、模拟通道起始通道号(byStartChan)和设备支持的最大 IP 通道数(byIPChanNum + byHighDChanNum * 256)、数字通道起始通道号(byStartDChan)。

通道号

  从 byStartChan 到 byStartChan + byChanNum - 1 对应为模拟通道的通道号,IP 通道的通道号为 byStartDChan到 byStartDChan + (byIPChanNum + byHighDChanNum * 256) - 1。 DVR 只有模拟通道, NVR 只有 IP 通道,混合型 DVR 同时支持模拟通道和 IP 通道。

单设备的多IP通道

  如果设备支持 IP 通道个数大于 0,则可以通过远程参数配置接口 NET_DVR_GetDVRConfig(配置命令:NET_DVR_GET_IPPARACFG_V40)可以获取得到设备详细的 IP 资源信息(NET_DVR_IPPARACFG_V40),包括模拟通道是否禁用(byAnalogChanEnable)、 IP 通道个数(dwDChanNum)、 IP 通道起始通道号(dwStartDChan)、 IP 通道取流模式、 IP 通道有效状态和在线状态等。通过远程参数配置接口NET_DVR_SetDVRConfig(配置命令: NET_DVR_SET_IPPARACFG_V40)可对设备进行 IP 资源配置,包括添加、修改、删除 IP 通道等。

报警

  混合型 DVR 或 NVR 的 IP 报警输入和报警输出的通道是在音视频 IP 通道资源分配好后,由设备自动分配的。 如果要对 IP 报警参数进行配置,首先通过命令 NET_DVR_GET_IPALARMINCFG_V40NET_DVR_GET_IPALARMOUTCFG_V40 获取 IP 报警输入资源(NET_DVR_IPALARMINCFG_V40) 和 IP 报警输出资源(NET_DVR_IPALARMOUTCFG_V40)。 然后通过命令 NET_DVR_SET_ALARMINCFG_V40 可以配置报警数相关参数(NET_DVR_ALARMINCFG_V40),包括报警输入名称、报警器类型、布防时间、联动方式等,通过命令 NET_DVR_SET_ALARMOUTCFG_V30 可以配置报警输出相关参数(NET_DVR_ALARMOUTCFG_V30),比如报警输出名称、布防时间、输出报警延时等。 相关接口:NET_DVR_GetDVRConfigNET_DVR_SetDVRConfig


相关文章
|
5月前
|
安全 网络性能优化 网络虚拟化
网络交换机分类与功能解析
接入交换机(ASW)连接终端设备,提供高密度端口与基础安全策略;二层交换机(LSW)基于MAC地址转发数据,构成局域网基础;汇聚交换机(DSW)聚合流量并实施VLAN路由、QoS等高级策略;核心交换机(CSW)作为网络骨干,具备高性能、高可靠性的高速转发能力;中间交换机(ISW)可指汇聚层设备或刀片服务器内交换模块。典型流量路径为:终端→ASW→DSW/ISW→CSW,分层架构提升网络扩展性与管理效率。(238字)
1350 0
|
8月前
|
JSON 中间件 Go
Go 网络编程:HTTP服务与客户端开发
Go 语言的 `net/http` 包功能强大,可快速构建高并发 HTTP 服务。本文从创建简单 HTTP 服务入手,逐步讲解请求与响应对象、URL 参数处理、自定义路由、JSON 接口、静态文件服务、中间件编写及 HTTPS 配置等内容。通过示例代码展示如何使用 `http.HandleFunc`、`http.ServeMux`、`http.Client` 等工具实现常见功能,帮助开发者掌握构建高效 Web 应用的核心技能。
435 61
|
5月前
Vite使用svg-企业级开发(支持本地svg和网络svg渲染)
本教程介绍如何在Vite项目中集成SVG图标插件。首先安装`vite-plugin-svg-icons`,配置插件指向SVG图标目录,并注册全局组件。接着创建SVG图标组件,支持内部图标与外部图片展示。通过简单配置,即可在页面中灵活使用各类SVG图标,提升开发效率。
283 0
|
8月前
|
开发者
鸿蒙仓颉语言开发教程:网络请求和数据解析
本文介绍了在仓颉开发语言中实现网络请求的方法,以购物应用的分类列表为例,详细讲解了从权限配置、发起请求到数据解析的全过程。通过示例代码,帮助开发者快速掌握如何在网络请求中处理数据并展示到页面上,减少开发中的摸索成本。
鸿蒙仓颉语言开发教程:网络请求和数据解析
|
8月前
|
监控 安全 网络协议
恶意软件无处逃!国内版“Manus”AiPy开发Windows沙箱工具,进程行为+网络传输层级监控! 头像 豪气的
NImplant.exe 是一款后渗透测试工具,可实现远程管理与持久化控制。其优点包括无文件技术、加密通信和插件扩展,但也存在被检测风险及配置复杂等问题。为深入分析其行为,我们基于 aipy 开发了 Windows 沙箱工具,针对桌面上的 NImplant.exe 进行多维度分析,涵盖进程行为、网络连接(如 TCP 请求、目标 IP/域名)、文件控制等,并生成传输层监控报告与沙箱截图。结果显示,aipy 工具响应迅速,报告清晰易读,满足分析需求。
|
11月前
|
网络协议 物联网
VB6网络通信软件上位机开发,TCP网络通信,读写数据并处理,完整源码下载
本文介绍使用VB6开发网络通信上位机客户端程序,涵盖Winsock控件的引入与使用,包括连接服务端、发送数据(如通过`Winsock1.SendData`方法)及接收数据(利用`Winsock1_DataArrival`事件)。代码实现TCP网络通信,可读写并处理16进制数据,适用于自动化和工业控制领域。提供完整源码下载,适合学习VB6网络程序开发。 下载链接:[完整源码](http://xzios.cn:86/WJGL/DownLoadDetial?Id=20)
414 12
|
5月前
|
开发工具 Android开发
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
676 11
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
|
前端开发 Java Shell
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
820 20
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
JavaScript 前端开发 Java
[Android][Framework]系统jar包,sdk的制作及引用
[Android][Framework]系统jar包,sdk的制作及引用
515 0
|
程序员 开发工具 Android开发
Android|使用阿里云推流 SDK 实现双路推流不同画面
本文记录了一种使用没有原生支持多路推流的阿里云推流 Android SDK,实现同时推送两路不同画面的流的方法。
331 7