基于最新版设备网络SDK集成海康摄像头之Java Demo调试运行教程
Java Demo运行截图:
由于涉及到空间隐私,部分位置会打码。
设备网络SDK
设备网络SDK是基于硬件的SDK,是基于设备私有网络通信协议开发的,为后端设备(嵌入式网络硬盘录像机、视频服务器)、前端设备(网络摄像机、网络球机、IP模块)等产品服务的配套模块,用于远程访问和控制设备软件的二次开发。
设备网络SDK_Win64下载地址,这是官网地址哦~
顺便贴上 Hikvision AI Cloud 开放平台 如果开发过程中遇到问题,可以到这里查找解决办法。
SDK下载完解压出来:
导入工程
将Demo示例里面的Java 开发示例导入到Eclipse里,因为这是个Eclipse项目。
如果习惯用IDEA开发项目的同志,不知道如何导入,可以按照下面的步骤导入:
- 进入到Package Explorer视图,右键空白的地方,点击Import按钮:
2.找到General文件夹,选择其下面的Existing Projects into Workspace
- 选择刚才解压路径里面的Java Demo根路径:
- 至此,项目导入成功:
ClientDemo调试
这个Demo的Main类是:ClientDemo.java
,但是如果你直接运行它的话,会报错:
报错代码:
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)没有拷贝加载到程序里面。
将上面提到的文件都放到MyDemo1工程里面,怎么放呢?
右键MyDemo1工程,选择New一个Source Folder,命名为dllLibrary:
将SDK开发包【库文件】里的HCNetSDK.dll、HCCore.dll、PlayCtrl.dll、SuperRender.dll、AudioRender.dll、HCNetSDKCom文件夹、ssleay32.dll、libeay32.dll、hlog.dll、hpr.dll、zlib1.dll、log4cxx.properties等文件均要拷贝到该文件夹里:
最后一步,指定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
文件,就不会再报错了,会出现下面这个窗口:
至此,HCNetSDK初始化成功!如果网络已经接入了海康网络摄像头DVR,可以填写这个摄像头的IP地址、用户名&密码、端口进行注册,注册成功后,可以选择通道进行预览。记得步骤是:先配置完摄像头数据->注册->选择通道->预览。
非常感谢你能看到最后,如果能够帮助到你是我的荣幸!