700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > java对接 布防 海康威视_java web整合海康威视录像机摄像SDK

java对接 布防 海康威视_java web整合海康威视录像机摄像SDK

时间:2020-11-05 11:44:02

相关推荐

java对接 布防 海康威视_java web整合海康威视录像机摄像SDK

java 项目demo目录结构

java web整合海康威视录像机摄像SDK实现拍照功能。

一、maven项目结构

【提示】主要的是HCNetSDK.java文件,其中都是海康java调用dll文件获取摄像头资源的接口。

(1)库文件配置

如果是linux环境

将库文件放在/usr/lib64/目录下,并设置可执行权限。

1.拍照

* 拍照功能

* [@param](/u/2303379) CameraInfoEntity cameraInfoEntity 设备初始化注册参数

* [@return](/u/556800) path 返回ftp文件路径

* [@throws](/throws) org.bytedeco.javacv.FrameRecorder.Exception

* [@throws](/throws) Exception

*/

public static String cameraTakePhoto(CameraInfoEntity cameraInfoEntity) throws Exception {

//初始化设备

long startTime = System.currentTimeMillis();

HCNetSDK sdk = HCNetSDK.INSTANCE;

if (!_DVR_Init()) {

throw new RuntimeException("设备初始化获取失败");

}

NET_DVR_DEVICEINFO_V30 devinfo = new NET_DVR_DEVICEINFO_V30();

//设备注册

NativeLong id = _DVR_Login_V30(cameraInfoEntity.getCameraIP(), (short) cameraInfoEntity.getCameraPort(), cameraInfoEntity.getUserName(), cameraInfoEntity.getUserPwd(), devinfo);

if (id.longValue() < 0) {

throw new RuntimeException("设备注册失败");

}

System.out.println("设备注册成功,用户id" + id);

NET_DVR_WORKSTATE_V30 devwork = new NET_DVR_WORKSTATE_V30();

if (!_DVR_GetDVRWorkState_V30(id, devwork)) {

// 返回Boolean值,判断是否获取设备能力

throw new RuntimeException("返回设备状态失败");

}

startTime = System.currentTimeMillis();

//截屏对象

NET_DVR_JPEGPARA jpeg = new NET_DVR_JPEGPARA();

// 设置图片的分辨率

jpeg.wPicSize = 2;

// 设置图片质量

jpeg.wPicQuality = 2;

IntByReference reference = new IntByReference();

ByteBuffer jpegBuffer = ByteBuffer.allocate(1024 * 1024);

SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");

// String fileNameString = "D:/CapturePicture/"+sdf.format(date)+ "_"+ cameraInfoEntity.getChannel() +".jpg";

String fileNameString = "cameracut_" + UUID.randomUUID().toString().replaceAll("-", "").toUpperCase() + sdf.format(new Date())+ "_"+ cameraInfoEntity.getChannel() +".jpg";

//声明文件

File file = new File(fileNameString);

boolean is = _DVR_CaptureJPEGPicture_NEW(id, cameraInfoEntity.getChannel(), jpeg, jpegBuffer, 1024 * 1024, reference);

System.out.println("拍照获取图片用时" + (System.currentTimeMillis() - startTime) + "ms]");

System.out.println("拍照文件大小" + reference.getValue());

BufferedOutputStream outputStream = null;

try {

outputStream = new BufferedOutputStream(new FileOutputStream(file));

outputStream.write(jpegBuffer.array(), 0, reference.getValue());

outputStream.flush();

} catch (Exception e) {

e.printStackTrace();

} finally {

if (outputStream != null) {

try {

outputStream.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

InputStream inputStream = new BufferedInputStream(new FileInputStream(file));

boolean upload = FTPUtils.ftpUpload("", 21, "eGpZyE38rG0ExkGv", "Kq8J6GrTt1ngJ0HKeJ", "/vtsp/imgs", file.getName(), inputStream);

System.out.println("图片上传ftp,状态===========>" + upload);

//删除图片文件

if(file.exists() && file.isFile()) {

file.deleteOnExit();

}

inputStream.close();

_DVR_Logout(id);

_DVR_Cleanup();

if (is) {

return "http://"+ "" + "/vtsp/imgs/" +file.getName();

} else {

return null;

}

}

在海康的HCNetSDK中加方法

boolean NET_DVR_CaptureJPEGPicture_NEW(NativeLong lUserID, NativeLong lChannel, NET_DVR_JPEGPARA lpJpegPara, ByteBuffer sJpegPicBuffer, int dwPicSize, IntByReference lpSizeReturned);

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