From aaa07634fa899b7346dfd61c6f70962adbc1dca5 Mon Sep 17 00:00:00 2001 From: ‘liusuyi’ <1951119284@qq.com> Date: 星期五, 20 十月 2023 08:55:02 +0800 Subject: [PATCH] 1. 增加聚焦值和获取接口。 2. 增加视频编码获取接口。 3. 流媒体通过编码自动切换是否转码。 --- ard-work/src/main/java/com/ruoyi/device/camera/service/impl/CameraSdkServiceImpl.java | 270 +++++++++++++++++++++++++++++++++--------------------- 1 files changed, 165 insertions(+), 105 deletions(-) diff --git a/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/CameraSdkServiceImpl.java b/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/CameraSdkServiceImpl.java index bc888e1..00fb04a 100644 --- a/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/CameraSdkServiceImpl.java +++ b/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/CameraSdkServiceImpl.java @@ -1,11 +1,16 @@ package com.ruoyi.device.camera.service.impl; +import com.ruoyi.common.annotation.SdkOperate; import com.ruoyi.common.constant.CacheConstants; import com.ruoyi.common.core.redis.RedisCache; +import com.ruoyi.common.utils.file.FileUtils; import com.ruoyi.device.camera.domain.ArdCameras; import com.ruoyi.device.camera.domain.CameraCmd; +import com.ruoyi.device.camera.service.IArdCamerasService; import com.ruoyi.device.camera.service.ICameraSdkService; import com.ruoyi.device.channel.domain.ArdChannel; +import com.ruoyi.device.dhsdk.lib.NetSDKLib; +import com.ruoyi.device.dhsdk.module.RealPlayModule; import com.ruoyi.device.dhsdk.service.IDhClientService; import com.ruoyi.device.hiksdk.common.GlobalVariable; import com.ruoyi.device.hiksdk.service.IHikClientService; @@ -13,10 +18,13 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; +import static com.ruoyi.device.dhsdk.lib.ToolKits.getErrorCodePrint; +import static com.ruoyi.device.dhsdk.module.LoginModule.netsdk; import static com.ruoyi.device.hiksdk.sdk.HCNetSDK.NET_DVR_CHECK_USER_STATUS; @@ -30,12 +38,14 @@ @Slf4j(topic = "SDK") public class CameraSdkServiceImpl implements ICameraSdkService { @Resource + private IArdCamerasService ardCamerasService; + @Resource IHikClientService hikClientService; @Resource IDhClientService dhClientService; @Resource RedisCache redisCache; - + //鍒濆鍖朣DK @Override public void initSDK() { //鍒濆鍖栧姞杞絪dk搴撴枃浠� @@ -48,27 +58,48 @@ dhClientService.loginAll();//鐧诲綍鍏ㄩ儴澶у崕鐩告満 } } - + //鐧诲綍 @Override - public void syncLogin(ArdCameras cameras) { - + public Boolean login(ArdCameras ardCamera) { + boolean result = false; + try { + if (ardCamera != null) { + String factory = ardCamera.getFactory(); + if (factory.equals("1")) { + hikClientService.syncLogin(ardCamera); + result=true; + } else if (factory.equals("2")) { + result = dhClientService.login(ardCamera); + } + } + } catch (Exception ex) { + log.error("鐧诲綍寮傚父锛�" + ex.getMessage()); + return false; + } + return result; } - - @Override - public void asyncLogin(ArdCameras cameras) { - - } - - @Override - public void loginAll() { - - } - + //娉ㄩ攢 @Override public boolean logout(String cameraId) { - return false; + boolean result = false; + try { + ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId); + if (ardCamera != null) { + String factory = ardCamera.getFactory(); + if (factory.equals("1")) { + result = hikClientService.logout(cameraId); + } else if (factory.equals("2")) { + result = dhClientService.logout(cameraId); + } + } + } catch (Exception ex) { + log.error("娉ㄩ攢寮傚父锛�" + ex.getMessage()); + return false; + } + return result; } + //鍦ㄧ嚎妫�娴� @Override public boolean isOnLine(CameraCmd cmd) { try { @@ -89,7 +120,8 @@ return false; } } - + //浜戝彴鎺у埗 + @SdkOperate @Override public boolean pTZControl(CameraCmd cmd) { try { @@ -110,7 +142,6 @@ return false; } } - //璁剧疆鑱氱劍鍊� @Override public boolean setFocusPos(CameraCmd cmd) { @@ -123,7 +154,7 @@ if (factory.equals("1")) { result = hikClientService.setFocusPos(cmd); } else if (factory.equals("2")) { - + result = dhClientService.setFocusPos(cmd); } } } catch (Exception ex) { @@ -132,29 +163,26 @@ } return result; } - - //鑾峰彇鑱氱劍鍊� @Override - public Map<String, Object> getFocusPos(CameraCmd cmd) { - Map<String, Object> map = new HashMap<>(); + public int getFocusPos(CameraCmd cmd) { + int result=0; try { String cameraId = cmd.getCameraId(); ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId); if (ardCamera != null) { String factory = ardCamera.getFactory(); if (factory.equals("1")) { - map = hikClientService.getFocusPos(cmd); + result = hikClientService.getFocusPos(cmd); } else if (factory.equals("2")) { - + result = dhClientService.getFocusPos(cmd); } } } catch (Exception ex) { log.error("鑾峰彇鑱氱劍鍊煎紓甯革細" + ex.getMessage()); } - return map; + return result; } - //璁剧疆棰勭疆浣� @Override public boolean setPreset(CameraCmd cmd) { @@ -167,7 +195,7 @@ if (factory.equals("1")) { result = hikClientService.setPreset(cmd); } else if (factory.equals("2")) { - + result = dhClientService.setPreset(cmd); } } } catch (Exception ex) { @@ -175,7 +203,6 @@ } return result; } - //璋冪敤棰勭疆浣� @Override public boolean gotoPreset(CameraCmd cmd) { @@ -188,7 +215,7 @@ if (factory.equals("1")) { result = hikClientService.gotoPreset(cmd); } else if (factory.equals("2")) { - + result = dhClientService.gotoPreset(cmd); } } } catch (Exception ex) { @@ -196,11 +223,10 @@ } return result; } - //鑾峰彇鐮佹祦鍘嬬缉鍙傛暟 @Override - public Map<String, String> getVideoCompressionCfg(CameraCmd cmd) { - Map<String, String> map = new HashMap<>(); + public Map<String, Object> getVideoCompressionCfg(CameraCmd cmd) { + Map<String, Object> map = new HashMap<>(); try { String cameraId = cmd.getCameraId(); ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId); @@ -209,7 +235,7 @@ if (factory.equals("1")) { map = hikClientService.getVideoCompressionCfg(cmd); } else if (factory.equals("2")) { - + map = dhClientService.getVideoCompressionCfg(cmd); } } } catch (Exception ex) { @@ -217,7 +243,6 @@ } return map; } - //閫忛浘寮�鍏� @Override public boolean controlDefogcfg(CameraCmd cmd) { @@ -230,7 +255,7 @@ if (factory.equals("1")) { result = hikClientService.controlDefogcfg(cmd); } else if (factory.equals("2")) { - + //涓嶆敮鎸� } } } catch (Exception ex) { @@ -238,7 +263,6 @@ } return result; } - //绾㈠寮�鍏� @Override public boolean controlInfrarecfg(CameraCmd cmd) { @@ -251,7 +275,7 @@ if (factory.equals("1")) { result = hikClientService.controlInfrarecfg(cmd); } else if (factory.equals("2")) { - + result = dhClientService.controlInfrarecfg(cmd); } } } catch (Exception ex) { @@ -259,8 +283,6 @@ } return result; } - - //鎵嬪姩/鑷姩鑱氱劍 @Override public boolean controlFocusMode(CameraCmd cmd) { @@ -273,7 +295,7 @@ if (factory.equals("1")) { result = hikClientService.controlFocusMode(cmd); } else if (factory.equals("2")) { - + result = dhClientService.controlFocusMode(cmd); } } } catch (Exception ex) { @@ -281,7 +303,6 @@ } return result; } - //鑾峰彇鑱氱劍妯″紡 @Override public String getFocusMode(CameraCmd cmd) { @@ -302,7 +323,6 @@ } return result; } - //浜戝彴鍔犵儹 @Override public boolean controlPTHeateRpwron(CameraCmd cmd) { @@ -315,7 +335,7 @@ if (factory.equals("1")) { result = hikClientService.controlPTHeateRpwron(cmd); } else if (factory.equals("2")) { - + //涓嶆敮鎸� } } } catch (Exception ex) { @@ -323,7 +343,6 @@ } return result; } - //闀滃ご鍔犵儹 @Override public boolean controlCameraDeicing(CameraCmd cmd) { @@ -336,54 +355,11 @@ if (factory.equals("1")) { result = hikClientService.controlCameraDeicing(cmd); } else if (factory.equals("2")) { - + //涓嶆敮鎸� } } } catch (Exception ex) { log.error("鎿嶆帶浜戝彴鍔犵儹寮傚父锛�" + ex.getMessage()); - } - return result; - } - - //鎿嶆帶閿佸畾 - @Override - public boolean controlLock(CameraCmd cmd) { - boolean result = false; - try { - String cameraId = cmd.getCameraId(); - ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId); - if (ardCamera != null) { - String factory = ardCamera.getFactory(); - if (factory.equals("1")) { - result = hikClientService.controlLock(cmd); - } else if (factory.equals("2")) { - - } - } - } catch (Exception ex) { - log.error("鎿嶆帶閿佸畾寮傚父锛�" + ex.getMessage()); - } - return result; - } - - - //璁剧疆瑙i攣 - @Override - public boolean controlUnLock(CameraCmd cmd) { - boolean result = false; - try { - String cameraId = cmd.getCameraId(); - ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId); - if (ardCamera != null) { - String factory = ardCamera.getFactory(); - if (factory.equals("1")) { - result = hikClientService.controlUnLock(cmd); - } else if (factory.equals("2")) { - - } - } - } catch (Exception ex) { - log.error("璁剧疆瑙i攣寮傚父锛�" + ex.getMessage()); } return result; } @@ -413,18 +389,24 @@ public String captureJPEGPicture(CameraCmd cmd) { return null; } - + //鎶撳浘 + @SdkOperate @Override public String picCutCate(CameraCmd cmd) { - String url = ""; + String url = ""; try { + //鑾峰彇鎽勫儚澶碔D String cameraId = cmd.getCameraId(); + //浠巖edis涓幏鍙栨憚鍍忓ご淇℃伅 ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId); if (ardCamera != null) { + //鑾峰彇鎽勫儚澶村伐鍘� String factory = ardCamera.getFactory(); if (factory.equals("1")) { + //璋冪敤hikClientService鐨刾icCutCate鏂规硶 url = hikClientService.picCutCate(cmd); } else if (factory.equals("2")) { + //璋冪敤dhClientService鐨刾icCutCate鏂规硶 url = dhClientService.picCutCate(cmd); } } @@ -453,7 +435,6 @@ } return map; } - //鑾峰彇ptz鑼冨洿 @Override public Map<String, Object> getPtzScope(CameraCmd cmd) { @@ -474,7 +455,8 @@ } return map; } - + //璁剧疆ptz + @SdkOperate @Override public boolean setPtz(CameraCmd cmd) { boolean result = false; @@ -494,7 +476,8 @@ } return result; } - + //璁剧疆闆舵柟浣嶈 + @SdkOperate @Override public boolean setZeroPtz(CameraCmd cmd) { boolean result = false; @@ -514,9 +497,8 @@ } return result; } - - //寮曞鎸囧悜鐩爣 + @SdkOperate @Override public boolean guideTargetPosition(CameraCmd cmd) { boolean result = false; @@ -537,6 +519,74 @@ return result; } + /** + * @鎻忚堪 鎿嶆帶閿佸畾 + * @鍙傛暟 [userId, channelNum] + * @杩斿洖鍊� boolean + * @鍒涘缓浜� 鍒樿嫃涔� + * @鍒涘缓鏃堕棿 2023/1/17 16:36 + * @淇敼浜哄拰鍏跺畠淇℃伅 0-瑙i攣 1-閿佸畾 + */ + @Override + @SdkOperate + public boolean controlLock(CameraCmd cmd) { + String cameraId = cmd.getCameraId();//鐢宠閿佺殑鐩告満 + ArdCameras ardCameras = ardCamerasService.selectArdCamerasById(cameraId); + Date now = new Date(); + now.setTime(now.getTime() + cmd.getExpired() * 1000); + ardCameras.setOperatorExpired(now);//璁剧疆褰撳墠杩囨湡鏃堕棿 + ardCamerasService.updateArdCameras(ardCameras); + return true; + } + + /** + * @鎻忚堪 鎿嶆帶瑙i攣 + * @鍙傛暟 [userId, channelNum] + * @杩斿洖鍊� boolean + * @鍒涘缓浜� 鍒樿嫃涔� + * @鍒涘缓鏃堕棿 2023/6/30 15:36 + * @淇敼浜哄拰鍏跺畠淇℃伅 + */ + @Override + public boolean controlUnLock(CameraCmd cmd) { + String cameraId = cmd.getCameraId();//鐢宠瑙i攣鐨勭浉鏈� + String operator = cmd.getOperator();//鐢宠鑰� + ArdCameras ardCameras = ardCamerasService.selectArdCamerasById(cameraId); + if (ardCameras.getOperatorId().equals(operator)) { + //濡傛灉瑙i攣鐩告満鐨勫綋鍓嶇敤鎴锋槸鐢宠鑰咃紝鍒欐竻绌鸿鐩告満鐨勮繃鏈熸椂闂� + ardCameras.setOperatorExpired(null); + int i = ardCamerasService.updateArdCameras(ardCameras); + if (i > 0) { + log.debug(cameraId + "--瑙i攣鎴愬姛"); + } + } + return true; + } + + + //褰曞儚 + @SdkOperate + @Override + public String record(CameraCmd cmd) { + String url = ""; + try { + String cameraId = cmd.getCameraId(); + ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId); + if (ardCamera != null) { + String factory = ardCamera.getFactory(); + if (factory.equals("1")) { + url = hikClientService.record(cmd); + } else if (factory.equals("2")) { + url = dhClientService.record(cmd); + } + } + } catch (Exception ex) { + log.error("褰曞儚寮傚父锛�" + ex.getMessage()); + } + return url; + } + + //寮�濮嬪綍鍍� @Override public boolean recordStart(CameraCmd cmd) { boolean result = false; @@ -556,7 +606,7 @@ } return result; } - + //鍋滄褰曞儚骞跺瓨鍏inio @Override public String recordStopToMinio(CameraCmd cmd) { String url = ""; @@ -576,15 +626,25 @@ } return url; } - + //鍋滄褰曞儚骞朵笉瀛樺叆minio @Override - public void recordStopNotToMinio(CameraCmd cmd) { - - } - - @Override - public List<ArdChannel> getCameraChannelList(ArdCameras camera) { - return null; + public boolean recordStopNotToMinio(CameraCmd cmd) { + boolean result = false; + try { + String cameraId = cmd.getCameraId(); + ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId); + if (ardCamera != null) { + String factory = ardCamera.getFactory(); + if (factory.equals("1")) { + result = hikClientService.recordStopNotToMinio(cmd); + } else if (factory.equals("2")) { + result = dhClientService.recordStopNotToMinio(cmd); + } + } + } catch (Exception ex) { + log.error("鍋滄褰曞儚寮傚父锛�" + ex.getMessage()); + } + return result; } //鑾峰彇鐩告満鏋惰鍙傛暟 -- Gitblit v1.9.3