海康威视网络硬盘摄像机对接java+springboot项目实例

        最近项目开发的过程中,遇到需要对接海康威视网络硬盘摄像机的需求,由于之前没有做过类似的案例,所以,刚开始,我不知道从何下手,现在我把我的项目实践经验与大家分享。

1、首先,我需要拿到海康威视网络硬盘摄像机设备,拿到设备后,我把硬盘装好,具体操作步骤,可以在网络上查询。

2、装好硬盘后,我接通电源,按照操作说明,初始化系统,这里需要连接一个显示器,设备相当于一个主机,初始化系统需要设置初始密码,这个密码后面可以修改。实际上,后面用到的地方不大。

3、设备开通电源后,需要连接网络,根据设备的网段进行设备,连接海康威视摄像头的时候,这里要注意,摄像头有自己的ip地址和用户名、密码,设备和摄像头都必须要在一个局域网环境下,才能访问。

4、配置好网络环境后,接下来就是需要进行摄像头预览操作了。首先,我选择的是谷歌浏览器,在地址栏输入ip地址,进入登录页面,这里需要输入的ip地址是摄像头的ip地址,用户名和密码也是摄像头的,登录成功,进入首页,结果发现问题来了,谷歌根本没法正常预览,于是我在网上下载了官网的海康威视web3.0的相关资料,里面有个类似于插件的执行文件,我于是进行了安装,结果发现,谷歌还是没法预览,我又打开IE浏览器,访问web3.0的demo,登录成功后,预览正常显示。可是,我开发的系统是一个桌面应用,并不是网页的,而且内核是谷歌,所以,这个demo对我来说,根本没有什么用,后来,我又想办法想在谷歌浏览器进行模拟,希望可以正常预览。

5、我本以为安装了官网的海康威视web3.0里面的插件,就可以了,可是谷歌还是没法预览。结果经过一番折腾,我在同事的电脑中看到他们在谷歌浏览器是可以正常预览的,于是,我终于找到原因,后来发现,谷歌的插件跟web3.0提供的插件是不一样的。于是,我链接外网,登录成功后,点击右上角菜单栏的插件下载,下载成功,放到内网环境后,谷歌终于预览成功。

到此,环境部署完成。

经过一番折腾后,我的任务还没结束,我最终的目的是需要将海康威视摄像头的预览功能集成到我的系统中。

根据需求和当前部署的情况来看,我首先觉得最简单的做法就是把海康威视web3.0集成到我的系统中,而集成的方式,则是把demo先放在跟项目的同一个目录,然后,在系统的网页中添加访问地址。通过iframe内嵌的方式当然是最简单的,这样,我们也就省了很多开发的时间。经过测试,页面内嵌成功。可以会遇到之前的问题,我们的系统内核是谷歌,页面虽然可以正常显示,但是登陆和预览功能,点击的时候没有任何反应,调试的时候发现webVideoCtrl的open等一些方法报错,提示无法找到,于是,我继续在网上疯狂的查找资料,可是,找了很多都没有用,跟我的业务场景都不一样。不过在官方的资料中明确提示了,Web 控件 V3.0 基于 ActiveX 和 NPAPI 开发,接口封装于 javascript 脚本,以 javascript 接口形式提供用户集成,支持网页上实现预览、回放、云台控制等功能。该控件开发包仅支持 B/S 网页开发,不适用于 C/S开发。运行环境,浏览器:
IE8~IE11、Chrome31+、Firefox35+,32 位浏览器
IE8~IE11、Chrome31~Chrome44、Firefox35~Firefox51,64 位浏览器

根据官方文档提示,我尝试下了谷歌44版本,结果发现,根本没有什么用,于是我陷入了两难的境地,如果选择使用web3.0的源码方式进行集成的话,可是我们系统的内核是谷歌,我在通过启动nginx的方式启动后,登录终于成功了,可是预览的时候明确提示,不支持websocket流进行预览。

在这种情况下,我只好放弃使用海康威视web3.0进行集成。另外就是海康威视摄像头在谷歌浏览器进行访问,通过ip访问,于是我想通过内嵌的方式,结果发现,内嵌后根本无法显示,后面经过查证才知道,它根本不允许内嵌。这样我们的系统就根本无法实现与它集成。

于是我继续在网上查询资料,后面发现我们是可以通过java的swing控件进行开发的,页面通过swing控件进行展示。

结论:

1、如果要使用web3.0开发的话,谷歌浏览器的版本有要求,但是画面清晰流畅

2、可以通过协议透传的方式实现集成,但是有个缺点是画面会卡顿,不是太流畅 ,还有摄像机的协议必须要设置成ONVIF协议,需要进入摄像机web管理页面手动开启

3、可以通过jave 的swing组件进行展示,缺点是会弹出一个java的应用窗口,服务必须独立,不然关闭窗口的时候会停掉服务

### 使用海康威视 ISUP SDK 在 Java对接摄像头 #### 准备工作 为了成功完成海康威视 ISUP SDK 的 Java 对接,需先准备好必要的环境和工具。这包括下载并安装官方提供的 SDK 文件包以及配置开发环境。具体来说,开发者需要关注 HCNetSDK.java 文件中的接口定义部分[^1]。 #### 配置开发环境 在开始编写代码之前,确保已正确设置 JDK 和 IDE(如 IntelliJ IDEA 或 Eclipse)。同时,在项目中引入海康威视提供的动态链接库 (DLL),这些 DLL 是通过 JNI(Java Native Interface)来桥接 C/C++ 编写的底层功能模块与上层 Java 应用程序之间的交互[^2]。 #### 初始化 SDK 并登录设备 以下是初始化 SDK 及连接至目标摄像机的核心逻辑: ```java import com.hikvision.netsdk.HCNetSDK; public class HikCameraDemo { public static void main(String[] args) { // 加载本地动态库文件路径 System.loadLibrary("HCNetSDK"); // 创建 HCNetSDK 实例对象 HCNetSDK hcNetSdkInstance = HCNetSDK.INSTANCE; // 设置回调函数处理实时数据流事件通知机制(可选) FRealDataCallBack fRealDataCallBack = new FRealDataCallBack() { @Override public void invoke(int lRealHandle, int dwDataType, byte[] pBuffer, long dwBufSize, Object pUser) { // 处理视频帧或其他类型的数据缓冲区内容... } }; // 登录网络型设备参数结构体填充过程省略... boolean loginResult = hcNetSdkInstance.NET_DVR_Login_V30( strIpAddr, nPortNo, strUserName, strPassword, byInitType, pstuDVRInfo, pstuRes); if (!loginResult){ System.out.println("Login failed with error code:" + hcNetSdkInstance.NET_DVR_GetLastError()); }else{ System.out.println("Successfully logged into camera."); // 开始预览或者执行其他操作命令流程待补充... } // 别忘了最后退出清理资源释放句柄哦~ } } ``` 上述代码片段展示了如何加载外部依赖库、实例化 `HCNetSDK` 类,并尝试使用指定 IP 地址、端口号以及其他认证凭证向远程主机发起身份验证请求^。 #### 数据采集与显示 一旦成功建立会话,则可以进一步调用诸如 NET_DVR_RealPlay 方法启动实况播放服务;亦或是利用 NET_DVR_StartRemoteConfig 接口上传/下载配置项等高级特性^。 #### 错误排查建议 如果遇到任何异常状况,请务必查阅返回值对应的错误码含义说明文档以便快速定位问题根源所在。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值