欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

基于最新版设备网络SDK集成海康摄像头之Java Demo调试运行教程

程序员文章站 2022-07-05 10:19:36
...

Java Demo运行截图:

由于涉及到空间隐私,部分位置会打码。
基于最新版设备网络SDK集成海康摄像头之Java Demo调试运行教程

设备网络SDK

设备网络SDK是基于硬件的SDK,是基于设备私有网络通信协议开发的,为后端设备(嵌入式网络硬盘录像机、视频服务器)、前端设备(网络摄像机、网络球机、IP模块)等产品服务的配套模块,用于远程访问和控制设备软件的二次开发。

设备网络SDK_Win64下载地址,这是官网地址哦~
顺便贴上 Hikvision AI Cloud 开放平台 如果开发过程中遇到问题,可以到这里查找解决办法。

基于最新版设备网络SDK集成海康摄像头之Java Demo调试运行教程
SDK下载完解压出来:

基于最新版设备网络SDK集成海康摄像头之Java Demo调试运行教程

导入工程

Demo示例里面的Java 开发示例导入到Eclipse里,因为这是个Eclipse项目。

如果习惯用IDEA开发项目的同志,不知道如何导入,可以按照下面的步骤导入:

  1. 进入到Package Explorer视图,右键空白的地方,点击Import按钮:

基于最新版设备网络SDK集成海康摄像头之Java Demo调试运行教程

2.找到General文件夹,选择其下面的Existing Projects into Workspace

基于最新版设备网络SDK集成海康摄像头之Java Demo调试运行教程

  1. 选择刚才解压路径里面的Java Demo根路径:

基于最新版设备网络SDK集成海康摄像头之Java Demo调试运行教程

  1. 至此,项目导入成功:

基于最新版设备网络SDK集成海康摄像头之Java Demo调试运行教程

ClientDemo调试

这个Demo的Main类是:ClientDemo.java,但是如果你直接运行它的话,会报错:

基于最新版设备网络SDK集成海康摄像头之Java Demo调试运行教程
报错代码:

Exception in thread "main" java.lang.UnsatisfiedLinkError: Unable to load library 'HCNetSDK': ÕҲ»µ½ָ¶¨
	at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:145)
	at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:188)
	at com.sun.jna.Library$Handler.<init>(Library.java:123)
	at com.sun.jna.Native.loadLibrary(Native.java:255)
	at com.sun.jna.Native.loadLibrary(Native.java:241)
	at ClientDemo.HCNetSDK.<clinit>(HCNetSDK.java:36)
	at ClientDemo.ClientDemo.<clinit>(ClientDemo.java:66)

报错提示,无法加载HCNetSDK这个库,导致HCNetSDK初始化失败。

如何解决这个错误呢?点开HCNetSDK.java ,在36行代码左右:

//SDK接口说明,HCNetSDK.dll
public interface HCNetSDK extends StdCallLibrary {

    HCNetSDK INSTANCE = (HCNetSDK) Native.loadLibrary("HCNetSDK",
            HCNetSDK.class);
            
            .....
           
}

上面代码并没有指定HCNetSDK.dll文件的路径,而且Native.loadLibrary()只能填绝对路径相对路径不起作用,先把dll文件放进工程里面,需要放多少dll文件呢?

点开工程根目录下的SDK库文件拷贝到该目录下.txt文件,看注意事项中的第二点,如果看到的是乱码,请将编码格式设置成GBK:

2. 请修改程序代码,其中HCNetSDK.java文件自己指定loadlibrary加载库的路径,【库文件】里的HCNetSDK.dll、HCCore.dll、PlayCtrl.dll、SuperRender.dll、HCNetSDKCom文件夹、ssleay32.dll、libeay32.dll、hlog.dll、hpr.dll、zlib1.dll、log4cxx.properties等文件均拷贝到该路径下。

注意啦!还需要一个AudioRender.dll文件,没有这个文件是无法进行预览的,就是看不到实时监控的画面,窗口空白无反应。
如果使用hCNetSDK.NET_DVR_GetLastError()获取错误码,错误码=64,是因为播放库(PlayCtrl.dll、SuperRender.dll、AudioRender.dll)没有拷贝加载到程序里面
基于最新版设备网络SDK集成海康摄像头之Java Demo调试运行教程

将上面提到的文件都放到MyDemo1工程里面,怎么放呢?

右键MyDemo1工程,选择New一个Source Folder,命名为dllLibrary:

基于最新版设备网络SDK集成海康摄像头之Java Demo调试运行教程
将SDK开发包【库文件】里的HCNetSDK.dll、HCCore.dll、PlayCtrl.dll、SuperRender.dll、AudioRender.dll、HCNetSDKCom文件夹、ssleay32.dll、libeay32.dll、hlog.dll、hpr.dll、zlib1.dll、log4cxx.properties等文件均要拷贝到该文件夹里:

基于最新版设备网络SDK集成海康摄像头之Java Demo调试运行教程

最后一步,指定HCNetSDK库的路径,在HCNetSDK.java文件上修改:

但是这里有两处地方需要修改:

  • HCNetSDK INSTANCE这里,改成下面代码:
HCNetSDK INSTANCE = (HCNetSDK) Native.loadLibrary(System.getProperty("user.dir") 
    		+ "\\dllLibrary\\HCNetSDK.dll", HCNetSDK.class);
  • PlayCtrl INSTANCE这里,改成下面代码:
PlayCtrl INSTANCE = (PlayCtrl) Native.loadLibrary(System.getProperty("user.dir")
    		+ "\\dllLibrary\\PlayCtrl.dll", PlayCtrl.class);

然后再运行ClientDemo.java文件,就不会再报错了,会出现下面这个窗口:

基于最新版设备网络SDK集成海康摄像头之Java Demo调试运行教程至此,HCNetSDK初始化成功!如果网络已经接入了海康网络摄像头DVR,可以填写这个摄像头的IP地址、用户名&密码、端口进行注册,注册成功后,可以选择通道进行预览。记得步骤是:先配置完摄像头数据->注册->选择通道->预览。

非常感谢你能看到最后,如果能够帮助到你是我的荣幸!