700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > java SpringBoot调用海康威视的dll去完成摄像头抓拍 以及打包部署问题

java SpringBoot调用海康威视的dll去完成摄像头抓拍 以及打包部署问题

时间:2019-01-02 17:08:46

相关推荐

java SpringBoot调用海康威视的dll去完成摄像头抓拍 以及打包部署问题

先说开发:

直接将他的64位包中的依赖放到项目根路径里面,然后将他java demo中的HCNetSDK.java复制到自己项目中。自己去他官网下载,或者用我的分享链接下载:

/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 (!_DVR_Init()){logger.error("海康SDK初始化失败!" + _DVR_GetLastError());}//注册设备_DVR_DEVICEINFO_V30 deviceInfo = new _DVR_DEVICEINFO_V30();//登录this.userId = _DVR_Login_V30(this.ip, this.port, this.userName, this.pwd, deviceInfo);if (this.userId.intValue() < 0){logger.error("摄像头用户登录失败!Err:" + _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());// 拍照_DVR_JPEGPARA strJpeg = new _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 = _DVR_CaptureJPEGPicture(this.userId, this.startChan, strJpeg, filePath);// 单帧数据捕获图片(抓拍成功返回图片路径,失败则不处理)if(!b){System.out.println("抓拍失败!" + " err: " + _DVR_GetLastError());return "";}else{System.out.println("抓拍成功");return filePath;}}/*** 退出dll注册*/public void logout(){_DVR_Logout(this.userId);_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(海康的库文件存放路径)。

完事;

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。