海康威视后台监控布防

由于公司业务的需要,前端时间一直在折腾海康摄像头的对接。在这期间踩过许多坑,做一记录分享。

大致的业务场景,主要用到的是海康的 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;
    }
    

海康威视后台监控布防相关推荐

  1. uniapp(小程序) 配置 海康威视-萤石监控(直播替代方案) 踩坑与解决方法

    uniapp(小程序) 配置 海康威视-萤石监控(直播替代方案) 踩坑与解决方法 因为公司业务需求需要获取监控的摄像头,萤石是给出了几种方案去实现. 直播接入:萤石开放平台API文档 小程序接入:萤石 ...

  2. Delphi编写后台监控软件

    Delphi编写后台监控软件 文章来源:Delphi程序员之家   后台监控软件,为了达到隐蔽监控的目的,应该满足正常运行时,不显示在任务栏上,在按Ctrl+Alt+Del出现的任务列表中也不显示,管 ...

  3. 简单的实现app界面劫持和后台监控

    如今越来越多的手机玩家都为了折腾一些稀奇古怪的东西,或出于好奇,或出于贪心,往往会root手机去尝试安装一些外挂,刷分,刷粉,修改版等等乱七八糟的东西 正因为此类用户的存在,一些小人就盯上了这方面的市 ...

  4. python adb 实现对支付宝登录及后台监控

    python 加载adb实现对支付宝登录及后台监控,与手机自身(电量,网络状态.进程后台)监控,及实现手机任意位置模拟点击. #!/usr/bin/env python # encoding: utf ...

  5. Druid后台监控与过滤器

    Druid是阿里开元的数据源,相较于c3p0,dbcp等数据源具有强大的后台监控功能,刚好最近在学习springboot,涉及到Druid的知识,所以记录一下. springboot实现后台监控主要分 ...

  6. QT后台监控键盘和鼠标

    目录 一.QT程序激活状态下的监控: 二.QT程序非激活状态下的监控 一.QT程序激活状态下的监控: 主要方法:重写键盘.鼠标事件(教程多,略过) void mouseMoveEvent(QMouse ...

  7. [Delphi]海康威视视频监控录像机布防报警的示例代码

    HCNetSDK.pas由于太大,无法在这里粘贴,请到​​​​​​下列地址下载盒子论坛 v2.1http://bbs.2ccc.com/topic.asp?topicid=606222 unit uM ...

  8. 后台隐身自动屏幕截图、后台自动屏幕截图、后台自动截屏、隐身自动截屏、后台监控软件(带有密码保护)—— 定时执行专家

    目录 1.后台自动截屏的需求 2.后台自动保存屏幕截图的软件 2.1 后台自动截屏设定方法 2.2 让<定时执行专家>开机自动启动.自动隐身 2.3 不能截全屏的问题 3.软件的下载及安装 ...

  9. Chrome插件开发--后台监控网页并自动刷新,点击页面元素

    2015年6.17号,在线旅游网站蚂蜂窝出现了抢粽子活动:页面会出现一些粽子,点击粽子,即抢到.很明显,这是一个重复性的劳动,可以代码自动刷新页面,点击页面上的粽子. 本方案中选择了开发一款Chrom ...

最新文章

  1. 序列拼接工具Bowtie使用说明
  2. netty中的future和promise源码分析(二)
  3. stm32的can总线理解及应用——程序对应stm32f103系列
  4. 写linux程序测试吞吐量,Linux下测试磁盘性能(IO、吞吐量)
  5. java selenium用js点击_Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?...
  6. php修改隐藏域非法提交,PHP get、post变量放在表单隐藏域示例
  7. 文件描述符file descriptor与inode的相关知识
  8. 微服务-从设计到部署
  9. mysql 选取数据库_mysql选取数据库
  10. php留言板系统管理,php留言板系统 更加便于网站管理
  11. nbu mysql linux备份软件,NBU备份linux/aix/unix下的db2数据库配置
  12. aic值检验 p值_qRT-PCR差异分析及P值计算
  13. 数学文章 关于圆锥体积公式的证明
  14. 机器学习(Machine Learning)大家与资源
  15. 华为鸿蒙系统平板电脑,华为5G鸿蒙系统平板电脑正式入网,搭载八核处理器麒麟9000芯片...
  16. 举头望明月打计算机术语,有趣的中秋节灯谜
  17. 软件机器人失控:40%的bot程序都是恶意的
  18. Windows 11 笔记本电脑打开盖子无法立刻唤醒
  19. 灰色关联度分析(Grey Relation Analysis,GRA)原理详解
  20. 微信公众号菜单html5,Vue.js 实现微信公众号菜单编辑器功能(一)

热门文章

  1. iphone视频聊天代码实现
  2. 【CSS】文本对齐(左右均对整齐)及断行
  3. 阿里云ACP考试报名、复习、备考经验与心得分享
  4. 搬砖之余来一杯意式浓缩咖啡(Espresso高级用法)
  5. Arduino 开发 — Arduino 时间函数
  6. 0426 - 大家都喜欢独当一面
  7. 论软件测试工程师面试套路和潜台词,也许你们都遇到过
  8. java统计每个单词单词出现的次数_统计一篇英文中每个单词出现的次数
  9. codewar题目练习
  10. 高德地图Loca 数据可视化 API 2.0的用法