项目总结25:海康威视SDK-Java二次开发-客流量分析

本文介绍了使用海康威视SDK进行Java二次开发,实现客流量分析的过程。开发者面临的问题包括C++ SDK与Java对接、Swing应用与Web项目的集成、文档与示例版本不一致等。解决方案涉及加载库文件、修改HCNetSDK加载路径、实现数据抓取和回调函数。在打包项目时需避免测试阶段导致的HCNetSDK加载问题,并注意到不同JDK版本可能影响DLL加载。
摘要由CSDN通过智能技术生成

项目总结25:海康威视SDK-Java二次开发-客流量分析

前言

  本来一个很简单的SDK接口对接,折腾了好久;总结下原因有:

  1. 海康的SDK底层使用C++写的,我不熟悉C++;
  2. 海康Java源码示例写的是一个Swing桌面应用,我需要的是嵌入到web项目;
  3. 海康《设备网络SDK使用手册》中的示例是用C++写的;并且会出现使用手册和Java源码示例版本不匹配的情况(用手册版本高于Java源码示例版)  

我的需求

  1. 统计一个出入口的实时进出客流量;即将摄像头产生的数据 抓取出来保存到业务数据库
  2. SDK版本:6.0.2.35

准备工作

  1. 海康摄像头iDS-2CD681XYZUV-ABD/C;并已经现场安装成功;
  2. 海康的SDK,下载地址(win64):https://www.hikvision.com/cn/download_more_570.html;后面用到的全部文档和参考源码全部在SDK文档中

代码处理

  1. 将SDK开发包【库文件】里的HCNetSDK.dll、HCCore.dll、PlayCtrl.dll、SuperRender.dll、AudioRender.dll、HCNetSDKCom文件夹、ssleay32.dll、libeay32.dll文件均要加载到程序里面,【HCNetSDKCom文件夹】(包含里面的功能组件dll库文件)需要和HCNetSDK.dll、HCCore.dll一起加载,放在同一个目录下(我的事springboot项目,放在resources目录下),且HCNetSDKCom文件夹名不能修改。
  2. 将路径:Demo示例\4- Java 开发示例\2-报警布防监听\AlarmJavaDemo\src\alarmjavademo下的HCNetSDK类植入到项目中;
  3. 修改HCNetSDK类中的HCNetSDK加载的路径,否则会报无法加载HCNetSDK.dll错误;
        HCNetSDK INSTANCE = (HCNetSDK) Native.loadLibrary("HCNetSDK",
                HCNetSDK.class);
    
    
    改成
    
        String path=(HCNetSDK.class.getResource("/").getPath()).replaceAll("%20", " ").substring(1).replace("/", "\\")+"HCNetSDK.dll";
        HCNetSDK INSTANCE = (HCNetSDK) Native.loadLibrary(path,
                HCNetSDK.class); 
  4. 写MemberFlowUploadService类,实现数据的抓取(见业务源码1);代码逻辑说明,可参考《设备网络SDK使用手册》-编程导引-客流量功模块的示例说明
  5. 写MemberFlowUPloadCallBackImpl类,即回调函数(见业务源码2);回调函数的实现,我参考书hideSDK中的Demo示例\4- Java 开发示例\2-报警布防监听\AlarmJavaDemo\src\alarmjavademo下的AlarmJavaDemoView类
  6. 控制台结果输出    
进入回调了
sAlarmType---》lCommand=4355:客流量统计,进入人数:78,离开人数:83, byMode:0, dwRelativeTime:1298991096, dwAbsTime:1298991096
进入回调了
sAlarmType---》lCommand=4355:客流量统计,进入人数:0,离开人数:1, byMode:1, tmStart:20190522163123,tmEnd :20190522163200
进入回调了
sAlarmType---》lCommand=4355:客流量统计,进入人数:79,离开人数:83, byMode:0, dwRelativeTime:1298991115, dwAbsTime:1298991115  

 

源码分析

源码1:MemberFlowUploadService类

package com.hs.api.service.haikang.meberflow;

import org.springframework.stereotype.Service;
import java.util.Timer;
import java.util.TimerTask;


@Service
public class MemberFlowUploadService{


    static HCNetSDK hCNetSDK = HCNetSDK.INSTANCE;
    static HCNetSDK.NET_DVR_USER_LOGIN_INFO m_strLoginInfo = 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值