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