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 | 226 +++++++++++++++++++++++++++++++++++++++----------------- 1 files changed, 156 insertions(+), 70 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 97591be..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,20 +58,47 @@ 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 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) { @@ -84,6 +121,7 @@ } } //浜戝彴鎺у埗 + @SdkOperate @Override public boolean pTZControl(CameraCmd cmd) { try { @@ -116,7 +154,7 @@ if (factory.equals("1")) { result = hikClientService.setFocusPos(cmd); } else if (factory.equals("2")) { - + result = dhClientService.setFocusPos(cmd); } } } catch (Exception ex) { @@ -127,23 +165,23 @@ } //鑾峰彇鑱氱劍鍊� @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 @@ -187,8 +225,8 @@ } //鑾峰彇鐮佹祦鍘嬬缉鍙傛暟 @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); @@ -197,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 +255,7 @@ if (factory.equals("1")) { result = hikClientService.controlDefogcfg(cmd); } else if (factory.equals("2")) { - + //涓嶆敮鎸� } } } catch (Exception ex) { @@ -237,7 +275,7 @@ if (factory.equals("1")) { result = hikClientService.controlInfrarecfg(cmd); } else if (factory.equals("2")) { - + result = dhClientService.controlInfrarecfg(cmd); } } } catch (Exception ex) { @@ -297,7 +335,7 @@ if (factory.equals("1")) { result = hikClientService.controlPTHeateRpwron(cmd); } else if (factory.equals("2")) { - + //涓嶆敮鎸� } } } catch (Exception ex) { @@ -317,7 +355,7 @@ if (factory.equals("1")) { result = hikClientService.controlCameraDeicing(cmd); } else if (factory.equals("2")) { - + //涓嶆敮鎸� } } } catch (Exception ex) { @@ -325,46 +363,7 @@ } 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; - } //鑾峰彇浜戝彴閿佸畾淇℃伅 @Override public int getPTZLockInfo(CameraCmd cmd) { @@ -391,17 +390,23 @@ 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); } } @@ -451,6 +456,7 @@ return map; } //璁剧疆ptz + @SdkOperate @Override public boolean setPtz(CameraCmd cmd) { boolean result = false; @@ -471,6 +477,7 @@ return result; } //璁剧疆闆舵柟浣嶈 + @SdkOperate @Override public boolean setZeroPtz(CameraCmd cmd) { boolean result = false; @@ -491,6 +498,7 @@ return result; } //寮曞鎸囧悜鐩爣 + @SdkOperate @Override public boolean guideTargetPosition(CameraCmd cmd) { boolean result = false; @@ -510,6 +518,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) { @@ -552,13 +628,23 @@ } //鍋滄褰曞儚骞朵笉瀛樺叆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