From d28dd084f26133bec3917c6268ac395888852b81 Mon Sep 17 00:00:00 2001 From: hsc <2189661656@qq.com> Date: Thu, 17 Jul 2025 13:33:35 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9B=BA=E5=AE=9AIP=E8=B7=AF=E5=BE=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/IvsCameraServiceImpl.java | 114 ++++++++++-------- 1 file changed, 66 insertions(+), 48 deletions(-) diff --git a/src/main/java/com/inspect/nvr/service/impl/IvsCameraServiceImpl.java b/src/main/java/com/inspect/nvr/service/impl/IvsCameraServiceImpl.java index ee83edc..eed0bc3 100644 --- a/src/main/java/com/inspect/nvr/service/impl/IvsCameraServiceImpl.java +++ b/src/main/java/com/inspect/nvr/service/impl/IvsCameraServiceImpl.java @@ -27,6 +27,7 @@ import java.io.InputStream; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; +import java.nio.file.StandardCopyOption; import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -51,14 +52,19 @@ public class IvsCameraServiceImpl implements IvsCameraService { @Override public PtzControlResult ptzControl(PtzControlParam param) { - Camera camera = new Camera(); + Camera camera = new Camera(); //赋值 - + camera.setIp("192.168.1.249"); + camera.setPort(8000); + camera.setUserName("admin"); + camera.setPassword("htjc2018"); + camera.setChannel(39); + camera.setPointNum(1); lUserID = (Integer) redisService.redisTemplate.opsForValue().get(camera.getIp() + "_userId"); - if (ObjectUtil.isEmpty(lUserID)){ - NvrInfo nvrInfo= new NvrInfo(); + if (ObjectUtil.isEmpty(lUserID)) { + NvrInfo nvrInfo = new NvrInfo(); nvrInfo.setNvrIp(camera.getIp()); nvrInfo.setServerPort(camera.getPort()); nvrInfo.setAccount(camera.getUserName()); @@ -89,8 +95,49 @@ public class IvsCameraServiceImpl implements IvsCameraService { @Override public SnapshotCommandResult platformSnapshot(String cameraCode, String domainCode, SnapshotCommandParam param) { - Camera camera = new Camera(); + SnapshotCommandResult snapshotCommandResult = + SnapshotCommandResult.builder() + .taskID("0123456789") + .build(); + return snapshotCommandResult; + } + + @Override + public SnapshotInfoListResult getSnapshotList(SnapshotInfoListParam param) { + SnapshotInfoListResult.SnapshotInfoList snapshotInfoList = new SnapshotInfoListResult.SnapshotInfoList(); + List infoList = new ArrayList<>(); + infoList.add( + SnapshotInfoListResult.SnapshotInfo.builder() + .pictureUrl("http://192.168.1.172:18539/downloadfile?filesessionid=HQ3HLF98QI6T645DSNVO4S066S00") + .cameraCode("01969538357008970118") + .build()); + snapshotInfoList.setTotal(1); + snapshotInfoList.setSnapshotInfos(infoList); + SnapshotInfoListResult snapshotInfoListResult = + SnapshotInfoListResult.builder() + .snapshotInfoList(snapshotInfoList) + .build(); + return snapshotInfoListResult; + } + + @Override + public ByteArrayInputStream downloadFile(String fileSessionId) { + if (testMode) { + try { + return new ByteArrayInputStream(loadDefaultImage()); + } catch (IOException e) { + throw new RuntimeException("测试环境生成错误图片失败", e); + } + } + + // 从nvr或者camera下载图片, 开发中 + Camera camera = new Camera(); //赋值 + camera.setIp("192.168.1.195"); + camera.setPort(8000); + camera.setUserName("admin"); + camera.setPassword("htjc2018"); + camera.setChannel(2); //从redis中获取lUserID(存在时间200) lUserID = (Integer) redisService.redisTemplate.opsForValue().get(camera.getIp() + "_userId"); @@ -114,65 +161,36 @@ public class IvsCameraServiceImpl implements IvsCameraService { // 2. 创建临时存储目录(系统临时目录更安全) Path tempDir = Paths.get(System.getProperty("java.io.tmpdir"), "hik_capture"); + // 生成唯一文件名(IP+时间戳) + String fileName = String.format("%s_%s.jpg", camera.getIp(), DateUtils.dateTimeNow("yyyyMMddHHmmss")); + Path tempImagePath = tempDir.resolve(fileName); try { if (!Files.exists(tempDir)) { Files.createDirectories(tempDir); } - // 3. 生成唯一文件名(IP+时间戳) - String fileName = String.format("%s_%s.jpg", camera.getIp(), DateUtils.dateTimeNow("yyyyMMddHHmmss")); - Path tempImagePath = tempDir.resolve(fileName); boolean b = hcNetSDK.NET_DVR_CaptureJPEGPicture(lUserID, camera.getChannel(), dvrJpegpara, tempImagePath.toString().getBytes("GBK")); if (!b) { - System.out.println("设置设备进行抓图失败,错误码:" + hcNetSDK.NET_DVR_GetLastError()); +// System.out.println("设置设备进行抓图失败,错误码:" + hcNetSDK.NET_DVR_GetLastError()); + log.error("设置设备进行抓图失败,错误码:" + hcNetSDK.NET_DVR_GetLastError()); } //图片流 InputStream inputStream = Files.newInputStream(tempImagePath); + byte[] bytes = StreamUtils.copyToByteArray(inputStream); + + + + // 确保删除临时文件 Files.deleteIfExists(tempImagePath); + return new ByteArrayInputStream(bytes); } catch (Exception e) { - log.error("抓图失败"+e.getMessage()); + log.error("抓图失败" + e.getMessage()); + return null; } - SnapshotCommandResult snapshotCommandResult = - SnapshotCommandResult.builder() - .taskID("0123456789") - .build(); - return snapshotCommandResult; - } - - @Override - public SnapshotInfoListResult getSnapshotList(SnapshotInfoListParam param) { - SnapshotInfoListResult.SnapshotInfoList snapshotInfoList = new SnapshotInfoListResult.SnapshotInfoList(); - List infoList = new ArrayList<>(); - infoList.add( - SnapshotInfoListResult.SnapshotInfo.builder() - .pictureUrl("http://192.168.1.172:18539/downloadfile?filesessionid=HQ3HLF98QI6T645DSNVO4S066S00") - .cameraCode("01969538357008970118") - .build()); - snapshotInfoList.setTotal(1); - snapshotInfoList.setSnapshotInfos(infoList); - SnapshotInfoListResult snapshotInfoListResult = - SnapshotInfoListResult.builder() - .snapshotInfoList(snapshotInfoList) - .build(); - return snapshotInfoListResult; - } - - @Override - public ByteArrayInputStream downloadFile(String fileSessionId) { - if (testMode) { - try { - return new ByteArrayInputStream(loadDefaultImage()); - } catch (IOException e) { - throw new RuntimeException("测试环境生成错误图片失败", e); - } - } - - // 从nvr或者camera下载图片, 开发中 - return null; } public byte[] loadDefaultImage() throws IOException { @@ -194,7 +212,7 @@ public class IvsCameraServiceImpl implements IvsCameraService { System.out.println(":设备登录成功!" + lUserID); // birdNvrMapper.updateNvrInfo(nvrInfo); // redisTemplate.opsForValue().set(nvrInfo.getNvrIp() + "_userId", lUserID); - redisService.setCacheObject(nvrInfo.getNvrIp() + "_userId", lUserID,200L, TimeUnit.SECONDS); + redisService.setCacheObject(nvrInfo.getNvrIp() + "_userId", lUserID, 200L, TimeUnit.SECONDS); //若果设备序列号为空时,即为第一次登陆,写入基础数据 if (nvrInfo.getNvrSerial() == null || nvrInfo.getNvrSerial().equals("")) { m_strDeviceInfo.read();