一,开发前准备
1、去海康威视官网下载sdk包,附官网:https://www.hikvision.com/cn/index.html?jmode=j1
![在这里插入图片描述](https://img-blog.csdnimg.cn/854d5d604f4b43448392528a448d385d.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NjU2NjA3OA==,size_16,color_FFFFFF,t_70)
2、选择自己对应版本下载开发包
注意:官方SDK区分32位和64位,如果用64位的SDK需要使用JDK64位的,不能使用32位JDK。32位的SDK同理,只能使用32位JDK的。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/5b22a6d2156b426d8741270305b291c0.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NjU2NjA3OA==,size_16,color_FFFFFF,t_70)
3、下载完成后,开发包结构
![在这里插入图片描述](https://img-blog.csdnimg.cn/bd8e043c1af342e5ba38820e8e32cdb2.png)
二,实践
使用工具 idea+jdk 1.8
1、运行Demo示例
idea导入示例项目,并按说明导入dll 项目结构 如果项目报错,将项目中的 jna.jar 包添加到项目的Libraries中。
![在这里插入图片描述](https://img-blog.csdnimg.cn/7709f2cd6bea4718aa417758f8e8f7e5.png)
项目不报错后,可以打开 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后缀,运行也没有报错 示例 ![在这里插入图片描述](https://img-blog.csdnimg.cn/5ccaa603a47c4558a7403b8793a540aa.png)
出现上面两种提示无法加载库的情况也可使用此方法
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方法运行一下
|