海康威视后台监控布防
海康威视后台监控布防
由于公司业务的需要,前端时间一直在折腾海康摄像头的对接。在这期间踩过许多坑,做一记录分享。
大致的业务场景,主要用到的是海康的 Ai 摄像头与高清摄像头,实现监控布防与实时画面在 web 页面展示预览。
对于 Ai 摄像头内部已经上传了训练好的模型,直接调用海康提供 SDK 接口即可,对于高清摄像则是调用海康 SDK 提供的抓拍功能,保存图片到本地,调用训练好的 Python 模型进行本地图片的算法分析。 实时画面展示只是 Vue 与海康官方提供的 Web3.2 源码进行整合通过 Nginx 代理完成实时画面的同步展示,由于一部分摄像头硬件是不支持 websocket 流传输的,所以前端的页面登录展示并未直接通过摄像头 ip 的方式进行登录,而是配合超脑主机不同的通道号进行登录预览的。
海康官网
视频布防与抓拍
视频的抓拍与布防可以参考,海康提供的网络设备SDK资料中的 **设备网络SDK编程指南(抓拍机)**文档
视频布防
可以看到的是(布防)流程是比较简单的
初始化 SDK (由于所有的接口都是使用 C++ 语言编写的,所以这里需要将这些开发包初始化为本地的 Java 可以调用执行的程序)
/*** 初始化 hCNetSDK*/public void init(){/*加载SDK的动态库*/if (hCNetSDK == null) {if (!CreateSDKInstance()) {System.out.println("Load SDK fail");}}/*初始化*/hCNetSDK.NET_DVR_Init();/*加载日志*/hCNetSDK.NET_DVR_SetLogToFile(3, "../sdklog", false);//设置报警回调函数Pointer pUser = null;if (!hCNetSDK.NET_DVR_SetDVRMessageCallBack_V31(fMSFCallBack_V31, pUser)) {System.out.println("设置回调函数失败!");} else {System.out.println("设置回调函数成功!");}}
这里的
hCNetSDK.NET_DVR_SetDVRMessageCallBack_V31(fMSFCallBack_V31, pUser)
是报警回调函数,需要进行提前的设置。/*** 动态依赖库加载* @return*/private static boolean CreateSDKInstance() {if (hCNetSDK == null) {synchronized (HCNetSDK.class) {String strDllPath = "";try {if (osSelect.isWindows()) {//win系统加载库路径Resource resource = new ClassPathResource("hikvision/windows/HCNetSDK.dll"); // strDllPath = resource.getFile().getPath();strDllPath = "D:\\windows\\HCNetSDK.dll";} else if (osSelect.isLinux())//Linux系统加载库路径strDllPath = System.getProperty("user.dir") + "/lib/libhcnetsdk.so";hCNetSDK = (HCNetSDK) Native.loadLibrary(strDllPath, HCNetSDK.class);} catch (Exception ex) {System.out.println("loadLibrary: " + strDllPath + " Error: " + ex.getMessage());return false;}}}return true;}
登录设备(这里只需根据海康提供的 Dome 调用 login_v40 或者 login 进行登录获取登录成功的用户 Id 号)
/**** @param ip 设备IP* @param port SDK端口* @param user 设备用户名* @param psw 设备密码*/public static int login_V40(String ip, short port, String user, String psw) {//注册HCNetSDK.NET_DVR_USER_LOGIN_INFO m_strLoginInfo = new HCNetSDK.NET_DVR_USER_LOGIN_INFO();//设备登录信息HCNetSDK.NET_DVR_DEVICEINFO_V40 m_strDeviceInfo = new HCNetSDK.NET_DVR_DEVICEINFO_V40();//设备信息// String m_sDeviceIP = "192.168.0.100";//设备ip地址m_strLoginInfo.sDeviceAddress = new byte[HCNetSDK.NET_DVR_DEV_ADDRESS_MAX_LEN];System.arraycopy(ip.getBytes(), 0, m_strLoginInfo.sDeviceAddress, 0, ip.length());// String m_sUsername = "admin";//设备用户名m_strLoginInfo.sUserName = new byte[HCNetSDK.NET_DVR_LOGIN_USERNAME_MAX_LEN];System.arraycopy(user.getBytes(), 0, m_strLoginInfo.sUserName, 0, user.length());// String m_sPassword = "hzyjy123";//设备密码m_strLoginInfo.sPassword = new byte[HCNetSDK.NET_DVR_LOGIN_PASSWD_MAX_LEN];System.arraycopy(psw.getBytes(), 0, m_strLoginInfo.sPassword, 0, psw.length());// m_strLoginInfo.wPort = 8085;m_strLoginInfo.wPort = port;m_strLoginInfo.bUseAsynLogin = false; //是否异步登录:0- 否,1- 是m_strLoginInfo.write();int lUserID = hCNetSDK.NET_DVR_Login_V40(m_strLoginInfo, m_strDeviceInfo);if (lUserID == -1) {log.debug("登录失败,错误码为" + hCNetSDK.NET_DVR_GetLastError());return lUserID;}log.debug(ip + ":设备登录成功!");return lUserID;}
报警布放(这里的 lUserID 就是之前登录成功后返回的用户 ID,这个 ID 在登录成功的情况下是唯一的)
/*** 报警布防接口** @param lUserID*/ public static int setAlarm(int lUserID) {//报警布防参数设置HCNetSDK.NET_DVR_SETUPALARM_PARAM m_strAlarmInfo = new HCNetSDK.NET_DVR_SETUPALARM_PARAM();m_strAlarmInfo.dwSize = m_strAlarmInfo.size();m_strAlarmInfo.byLevel = 0; //布防等级m_strAlarmInfo.byAlarmInfoType = 1; // 智能交通报警信息上传类型:0- 老报警信息(NET_DVR_PLATE_RESULT),1- 新报警信息(NET_ITS_PLATE_RESULT)m_strAlarmInfo.byDeployType = 0; //布防类型:0-客户端布防,1-实时布防m_strAlarmInfo.write();int lAlarmHandle = hCNetSDK.NET_DVR_SetupAlarmChan_V41(lUserID, m_strAlarmInfo);System.out.println("lAlarmHandle: " + lAlarmHandle);if (lAlarmHandle == -1) {logout(lUserID);log.debug("布防失败,错误码为" + hCNetSDK.NET_DVR_GetLastError());return lAlarmHandle;}log.debug("布防成功");return lAlarmHandle; }
海康威视后台监控布防相关推荐
- uniapp(小程序) 配置 海康威视-萤石监控(直播替代方案) 踩坑与解决方法
uniapp(小程序) 配置 海康威视-萤石监控(直播替代方案) 踩坑与解决方法 因为公司业务需求需要获取监控的摄像头,萤石是给出了几种方案去实现. 直播接入:萤石开放平台API文档 小程序接入:萤石 ...
- Delphi编写后台监控软件
Delphi编写后台监控软件 文章来源:Delphi程序员之家 后台监控软件,为了达到隐蔽监控的目的,应该满足正常运行时,不显示在任务栏上,在按Ctrl+Alt+Del出现的任务列表中也不显示,管 ...
- 简单的实现app界面劫持和后台监控
如今越来越多的手机玩家都为了折腾一些稀奇古怪的东西,或出于好奇,或出于贪心,往往会root手机去尝试安装一些外挂,刷分,刷粉,修改版等等乱七八糟的东西 正因为此类用户的存在,一些小人就盯上了这方面的市 ...
- python adb 实现对支付宝登录及后台监控
python 加载adb实现对支付宝登录及后台监控,与手机自身(电量,网络状态.进程后台)监控,及实现手机任意位置模拟点击. #!/usr/bin/env python # encoding: utf ...
- Druid后台监控与过滤器
Druid是阿里开元的数据源,相较于c3p0,dbcp等数据源具有强大的后台监控功能,刚好最近在学习springboot,涉及到Druid的知识,所以记录一下. springboot实现后台监控主要分 ...
- QT后台监控键盘和鼠标
目录 一.QT程序激活状态下的监控: 二.QT程序非激活状态下的监控 一.QT程序激活状态下的监控: 主要方法:重写键盘.鼠标事件(教程多,略过) void mouseMoveEvent(QMouse ...
- [Delphi]海康威视视频监控录像机布防报警的示例代码
HCNetSDK.pas由于太大,无法在这里粘贴,请到下列地址下载盒子论坛 v2.1http://bbs.2ccc.com/topic.asp?topicid=606222 unit uM ...
- 后台隐身自动屏幕截图、后台自动屏幕截图、后台自动截屏、隐身自动截屏、后台监控软件(带有密码保护)—— 定时执行专家
目录 1.后台自动截屏的需求 2.后台自动保存屏幕截图的软件 2.1 后台自动截屏设定方法 2.2 让<定时执行专家>开机自动启动.自动隐身 2.3 不能截全屏的问题 3.软件的下载及安装 ...
- Chrome插件开发--后台监控网页并自动刷新,点击页面元素
2015年6.17号,在线旅游网站蚂蜂窝出现了抢粽子活动:页面会出现一些粽子,点击粽子,即抢到.很明显,这是一个重复性的劳动,可以代码自动刷新页面,点击页面上的粽子. 本方案中选择了开发一款Chrom ...
最新文章
- 序列拼接工具Bowtie使用说明
- netty中的future和promise源码分析(二)
- stm32的can总线理解及应用——程序对应stm32f103系列
- 写linux程序测试吞吐量,Linux下测试磁盘性能(IO、吞吐量)
- java selenium用js点击_Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?...
- php修改隐藏域非法提交,PHP get、post变量放在表单隐藏域示例
- 文件描述符file descriptor与inode的相关知识
- 微服务-从设计到部署
- mysql 选取数据库_mysql选取数据库
- php留言板系统管理,php留言板系统 更加便于网站管理
- nbu mysql linux备份软件,NBU备份linux/aix/unix下的db2数据库配置
- aic值检验 p值_qRT-PCR差异分析及P值计算
- 数学文章 关于圆锥体积公式的证明
- 机器学习(Machine Learning)大家与资源
- 华为鸿蒙系统平板电脑,华为5G鸿蒙系统平板电脑正式入网,搭载八核处理器麒麟9000芯片...
- 举头望明月打计算机术语,有趣的中秋节灯谜
- 软件机器人失控:40%的bot程序都是恶意的
- Windows 11 笔记本电脑打开盖子无法立刻唤醒
- 灰色关联度分析(Grey Relation Analysis,GRA)原理详解
- 微信公众号菜单html5,Vue.js 实现微信公众号菜单编辑器功能(一)