一,开发前准备
1、去海康威视官网下载sdk包,附官网:https://www.hikvision.com/cn/index.html?jmode=j1
2、选择自己对应版本下载开发包
注意:
官方SDK区分32位和64位,如果用64位的SDK需要使用JDK64位的,不能使用32位JDK。32位的SDK同理,只能使用32位JDK的。
3、下载完成后,开发包结构
二,实践
使用工具 idea+jdk 1.8
1、运行Demo示例
- idea导入示例项目,并按说明导入dll
- 项目结构
- 如果项目报错,将项目中的 jna.jar 包添加到项目的Libraries中。
- 项目不报错后,可以打开 ClientDemo.java 中的main方法运行一下。如果能成功运行,祝贺你,或许你已经可以调通设备了。如果不能运行请往下继续阅读。
- 直接运行后后报错
提示无法加载库
这时不要惊慌,打开 HCNetSDK.java 文件
将
HCNetSDK INSTANCE = (HCNetSDK) Native.loadLibrary("HCNetSDK", HCNetSDK.class);
改为
HCNetSDK INSTANCE = (HCNetSDK) Native.loadLibrary("项目的绝对路径/HCNetSDK", HCNetSDK.class);
示例:
然后继续运行ClientDemo.java
中的main方法
可能会继续出现刚才一样错误,提示无法加载库
这时同样打开 HCNetSDK.java 文件
将
PlayCtrl INSTANCE = (PlayCtrl) Native.loadLibrary("PlayCtrl", PlayCtrl.class);
改为
PlayCtrl INSTANCE = (PlayCtrl) Native.loadLibrary("项目的绝对路径/PlayCtrl", PlayCtrl.class);
注意此处的PlayCtrl后面是否需要加dll后缀,我看下其它博客标明需要加dll后缀,不然会报错,我这里没有加dll后缀,运行也没有报错
示例
- 出现上面两种提示无法加载库的情况也可使用此方法
public class ClientDemoPATH {
public static String DLL_PATH;
static {
String path = (ClientDemo.class.getResource("/").getPath()).replaceAll("%20", " ").substring(1).replace("/", "\\");
try {
DLL_PATH = java.net.URLDecoder.decode(path, "utf-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
}
HCNetSDK INSTANCE = (HCNetSDK) Native.loadLibrary(ClientDemoPATH.DLL_PATH+"HCNetSDK",HCNetSDK.class);
PlayCtrl INSTANCE = (PlayCtrl) Native.loadLibrary(ClientDemoPATH.DLL_PATH+"PlayCtrl",PlayCtrl.class);
注意使用此方法需要将dll放在bin文件夹下
- 再次打开 ClientDemo.java 中的main方法运行一下