From a919d7e0383efa211bb006f7ec22e5c9c36aa59e Mon Sep 17 00:00:00 2001 From: ‘liusuyi’ <1951119284@qq.com> Date: 星期六, 20 四月 2024 10:17:54 +0800 Subject: [PATCH] 优化本地录像 --- ard-work/src/main/java/com/ruoyi/utils/sdk/hiksdk/service/impl/HikvisionSDK.java | 39 ++++++++++--------- ard-work/src/main/java/com/ruoyi/device/camera/domain/CameraCmd.java | 2 + ard-work/src/main/java/com/ruoyi/device/camera/controller/CameraSdkController.java | 2 ard-work/src/main/java/com/ruoyi/utils/sdk/dhsdk/service/impl/DahuaSDK.java | 62 +++++++++++++++++------------- 4 files changed, 59 insertions(+), 46 deletions(-) diff --git a/ard-work/src/main/java/com/ruoyi/device/camera/controller/CameraSdkController.java b/ard-work/src/main/java/com/ruoyi/device/camera/controller/CameraSdkController.java index 1568ce7..8835bad 100644 --- a/ard-work/src/main/java/com/ruoyi/device/camera/controller/CameraSdkController.java +++ b/ard-work/src/main/java/com/ruoyi/device/camera/controller/CameraSdkController.java @@ -407,7 +407,7 @@ @ApiOperation("鏈湴褰曞儚鍋滄") @PostMapping("/localRecordStop") @Log(title = "鏈湴褰曞儚鍋滄", businessType = BusinessType.CONTROL) - @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo"}) + @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo", "cmd.lRealHandle"}) public @ResponseBody void localRecordStop(@RequestBody CameraCmd cmd, HttpServletResponse response) throws IOException { cmd.setOperator(SecurityUtils.getUserId()); diff --git a/ard-work/src/main/java/com/ruoyi/device/camera/domain/CameraCmd.java b/ard-work/src/main/java/com/ruoyi/device/camera/domain/CameraCmd.java index 0469bff..59b8e3a 100644 --- a/ard-work/src/main/java/com/ruoyi/device/camera/domain/CameraCmd.java +++ b/ard-work/src/main/java/com/ruoyi/device/camera/domain/CameraCmd.java @@ -52,4 +52,6 @@ String recordBucketName; /*褰曞儚鏂囦欢鍚嶇О*/ String recordObjectName; + + Long recordId; } diff --git a/ard-work/src/main/java/com/ruoyi/utils/sdk/dhsdk/service/impl/DahuaSDK.java b/ard-work/src/main/java/com/ruoyi/utils/sdk/dhsdk/service/impl/DahuaSDK.java index 85e0da4..fd31780 100644 --- a/ard-work/src/main/java/com/ruoyi/utils/sdk/dhsdk/service/impl/DahuaSDK.java +++ b/ard-work/src/main/java/com/ruoyi/utils/sdk/dhsdk/service/impl/DahuaSDK.java @@ -587,31 +587,31 @@ try { String cameraId = cmd.getCameraId(); Integer chanNo = cmd.getChanNo(); - String path = FileUtils.createFile("D:/LocalRecordTemp/" + cameraId + ".mp4"); + if (!GlobalVariable.loginMap.containsKey(cameraId)) { return AjaxResult.error("璁惧鏈櫥褰�"); } LLong loginId = (LLong) GlobalVariable.loginMap.get(cameraId); - LLong lRealHandle; - if (GlobalVariable.previewMap.containsKey(cameraId)) { - lRealHandle = new LLong(GlobalVariable.previewMap.get(cameraId)); - RealPlayModule.stopRealPlay(lRealHandle); - GlobalVariable.previewMap.remove(cameraId); - log.debug("鍋滄褰撳墠褰曞儚"); - } - lRealHandle = RealPlayModule.startRealPlay(loginId, chanNo - 1, path); + //if (GlobalVariable.previewMap.containsKey(cameraId)) { + // lRealHandle = new LLong(GlobalVariable.previewMap.get(cameraId)); + // RealPlayModule.stopRealPlay(lRealHandle); + // GlobalVariable.previewMap.remove(cameraId); + // log.debug("鍋滄褰撳墠褰曞儚"); + //} + String path = FileUtils.createFile("D:/LocalRecordTemp/" + cameraId + ".mp4"); + LLong lRealHandle = RealPlayModule.startRealPlay(loginId, chanNo - 1, path); if (lRealHandle.longValue() <= 0) { log.error("鍙栨祦澶辫触" + getErrorCodePrint()); } log.debug("鏈湴褰曞儚寮�濮嬪彇娴佹垚鍔�"); - GlobalVariable.previewMap.put(cameraId, lRealHandle.intValue()); - GlobalVariable.threadMap.put(cameraId, Thread.currentThread().getName()); + //GlobalVariable.previewMap.put(cameraId, lRealHandle.intValue()); + //GlobalVariable.threadMap.put(cameraId, Thread.currentThread().getName()); //if (!netsdk.CLIENT_SaveRealData(lRealHandle, path)) { // log.error("淇濆瓨瑙嗛鏂囦欢鍒颁复鏃舵枃浠跺す澶辫触 閿欒鐮佷负: " +getErrorCodePrint()); // return false; //} log.debug("鏈湴褰曞儚寮�濮�"); - return AjaxResult.success("鏈湴褰曞儚寮�濮�,褰曞儚ID:"+lRealHandle); + return AjaxResult.success("鏈湴褰曞儚寮�濮�",lRealHandle); } catch (Exception ex) { log.error("鏈湴褰曞儚寮�濮嬪紓甯�" + ex.getMessage()); return AjaxResult.error("鏈湴褰曞儚寮�濮嬪紓甯�" + ex.getMessage()); @@ -622,24 +622,32 @@ public AjaxResult localRecordStop(CameraCmd cmd) { try { String cameraId = cmd.getCameraId(); + LLong lRealHandle = new LLong(cmd.getRecordId()); if (!GlobalVariable.loginMap.containsKey(cameraId)) { return AjaxResult.error("璁惧鏈櫥褰�"); } - LLong lRealHandle; - if (GlobalVariable.previewMap.containsKey(cameraId)) { - lRealHandle = new LLong(GlobalVariable.previewMap.get(cameraId)); - RealPlayModule.stopRealPlay(lRealHandle); - GlobalVariable.previewMap.remove(cameraId); - log.debug("鏈湴褰曞儚鍋滄"); - String recordPath = FileUtils.createFile("D:/LocalRecordTemp/" + cameraId + ".mp4"); - byte[] imageBytes = Files.readAllBytes(Paths.get(recordPath)); - // OutputStream outputStream = response.getOutputStream(); - // outputStream.write(imageBytes); - return AjaxResult.success(imageBytes); - } - else { - return AjaxResult.error("璁惧鏈紑濮嬪綍鍍�"); - } + + RealPlayModule.stopRealPlay(lRealHandle); + log.debug("鏈湴褰曞儚鍋滄"); + String recordPath = FileUtils.createFile("D:/LocalRecordTemp/" + cameraId + ".mp4"); + byte[] imageBytes = Files.readAllBytes(Paths.get(recordPath)); + // OutputStream outputStream = response.getOutputStream(); + // outputStream.write(imageBytes); + return AjaxResult.success(imageBytes); + //if (GlobalVariable.previewMap.containsKey(cameraId)) { + // lRealHandle = new LLong(GlobalVariable.previewMap.get(cameraId)); + // RealPlayModule.stopRealPlay(lRealHandle); + // GlobalVariable.previewMap.remove(cameraId); + // log.debug("鏈湴褰曞儚鍋滄"); + // String recordPath = FileUtils.createFile("D:/LocalRecordTemp/" + cameraId + ".mp4"); + // byte[] imageBytes = Files.readAllBytes(Paths.get(recordPath)); + // // OutputStream outputStream = response.getOutputStream(); + // // outputStream.write(imageBytes); + // return AjaxResult.success(imageBytes); + //} + //else { + // return AjaxResult.error("璁惧鏈紑濮嬪綍鍍�"); + //} } catch (Exception ex) { log.error("鏈湴褰曞儚鍋滄寮傚父" + ex.getMessage()); return AjaxResult.error("鏈湴褰曞儚鍋滄寮傚父" + ex.getMessage()); diff --git a/ard-work/src/main/java/com/ruoyi/utils/sdk/hiksdk/service/impl/HikvisionSDK.java b/ard-work/src/main/java/com/ruoyi/utils/sdk/hiksdk/service/impl/HikvisionSDK.java index b8dcd9c..77f2a33 100644 --- a/ard-work/src/main/java/com/ruoyi/utils/sdk/hiksdk/service/impl/HikvisionSDK.java +++ b/ard-work/src/main/java/com/ruoyi/utils/sdk/hiksdk/service/impl/HikvisionSDK.java @@ -1523,7 +1523,7 @@ // 鎶撳浘鍒板唴瀛橈紝鍗曞抚鏁版嵁鎹曡幏骞朵繚瀛樻垚JPEG瀛樻斁鍦ㄦ寚瀹氱殑鍐呭瓨绌洪棿涓� boolean is = hCNetSDK.NET_DVR_CaptureJPEGPicture_NEW(userId, channelNum, jpeg, jpegBuffer, 1024 * 1024, a); //log.debug("-----------杩欓噷寮�濮嬪浘鐗囧瓨鍏ュ唴瀛�----------" + is); - // OutputStream outputStream = response.getOutputStream(); + // OutputStream outputStream = response.getOutputStream(); //outputStream.write(jpegBuffer.array()); //Base64.Encoder decoder = Base64.getEncoder(); // BASE64Encoder encoder = new BASE64Encoder(); @@ -1965,12 +1965,12 @@ previewinfo.bBlocked = 0;//0- 闈為樆濉炲彇娴侊紝1-闃诲鍙栨祦 previewinfo.byNPQMode = 0;//NPQ妯″紡锛�0-鐩磋繛妯″紡锛�1-杩囨祦濯掍綋妯″紡 previewinfo.write(); - if (GlobalVariable.previewMap.containsKey(cameraId)) { - Integer lRealHandle = GlobalVariable.previewMap.get(cameraId); - hCNetSDK.NET_DVR_StopRealPlay(lRealHandle); - GlobalVariable.previewMap.remove(cameraId); - log.debug("鍋滄褰撳墠褰曞儚"); - } + //if (GlobalVariable.previewMap.containsKey(cameraId)) { + // Integer lRealHandle = GlobalVariable.previewMap.get(cameraId); + // hCNetSDK.NET_DVR_StopRealPlay(lRealHandle); + // GlobalVariable.previewMap.remove(cameraId); + // log.debug("鍋滄褰撳墠褰曞儚"); + //} int lRealHandle = hCNetSDK.NET_DVR_RealPlay_V40(userId, previewinfo, null, null); if (lRealHandle == -1) { int code = hCNetSDK.NET_DVR_GetLastError(); @@ -1978,15 +1978,15 @@ return AjaxResult.error("鏈湴褰曞儚鍙栨祦澶辫触: errorCode:" + code + " errorInfo:" + SdkErrorCodeEnum.getDescByCode(code)); } log.debug("鏈湴褰曞儚鍙栨祦鎴愬姛"); - GlobalVariable.threadMap.put(cameraId, Thread.currentThread().getName()); - GlobalVariable.previewMap.put(cameraId, lRealHandle); - if (!hCNetSDK.NET_DVR_SaveRealData_V30(GlobalVariable.previewMap.get(cameraId), 2, path)) { + //GlobalVariable.threadMap.put(cameraId, Thread.currentThread().getName()); + //GlobalVariable.previewMap.put(cameraId, lRealHandle); + if (!hCNetSDK.NET_DVR_SaveRealData_V30(lRealHandle, 2, path)) { int code = hCNetSDK.NET_DVR_GetLastError(); log.error("淇濆瓨瑙嗛鏂囦欢鍒颁复鏃舵枃浠跺す澶辫触 閿欒鐮佷负: " + hCNetSDK.NET_DVR_GetLastError()); return AjaxResult.error("鏈湴褰曞儚鍙栨祦澶辫触: errorCode:" + code + " errorInfo:" + SdkErrorCodeEnum.getDescByCode(code)); } log.debug("鏈湴褰曞儚寮�濮�"); - return AjaxResult.success("褰曞儚寮�濮�,褰曞儚ID:" + lRealHandle); + return AjaxResult.success("褰曞儚寮�濮�", lRealHandle); } catch (Exception ex) { log.error("鏈湴褰曞儚寮�濮嬪紓甯�" + ex.getMessage()); return AjaxResult.error("鏈湴褰曞儚寮�濮嬪紓甯�" + ex.getMessage()); @@ -1999,7 +1999,8 @@ try { String cameraId = cmd.getCameraId(); Integer channelNum = cmd.getChanNo(); - String recordPath = FileUtils.createFile("D:/LocalRecordTemp/" + cameraId + ".mp4"); + Integer lRealHandle = cmd.getRecordId().intValue(); + if (!GlobalVariable.loginMap.containsKey(cameraId)) { return AjaxResult.error("璁惧鏈櫥褰�"); } @@ -2026,19 +2027,21 @@ previewinfo.byNPQMode = 0;//NPQ妯″紡锛�0-鐩磋繛妯″紡锛�1-杩囨祦濯掍綋妯″紡 previewinfo.write(); //endregion - if (GlobalVariable.previewMap.containsKey(cameraId)) { - Integer lRealHandle = GlobalVariable.previewMap.get(cameraId); - hCNetSDK.NET_DVR_StopRealPlay(lRealHandle); - GlobalVariable.previewMap.remove(cameraId); - } + //if (GlobalVariable.previewMap.containsKey(cameraId)) { + // Integer lRealHandle = GlobalVariable.previewMap.get(cameraId); + // hCNetSDK.NET_DVR_StopRealPlay(lRealHandle); + // GlobalVariable.previewMap.remove(cameraId); + //} + hCNetSDK.NET_DVR_StopRealPlay(lRealHandle); log.debug("鏈湴褰曞儚鍋滄"); + String recordPath = FileUtils.createFile("D:/LocalRecordTemp/" + cameraId + ".mp4"); byte[] recordBytes = Files.readAllBytes(Paths.get(recordPath)); //OutputStream outputStream = response.getOutputStream(); //outputStream.write(imageBytes); return AjaxResult.success(recordBytes); } catch (Exception ex) { log.error("鏈湴褰曞儚鍋滄寮傚父" + ex.getMessage()); - return AjaxResult.error("鏈湴褰曞儚鍋滄寮傚父" +ex.getMessage()); + return AjaxResult.error("鏈湴褰曞儚鍋滄寮傚父" + ex.getMessage()); } } } -- Gitblit v1.9.3