java SpringBoot调用海康威视的dll去完成摄像头抓拍,以及打包部署问题
先说开发:
直接将他的64位包中的依赖放到项目根路径里面,然后将他java demo中的HCNetSDK.java复制到自己项目中。自己去他官网下载,或者用我的分享链接下载:
https://download.csdn.net/download/wu__peng/13686259
(里面有依赖的jar包,海康威视的dll,还有HCNetSDK.java文件)
(里面有依赖的jar包,海康威视的dll,还有HCNetSDK.java文件)
(里面有依赖的jar包,海康威视的dll,还有HCNetSDK.java文件)
调用的话可以参考我的代码:
/*** @description: 抓拍**/
public class CameraManager {private static final String BASE_FILE_URL = "D:\\resource\\";private static Logger logger = LoggerFactory.getLogger(CameraManager.class);private static HCNetSDK sdk = HCNetSDK.INSTANCE;//用户登录ID,值为0,1,2...private NativeLong userId = new NativeLong(-1);// start channel numberprivate NativeLong startChan = new NativeLong(-1);private String ip;private short port;private String userName;private String pwd;/*** 设置对象登录信息* @param ip* @param port* @param username* @param pwd*/public void setLoginInfo(String ip, short port, String username, String pwd) {this.ip = ip;this.port = port;this.userName = username;this.pwd = pwd;}/*** 先设置对象登录信息,然后才能调用login方法*/private void login(){CheckDataUtils.isBlank(this.userName, "请先设置登录信息");//sdk初始化if (!sdk.NET_DVR_Init()){logger.error("海康SDK初始化失败!" + sdk.NET_DVR_GetLastError());}//注册设备HCNetSDK.NET_DVR_DEVICEINFO_V30 deviceInfo = new HCNetSDK.NET_DVR_DEVICEINFO_V30();//登录this.userId = sdk.NET_DVR_Login_V30(this.ip, this.port, this.userName, this.pwd, deviceInfo);if (this.userId.intValue() < 0){logger.error("摄像头用户登录失败!Err:" + sdk.NET_DVR_GetLastError());}this.startChan.setValue(deviceInfo.byStartChan);}/*** 抓拍*/public String takePic(String fileName) {if (this.userId.intValue() < 0 || startChan.intValue() < 0) {logger.info("执行海康摄像机登录,ip[{}],port[{}],username[{}].",this.ip, this.port, this.userName);this.login();}logger.info("准备拍照,userId:[{}],startChan:[{}]",this.userId.intValue(), this.startChan.intValue());// 拍照HCNetSDK.NET_DVR_JPEGPARA strJpeg = new HCNetSDK.NET_DVR_JPEGPARA();// 图像参数strJpeg.wPicQuality = 0;strJpeg.wPicSize = 2;// 文件保存操作(创建每日文件夹)String dateFolder = DateUtils.format(new Date(), "yyyyMMdd");String folderUrl = BASE_FILE_URL + dateFolder;File folder = new File(folderUrl);if (!folder.exists()) {folder.mkdirs();}// 文件全路径String filePath = folderUrl + "\\" + fileName + ".jpg";//尝试用NET_DVR_CaptureJPEGPicture_NEW方法,但不是报43就是JDK崩溃....boolean b = sdk.NET_DVR_CaptureJPEGPicture(this.userId, this.startChan, strJpeg, filePath);// 单帧数据捕获图片(抓拍成功返回图片路径,失败则不处理)if(!b){System.out.println("抓拍失败!" + " err: " + sdk.NET_DVR_GetLastError());return "";}else{System.out.println("抓拍成功");return filePath;}}/*** 退出dll注册*/public void logout(){sdk.NET_DVR_Logout(this.userId);sdk.NET_DVR_Cleanup();this.userId.setValue(-1);}
}
重点就这样了,基本就这样了,其他的自己操作吧。(PS:还有那个他自己的jar包也要导入到工程里面)
打包的话:
springboot jar包启动它找不到那些你的dll依赖,没法,你需要去设置jna路径,设置了他就知道了,启动命令例如:
java -jar -Djna.library.path=D:\resource\libs -Xms512m -Xmx1024m app.jar
设置jna路径,中间那个路径就是你的dll(海康的库文件存放路径)。
设置jna路径,中间那个路径就是你的dll(海康的库文件存放路径)。
设置jna路径,中间那个路径就是你的dll(海康的库文件存放路径)。
完事;
java SpringBoot调用海康威视的dll去完成摄像头抓拍,以及打包部署问题相关推荐
- Atitit.java jna 调用c c++ dll的原理与实践 总结 v2 q27
Atitit.java jna 调用c c++ dll的原理与实践 总结 v2 q27 1. Jna简单介绍1 2. Jna范例halo owrld1 3. Jna概念2 3.1. (1)需 ...
- java 调用c 的dll,java如何调用C的dll
java怎么调用C的dll 我做了1个java调用c++的dll 想做一个java调用C的dll就不知道怎么做了 在xx.c里 写 JNIEXPORT jint JNICALL Java_testdl ...
- java 项目加载dll文件,Java动态调用链接库dll文件
Java动态调用链接库dll文件 Java动态调用链接库dll文件 因为项目需要,用到了java调用dll文件中的方法.写成dll文件大多是用C语言弄成的,对于我这个纯粹干java的人员来说,着实让我 ...
- java开发调用海康威视摄像头的web端页面开发心得
最近在开发过程中 需要用到海康威视的摄像头 在web端展示 在各种百度之后 发现网上很难找到一个 简便,可靠的教程 在摸索着完成项目之后 ,决定写一篇攻略 造福有需求的小伙伴 言归正传 首先需 ...
- Linux系统下使用java语言调用海康威视SDK连接摄像头过程记录
1.准备工作 1.1. 设备型号 萤石多功能互联网摄像头 CS-C2C-3B2WFR 1.2. SDK下载 通过海康威视官网可以下载到最新的Linux下的SDK开发包,分为32位和64位,根据电脑情况 ...
- Java通过JNI调用C++动态链接库dll,并打在jar包内 ——JNA-JNI(一)
Java通过JNI调用C++动态链接库dll,并打在jar包内--JNA-JNI(一) 系列文章: Java通过JNI调用C++动态链接库dll,并打在jar包内 --JNA-JNI(一) Java使 ...
- java中调用matlab程序及相关问题
**在java中调用matlab程序,首先要将matlab程序打包成jar文件,才可以被java程序所调用. 打包时本人所用的各种工具: 1:myeclipse-bule 2:java-1.7 3:m ...
- Java笔记-JNI的基本使用(Java调用C++的dll)
目录 基本概念 过程演示 基本概念 JNI(Java Native Interface),这个是Java本地接口,可以调用Windows上的dll或者Linux上的so文件,当然要按照他的规范进行编写 ...
- 【开发者笔记】java 利用jna调用c#的dll
一.需求阐述: 如果我们的项目利用c#开发,到了开发后期需要和java组进行合作,其中有一部分业务逻辑利用c#已经code completed,那么我们可能会考虑用java来调用现成的c#dll实现需 ...
最新文章
- EXCEL 电子表格MID 返回值 不能用于计算的问题
- TCP/IP 四次断开
- 异步加载js文件的方法总结
- callee与caller
- 多个DIV排列时居中
- 40 个顶级 jQuery 图片、内容滑块和幻灯片
- Python打卡第四周
- 英语笔记:写作:Recreational activities
- spring boot打包问题,访问问题
- c# 中wpfexcel_VS2017下编写C#程序读写Excel文件
- Java实例---flappy-bird实例[最终版]
- Mac OSX上安装Python的方法
- ios xcode文件前缀_关于ios8:Xcode 6错误:“嵌入式二进制文件的包标识符未以父应用程序的包标识符为前缀。”...
- JavaScript实现DoublyLinkedList双链表的算法(附完整源码)
- linux安装阵列卡驱动程序,Linux系统下如何安装阵列卡驱动?
- PhotoShop将彩色图片修改为只有黑白线条
- Kettle的“增加序列”(自增字段)的使用
- 淘宝淘口令解密,解析,转换接口,API对接
- uniapp APP消息推送方案
- C语言基础——执行顺序