From bd8cdb3244d058ad062610c8dc914374b52dd1e6 Mon Sep 17 00:00:00 2001
From: liusuyi <13324259@qq.com>
Date: 星期一, 23 十月 2023 20:33:37 +0800
Subject: [PATCH] 增加redis和流媒体服务外部程序 增加流媒体日志

---
 ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java |  553 ++++++++++++++++++++++++++++---------------------------
 1 files changed, 282 insertions(+), 271 deletions(-)

diff --git a/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java b/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java
index 4fb1c27..9ebe065 100644
--- a/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java
@@ -5,14 +5,16 @@
 import com.ruoyi.common.annotation.SdkOperate;
 import com.ruoyi.common.utils.file.FileUtils;
 import com.ruoyi.common.utils.file.MimeTypeUtils;
-import com.ruoyi.common.utils.spring.SpringUtils;
 import com.ruoyi.common.utils.uuid.IdUtils;
 import com.ruoyi.device.camera.domain.CameraCmd;
 import com.ruoyi.device.camera.service.IArdCamerasService;
 import com.ruoyi.device.channel.domain.ArdChannel;
 import com.ruoyi.device.channel.service.IArdChannelService;
+import com.ruoyi.device.dhsdk.lib.LibraryLoad;
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
 import com.ruoyi.device.hiksdk.common.GlobalVariable;
 import com.ruoyi.device.camera.domain.ArdCameras;
+import com.ruoyi.device.hiksdk.sdk.ExceptionCallBack;
 import com.ruoyi.media.domain.Vtdu;
 import com.ruoyi.media.service.IVtduService;
 import com.ruoyi.utils.gis.GisUtil;
@@ -26,7 +28,7 @@
 import com.sun.jna.Pointer;
 import com.sun.jna.ptr.IntByReference;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Value;
+import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 
 import java.util.Base64;
@@ -38,6 +40,7 @@
 import java.util.*;
 import java.util.concurrent.PriorityBlockingQueue;
 
+import static com.ruoyi.device.hiksdk.common.GlobalVariable.loginCameraMap;
 import static com.ruoyi.device.hiksdk.sdk.HCNetSDK.*;
 
 /**
@@ -58,50 +61,10 @@
     @Resource
     private IVtduService vtduService;
 
-    private static HCNetSDK hCNetSDK;
+    public static HCNetSDK hCNetSDK = HCNetSDK.hCNetSDK;
+    private static FExceptionCallBack fExceptionCallBack;//寮傚父鍥炶皟
 
-    @Override
-    public void loadHCNetSDKLib() {
-        try {
-            log.debug("寮�濮嬪姞杞絪dk搴撴枃浠惰矾寰�");
-            if (Platform.isWindows()) {
-                String WIN_PATH = System.getProperty("user.dir") + File.separator + "lib\\hikDll\\HCNetSDK.dll";
-                log.debug("褰撳墠Windows骞冲彴鐨剆dk搴撹矾寰勶細" + WIN_PATH);
-                hCNetSDK = (HCNetSDK) Native.loadLibrary(WIN_PATH, HCNetSDK.class);
-            } else {
-                log.debug("Linux骞冲彴");
-                String LINUX_PATH = System.getProperty("user.dir") + File.separator + "hiklib" + File.separator + "libhcnetsdk.so";
-                log.debug("褰撳墠Linux骞冲彴鐨剆dk搴撹矾寰勶細" + LINUX_PATH);
-                hCNetSDK = (HCNetSDK) Native.loadLibrary(LINUX_PATH, HCNetSDK.class);
 
-                //璁剧疆HCNetSDKCom缁勪欢搴撴墍鍦ㄨ矾寰�
-                //libhcnetsdk.so
-                String strPathCom = "/home/hiklib";
-                NET_DVR_LOCAL_SDK_PATH struComPath = new NET_DVR_LOCAL_SDK_PATH();
-                System.arraycopy(strPathCom.getBytes(), 0, struComPath.sPath, 0, strPathCom.length());
-                struComPath.write();
-                hCNetSDK.NET_DVR_SetSDKInitCfg(2, struComPath.getPointer());
-
-                //璁剧疆libcrypto.so鎵�鍦ㄨ矾寰�
-                BYTE_ARRAY ptrByteArrayCrypto = new BYTE_ARRAY(256);
-                String strPathCrypto = "/home/hiklib/libcrypto.so.1.1";
-                System.arraycopy(strPathCrypto.getBytes(), 0, ptrByteArrayCrypto.byValue, 0, strPathCrypto.length());
-                ptrByteArrayCrypto.write();
-                hCNetSDK.NET_DVR_SetSDKInitCfg(3, ptrByteArrayCrypto.getPointer());
-
-                //璁剧疆libssl.so鎵�鍦ㄨ矾寰�
-                BYTE_ARRAY ptrByteArraySsl = new BYTE_ARRAY(256);
-                String strPathSsl = "/home/hiklib/libssl.so.1.1";
-                System.arraycopy(strPathSsl.getBytes(), 0, ptrByteArraySsl.byValue, 0, strPathSsl.length());
-                ptrByteArraySsl.write();
-                hCNetSDK.NET_DVR_SetSDKInitCfg(4, ptrByteArraySsl.getPointer());
-            }
-        } catch (Exception ex) {
-            log.error("鍔犺浇搴撴枃浠跺紓甯革細" + ex.getMessage());
-        }
-    }
-
-    @Override
     /**
      * @鎻忚堪 娉ㄥ唽鐧诲綍 鍙敮鎸佸悓姝ョ櫥闄嗭紝涓斿畼鏂逛笉寤鸿鐩存帴鍦ㄦ鎺ュ彛涓嬪啓鑰楁椂鎿嶄綔
      * @鍙傛暟 [dvrLogin]
@@ -110,103 +73,118 @@
      * @鍒涘缓鏃堕棿 2023/1/17 16:12
      * @淇敼浜哄拰鍏跺畠淇℃伅
      */
-    public void syncLogin(ArdCameras camera) {
-        // 鍒濆鍖�
-        if (!hCNetSDK.NET_DVR_Init()) {
-            log.error("SDK鍒濆鍖栧け璐�");
-        }
-        //鎵撳嵃娴峰悍sdk鏃ュ織
-        if (Platform.isWindows()) {
-            String WIN_PATH = System.getProperty("user.dir") + File.separator + "ardLog" + File.separator + "logs" + File.separator;
-            hCNetSDK.NET_DVR_SetLogToFile(3, WIN_PATH, true);
-        } else {
-            hCNetSDK.NET_DVR_SetLogToFile(3, "/home/ardLog/hiklog", true);
-        }
-        String m_sDeviceIP = camera.getIp();
-        String m_sUsername = camera.getUsername();
-        String m_sPassword = camera.getPassword();
-        short m_sPort = camera.getPort().shortValue();
-        //璁剧疆杩炴帴鏃堕棿涓庨噸杩炴椂闂�
-        hCNetSDK.NET_DVR_SetConnectTime(2000, 1);
-        hCNetSDK.NET_DVR_SetReconnect(100000, true);
-        //璁惧淇℃伅, 杈撳嚭鍙傛暟
-        HCNetSDK.NET_DVR_DEVICEINFO_V40 m_strDeviceInfo = new HCNetSDK.NET_DVR_DEVICEINFO_V40();
-        HCNetSDK.NET_DVR_USER_LOGIN_INFO m_strLoginInfo = new HCNetSDK.NET_DVR_USER_LOGIN_INFO();
-
-        // 娉ㄥ唽璁惧-鐧诲綍鍙傛暟锛屽寘鎷澶囧湴鍧�銆佺櫥褰曠敤鎴枫�佸瘑鐮佺瓑
-        m_strLoginInfo.sDeviceAddress = new byte[HCNetSDK.NET_DVR_DEV_ADDRESS_MAX_LEN];
-        System.arraycopy(m_sDeviceIP.getBytes(), 0, m_strLoginInfo.sDeviceAddress, 0, m_sDeviceIP.length());
-        m_strLoginInfo.sUserName = new byte[HCNetSDK.NET_DVR_LOGIN_USERNAME_MAX_LEN];
-        System.arraycopy(m_sUsername.getBytes(), 0, m_strLoginInfo.sUserName, 0, m_sUsername.length());
-        m_strLoginInfo.sPassword = new byte[HCNetSDK.NET_DVR_LOGIN_PASSWD_MAX_LEN];
-        System.arraycopy(m_sPassword.getBytes(), 0, m_strLoginInfo.sPassword, 0, m_sPassword.length());
-        m_strLoginInfo.wPort = m_sPort;
-        m_strLoginInfo.byVerifyMode = 0;
-        m_strLoginInfo.byLoginMode = 0;
-        //鏄惁寮傛鐧诲綍锛�0- 鍚︼紝1- 鏄�  windowsSDK閲屾槸true鍜宖alse
-        m_strLoginInfo.bUseAsynLogin = false;
-        m_strLoginInfo.write();
-        //鍚屾鐧诲綍
-        int lUserID = hCNetSDK.NET_DVR_Login_V40(m_strLoginInfo, m_strDeviceInfo);
-        if (lUserID < 0) {
-            int errorCode = hCNetSDK.NET_DVR_GetLastError();
-            log.error("鐧诲綍寮傚父锛�" + errorCode);
-
-            log.debug(camera.getIp() + ":" + camera.getPort() + "鐧诲綍澶辫触");
-            camera.setChanNum(0);
-            camera.setLoginId(-1);
-            camera.setState("0");
-        } else {
-
-            if (GlobalVariable.loginMap.containsKey(camera.getId())) {
-                GlobalVariable.loginMap.remove(camera.getId());
+    @Override
+    public void login(ArdCameras camera) {
+        try {
+            // 鍒濆鍖�
+            if (!hCNetSDK.NET_DVR_Init()) {
+                log.error("SDK鍒濆鍖栧け璐�");
             }
-            //鍒犻櫎绠$悊閫氶亾
-            ardChannelService.deleteArdChannelByDeviceId(camera.getId());
-            GlobalVariable.loginMap.put(camera.getId(), lUserID);
-            log.debug(camera.getIp() + ":" + camera.getPort() + "鐧诲綍鎴愬姛");
+            //鎵撳嵃娴峰悍sdk鏃ュ織
+            if (Platform.isWindows()) {
+                String WIN_PATH = System.getProperty("user.dir") + File.separator + "ardLog" + File.separator + "logs" + File.separator;
+                hCNetSDK.NET_DVR_SetLogToFile(3, WIN_PATH, true);
+            } else {
+                hCNetSDK.NET_DVR_SetLogToFile(3, "/home/ardLog/hiklog", true);
+            }
+            String m_sDeviceIP = camera.getIp();
+            String m_sUsername = camera.getUsername();
+            String m_sPassword = camera.getPassword();
+            short m_sPort = camera.getPort().shortValue();
+            //璁剧疆杩炴帴鏃堕棿涓庨噸杩炴椂闂�
+            hCNetSDK.NET_DVR_SetConnectTime(2000, 1);
+            hCNetSDK.NET_DVR_SetReconnect(5000, true);
+            //璁惧淇℃伅, 杈撳嚭鍙傛暟
+            HCNetSDK.NET_DVR_DEVICEINFO_V40 m_strDeviceInfo = new HCNetSDK.NET_DVR_DEVICEINFO_V40();
+            HCNetSDK.NET_DVR_USER_LOGIN_INFO m_strLoginInfo = new HCNetSDK.NET_DVR_USER_LOGIN_INFO();
 
-            camera.setLoginId(lUserID);
-            camera.setState("1");
-            camera.setChanNum((int) m_strDeviceInfo.struDeviceV30.byChanNum);
-            camera.setStartDChan((int) m_strDeviceInfo.struDeviceV30.byStartDChan);
-            //鑾峰彇鏈�鏂伴�氶亾
-            List<ArdChannel> cameraChannelList = getCameraChannelList(camera);
-            if (cameraChannelList.size() > 0) {
-                for (ArdChannel channel : cameraChannelList) {
-                    channel.setId(IdUtils.simpleUUID());
-                    ardChannelService.insertArdChannel(channel);
+            // 娉ㄥ唽璁惧-鐧诲綍鍙傛暟锛屽寘鎷澶囧湴鍧�銆佺櫥褰曠敤鎴枫�佸瘑鐮佺瓑
+            m_strLoginInfo.sDeviceAddress = new byte[HCNetSDK.NET_DVR_DEV_ADDRESS_MAX_LEN];
+            System.arraycopy(m_sDeviceIP.getBytes(), 0, m_strLoginInfo.sDeviceAddress, 0, m_sDeviceIP.length());
+            m_strLoginInfo.sUserName = new byte[HCNetSDK.NET_DVR_LOGIN_USERNAME_MAX_LEN];
+            System.arraycopy(m_sUsername.getBytes(), 0, m_strLoginInfo.sUserName, 0, m_sUsername.length());
+            m_strLoginInfo.sPassword = new byte[HCNetSDK.NET_DVR_LOGIN_PASSWD_MAX_LEN];
+            System.arraycopy(m_sPassword.getBytes(), 0, m_strLoginInfo.sPassword, 0, m_sPassword.length());
+            m_strLoginInfo.wPort = m_sPort;
+            m_strLoginInfo.byVerifyMode = 0;
+            m_strLoginInfo.byLoginMode = 0;
+            //鏄惁寮傛鐧诲綍锛�0- 鍚︼紝1- 鏄�  windowsSDK閲屾槸true鍜宖alse
+            m_strLoginInfo.bUseAsynLogin = false;
+            m_strLoginInfo.write();
+            //鍚屾鐧诲綍
+            int lUserID = hCNetSDK.NET_DVR_Login_V40(m_strLoginInfo, m_strDeviceInfo);
+            if (lUserID < 0) {
+                int errorCode = hCNetSDK.NET_DVR_GetLastError();
+                log.debug(camera.getIp() + ":" + camera.getPort() + "鐧诲綍澶辫触,閿欒鐮侊細" + errorCode);
+                camera.setChanNum(0);
+                camera.setLoginId(-1);
+                camera.setState("0");
+            } else {
+                if (fExceptionCallBack == null) {
+                    fExceptionCallBack = new ExceptionCallBack();//寮傚父鍥炶皟
+                    //璁剧疆寮傚父鍥炶皟鍑芥暟(鍙湪鍥炶皟鍑芥暟涓幏鍙栬澶囦笂涓嬬嚎鐘舵�佺瓑)
+                    if (!hCNetSDK.NET_DVR_SetExceptionCallBack_V30(0, 0, fExceptionCallBack, null)) {
+                        log.info("Set fExceptionCallBack function fail");
+                        return;
+                    } else {
+                        log.info("Set fExceptionCallBack function successfully!");
+                    }
                 }
-                //娣诲姞鍒版祦濯掍綋
-                for (ArdChannel channel : cameraChannelList) {
-                    String name = camera.getId() + "_" + channel.getChanNo();
-                    String rtspSource = "rtsp://" + camera.getUsername() + ":" + camera.getPassword() + "@" + camera.getIp() + ":" + camera.getRtspPort() + "/h264/ch" + channel.getChanNo() + "/main/av_stream";
-                    Vtdu vtdu = vtduService.selectVtduByName(name);
-                    if (vtdu == null) {
+
+                if (GlobalVariable.loginMap.containsKey(camera.getId())) {
+                    GlobalVariable.loginMap.remove(camera.getId());
+                }
+                //鍒犻櫎绠$悊閫氶亾
+                ardChannelService.deleteArdChannelByDeviceId(camera.getId());
+                GlobalVariable.loginMap.put(camera.getId(), lUserID);
+                GlobalVariable.loginCameraMap.put(lUserID, camera);
+
+                log.debug("Login Success [ " + camera.getIp() + ":" + camera.getPort() + " ]");
+                camera.setLoginId(lUserID);
+                camera.setState("1");
+                camera.setChanNum((int) m_strDeviceInfo.struDeviceV30.byChanNum);
+                camera.setStartDChan((int) m_strDeviceInfo.struDeviceV30.byStartDChan);
+                //鑾峰彇鏈�鏂伴�氶亾
+                List<ArdChannel> cameraChannelList = getCameraChannelList(camera);
+                if (cameraChannelList.size() > 0) {
+                    for (ArdChannel channel : cameraChannelList) {
+                        channel.setId(IdUtils.simpleUUID());
+                        ardChannelService.insertArdChannel(channel);
+                    }
+                    //娣诲姞鍒版祦濯掍綋
+                    for (ArdChannel channel : cameraChannelList) {
+                        String name = camera.getId() + "_" + channel.getChanNo();
+                        String rtspSource = "rtsp://" + camera.getUsername() + ":" + camera.getPassword() + "@" + camera.getIp() + ":" + camera.getRtspPort() + "/h264/ch" + channel.getChanNo() + "/main/av_stream";
+                        Vtdu vtdu = vtduService.selectVtduByName(name);
+                        if (vtdu != null) {
+                            vtduService.deleteVtduByName(name);
+                        }
                         //娣诲姞鍒版祦濯掍綋
                         vtdu = new Vtdu();
                         vtdu.setRtspSource(rtspSource);
                         vtdu.setName(camera.getId() + "_" + channel.getChanNo());
-                        vtdu.setIsCode("0");//榛樿涓嶈浆鐮�
+                        CameraCmd cmd = new CameraCmd(camera.getId(), channel.getChanNo());
+                        Map<String, Object> videoCompressionCfg = getVideoCompressionCfg(cmd);
+                        if (videoCompressionCfg.get("videoEncType").equals("鏍囧噯h264")) {
+                            vtdu.setIsCode("0");//榛樿涓嶈浆鐮�
+                        } else {
+                            vtdu.setIsCode("1");//榛樿杞爜
+                        }
                         vtdu.setMode("1");//榛樿CPU杞В鐮�
                         vtdu.setCameraId(camera.getId());
                         vtduService.insertVtdu(vtdu);
-                    } else {
-                        if (!rtspSource.equals(vtdu.getRtspSource())) {
-                            //鏇存柊rtsp鍦板潃
-                            vtdu.setRtspSource(rtspSource);
-                            vtduService.updateVtdu(vtdu);
-                        }
                     }
                 }
+                //鍒涘缓寮曞闃熷垪
+                if (!GuidePriorityQueue.cameraQueueMap.containsKey(camera.getId())) {
+                    Comparator<GuideTask> comparator = GuidePriorityQueue.getComparator();
+                    PriorityBlockingQueue<GuideTask> priorityQueue = new PriorityBlockingQueue<>(1000, comparator);
+                    GuidePriorityQueue.cameraQueueMap.put(camera.getId(), priorityQueue);
+                }
+                ardCamerasService.updateArdCameras(camera);
             }
-            //鍒涘缓寮曞闃熷垪
-            if (!GuidePriorityQueue.cameraQueueMap.containsKey(camera.getId())) {
-                Comparator<GuideTask> comparator = GuidePriorityQueue.getComparator();
-                PriorityBlockingQueue<GuideTask> priorityQueue = new PriorityBlockingQueue<>(1000, comparator);
-                GuidePriorityQueue.cameraQueueMap.put(camera.getId(), priorityQueue);
-            }
-            ardCamerasService.updateArdCameras(camera);
+        } catch (Exception ex) {
+            log.error("娉ㄥ唽璁惧寮傚父", ex);
         }
     }
 
@@ -276,14 +254,12 @@
     @Override
     public void loginAll() {
         try {
-            log.debug("鍔犺浇lib瀹屾垚锛�");
             ArdCameras ardCamera = new ArdCameras();
             ardCamera.setFactory("1");
             List<ArdCameras> ardCameras = ardCamerasService.selectArdCamerasListNoDataScope(ardCamera);
             for (ArdCameras camera : ardCameras) {
-                Thread.sleep(500);
-                //寮傛鐧诲綍
-                asyncLogin(camera);
+                //鐧诲綍
+                login(camera);
             }
         } catch (Exception ex) {
             log.error("鍒濆鍖栫櫥褰曠浉鏈哄紓甯革細" + ex.getMessage());
@@ -303,7 +279,7 @@
         if (!GlobalVariable.loginMap.containsKey(cameraId)) {
             return false;
         }
-        Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId);
+        Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId);
         boolean b = hCNetSDK.NET_DVR_Logout(userId);
         if (b) {
             GlobalVariable.loginMap.remove(cameraId);
@@ -323,7 +299,7 @@
             if (!GlobalVariable.loginMap.containsKey(cameraId)) {
                 return false;
             }
-            Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId);
+            Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId);
             return hCNetSDK.NET_DVR_RemoteControl(userId, NET_DVR_CHECK_USER_STATUS, null, 0);
         } catch (Exception ex) {
             log.error("妫�娴嬪湪绾垮紓甯革細" + ex.getMessage());
@@ -342,7 +318,6 @@
      * @淇敼浜哄拰鍏跺畠淇℃伅
      */
     @Override
-    @SdkOperate
     public boolean pTZControlWithSpeed(CameraCmd cmd) {
         String cameraId = cmd.getCameraId();
         boolean enable = cmd.isEnable();
@@ -352,7 +327,7 @@
         if (!GlobalVariable.loginMap.containsKey(cameraId)) {
             return false;
         }
-        Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId);
+        Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId);
         int dwStop;
         if (enable) {
             dwStop = 0;//寮�鍚�
@@ -429,7 +404,6 @@
      * @param cmd 鐩告満鍛戒护
      */
     @Override
-    @SdkOperate
     public boolean setFocusPos(CameraCmd cmd) {
         String cameraId = cmd.getCameraId();
         Integer channelNum = cmd.getChanNo();
@@ -438,7 +412,7 @@
             return false;
         }
         // 鑾峰彇鍙傛暟
-        Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId);
+        Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId);
         HCNetSDK.NET_DVR_STD_CONFIG struStdCfg = new HCNetSDK.NET_DVR_STD_CONFIG();
         HCNetSDK.NET_DVR_GIS_INFO struGisInfo = new HCNetSDK.NET_DVR_GIS_INFO();
         struGisInfo.struPtzPosEx.dwFocus = dwFocusPos;
@@ -465,14 +439,15 @@
      * @param cmd 鐩告満鍛戒护
      */
     @Override
-    public Map<String, Object> getFocusPos(CameraCmd cmd) {
+    public int getFocusPos(CameraCmd cmd) {
+        int result = 0;
         String cameraId = cmd.getCameraId();
         Integer channelNum = cmd.getChanNo();
         if (!GlobalVariable.loginMap.containsKey(cameraId)) {
-            return new HashMap<>();
+            return result;
         }
         // 鑾峰彇鍙傛暟
-        Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId);
+        Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId);
         HCNetSDK.NET_DVR_STD_CONFIG struStdCfg = new HCNetSDK.NET_DVR_STD_CONFIG();
         HCNetSDK.NET_DVR_GIS_INFO struGisInfo = new HCNetSDK.NET_DVR_GIS_INFO();
         struStdCfg.read();
@@ -486,13 +461,12 @@
         if (!bool) {
             int code = hCNetSDK.NET_DVR_GetLastError();
             log.error("鑾峰彇GIS淇℃伅鏁版嵁澶辫触,璇风◢鍚庨噸璇�" + code);
-            return new HashMap<>();
+            return result;
         } else {
             struGisInfo.read();
-            Map<String, Object> map = new HashMap<>();
-            map.put("dwFocus", struGisInfo.struPtzPosEx.dwFocus);
-            return map;
+            result = struGisInfo.struPtzPosEx.dwFocus;
         }
+        return result;
     }
 
     /**
@@ -501,7 +475,6 @@
      * @param cmd 鐩告満鍛戒护
      */
     @Override
-    @SdkOperate
     public boolean setPreset(CameraCmd cmd) {
         String cameraId = cmd.getCameraId();
         Integer channelNum = cmd.getChanNo();
@@ -509,7 +482,7 @@
         if (!GlobalVariable.loginMap.containsKey(cameraId)) {
             return false;
         }
-        Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId);
+        Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId);
         boolean bool = hCNetSDK.NET_DVR_PTZPreset_Other(userId, channelNum, SET_PRESET, PresetIndex);
         if (!bool) {
             int code = hCNetSDK.NET_DVR_GetLastError();
@@ -524,7 +497,6 @@
      * @param cmd 鐩告満鍛戒护
      */
     @Override
-    @SdkOperate
     public boolean gotoPreset(CameraCmd cmd) {
         String cameraId = cmd.getCameraId();
         Integer channelNum = cmd.getChanNo();
@@ -532,7 +504,7 @@
         if (!GlobalVariable.loginMap.containsKey(cameraId)) {
             return false;
         }
-        Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId);
+        Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId);
         boolean bool = hCNetSDK.NET_DVR_PTZPreset_Other(userId, channelNum, GOTO_PRESET, PresetIndex);
         if (!bool) {
             int code = hCNetSDK.NET_DVR_GetLastError();
@@ -550,15 +522,15 @@
      * @淇敼浜哄拰鍏跺畠淇℃伅
      */
     @Override
-    public Map<String, String> getVideoCompressionCfg(CameraCmd cmd) {
+    public Map<String, Object> getVideoCompressionCfg(CameraCmd cmd) {
         String cameraId = cmd.getCameraId();
         Integer chanNo = cmd.getChanNo();
         if (!GlobalVariable.loginMap.containsKey(cameraId)) {
             return null;
         }
-        Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId);
+        Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId);
 
-        Map<String, String> map = new HashMap<>();
+        Map<String, Object> map = new HashMap<>();
         NET_DVR_COMPRESSIONCFG_V30 compressioncfg = new NET_DVR_COMPRESSIONCFG_V30();
         compressioncfg.write();
         Pointer pioint = compressioncfg.getPointer();
@@ -615,85 +587,85 @@
                         videoBitrate = "淇濈暀";
                         break;
                     case 1:
-                        videoBitrate = "16K(淇濈暀)";
+                        videoBitrate = "16(淇濈暀)";
                         break;
                     case 2:
-                        videoBitrate = "32K";
+                        videoBitrate = "32";
                         break;
                     case 3:
-                        videoBitrate = "48k";
+                        videoBitrate = "48";
                         break;
                     case 4:
-                        videoBitrate = "64k";
+                        videoBitrate = "64";
                         break;
                     case 5:
-                        videoBitrate = "80k";
+                        videoBitrate = "80";
                         break;
                     case 6:
-                        videoBitrate = "96k";
+                        videoBitrate = "96";
                         break;
                     case 7:
-                        videoBitrate = "128k";
+                        videoBitrate = "128";
                         break;
                     case 8:
-                        videoBitrate = "160k";
+                        videoBitrate = "160";
                         break;
                     case 9:
-                        videoBitrate = "192k";
+                        videoBitrate = "192";
                         break;
                     case 10:
-                        videoBitrate = "224k";
+                        videoBitrate = "224";
                         break;
                     case 11:
-                        videoBitrate = "256K";
+                        videoBitrate = "256";
                         break;
                     case 12:
-                        videoBitrate = "320K";
+                        videoBitrate = "320";
                         break;
                     case 13:
-                        videoBitrate = "384K";
+                        videoBitrate = "384";
                         break;
                     case 14:
-                        videoBitrate = "448K";
+                        videoBitrate = "448";
                         break;
                     case 15:
-                        videoBitrate = "512K";
+                        videoBitrate = "512";
                         break;
                     case 16:
-                        videoBitrate = "640K";
+                        videoBitrate = "640";
                         break;
                     case 17:
-                        videoBitrate = "768K";
+                        videoBitrate = "768";
                         break;
                     case 18:
-                        videoBitrate = "896K";
+                        videoBitrate = "896";
                         break;
                     case 19:
-                        videoBitrate = "1024K";
+                        videoBitrate = "1024";
                         break;
                     case 20:
-                        videoBitrate = "1280K";
+                        videoBitrate = "1280";
                         break;
                     case 21:
-                        videoBitrate = "1536K";
+                        videoBitrate = "1536";
                         break;
                     case 22:
-                        videoBitrate = "1792K";
+                        videoBitrate = "1792";
                         break;
                     case 23:
                         videoBitrate = "2048K";
                         break;
                     case 24:
-                        videoBitrate = "3072K";
+                        videoBitrate = "3072";
                         break;
                     case 25:
-                        videoBitrate = "4096K";
+                        videoBitrate = "4096";
                         break;
                     case 26:
-                        videoBitrate = "8192K";
+                        videoBitrate = "8192";
                         break;
                     case 27:
-                        videoBitrate = "16384K";
+                        videoBitrate = "16384";
                         break;
                     default:
                         videoBitrate = "鍏朵粬";
@@ -703,43 +675,43 @@
                 String resolution = "";
                 switch (compressioncfg.struNormHighRecordPara.byResolution) {
                     case 0:
-                        resolution = "DCIF(528*384/528*320)";
+                        resolution = "528*384/528*320";
                         break;
                     case 1:
-                        resolution = "CIF(352*288/352*240)";
+                        resolution = "352*288/352*240";
                         break;
                     case 2:
-                        resolution = "QCIF(176*144/176*120)";
+                        resolution = "176*144/176*120";
                         break;
                     case 3:
-                        resolution = "4CIF(704*576/704*480)";
+                        resolution = "704*576/704*480";
                         break;
                     case 4:
-                        resolution = "2CIF(704*288/704*240)";
+                        resolution = "704*288/704*240";
                         break;
                     case 6:
-                        resolution = "QVGA(320*240)";
+                        resolution = "320*240";
                         break;
                     case 7:
-                        resolution = "QQVGA(160*120)";
+                        resolution = "160*120";
                         break;
                     case 16:
-                        resolution = "VGA(640*480)";
+                        resolution = "640*480";
                         break;
                     case 17:
-                        resolution = "UXGA(1600*1200)";
+                        resolution = "1600*1200";
                         break;
                     case 18:
-                        resolution = "SVGA(800*600)";
+                        resolution = "800*600";
                         break;
                     case 19:
-                        resolution = "HD720P(1280*720)";
+                        resolution = "1280*720";
                         break;
                     case 20:
-                        resolution = "XVGA(1280*960)";
+                        resolution = "1280*960";
                         break;
                     case 21:
-                        resolution = "HD900P(1600*900)";
+                        resolution = "1600*900";
                         break;
                     case 22:
                         resolution = "1360*1024";
@@ -751,7 +723,7 @@
                         resolution = "1920*1920";
                         break;
                     case 27:
-                        resolution = "1920*1080p";
+                        resolution = "1920*1080";
                         break;
                     case 28:
                         resolution = "2560*1920";
@@ -766,10 +738,80 @@
                         resolution = "涓嶅湪褰撳墠鍒嗚鲸鐜囩储寮曪紝璇疯仈绯荤鐞嗗憳娣诲姞";
                         break;
                 }
-                map.put("resolution", resolution);
-                map.put("videoBitrate", videoBitrate);
-                map.put("videoEncType", videoEncType);
-                map.put("streamType", streamType);
+                //甯х巼
+                String nFrameRate = "";
+                switch (compressioncfg.struNormHighRecordPara.dwVideoFrameRate) {
+                    case 0:
+                        nFrameRate = "0";
+                        break;
+                    case 1:
+                        nFrameRate = "1/16";
+                        break;
+                    case 2:
+                        nFrameRate = "1/8";
+                        break;
+                    case 3:
+                        nFrameRate = "1/4";
+                        break;
+                    case 4:
+                        nFrameRate = "1/2";
+                        break;
+                    case 5:
+                        nFrameRate = "1";
+                        break;
+                    case 6:
+                        nFrameRate = "2";
+                        break;
+                    case 7:
+                        nFrameRate = "4";
+                        break;
+                    case 8:
+                        nFrameRate = "6";
+                        break;
+                    case 9:
+                        nFrameRate = "8";
+                        break;
+                    case 10:
+                        nFrameRate = "10";
+                        break;
+                    case 11:
+                        nFrameRate = "12";
+                        break;
+                    case 12:
+                        nFrameRate = "16";
+                        break;
+                    case 13:
+                        nFrameRate = "20";
+                        break;
+                    case 14:
+                        nFrameRate = "15";
+                        break;
+                    case 15:
+                        nFrameRate = "18";
+                        break;
+                    case 16:
+                        nFrameRate = "22";
+                        break;
+                    case 17:
+                        nFrameRate = "25";
+                        break;
+                    case 18:
+                        nFrameRate = "30";
+                        break;
+                    case 19:
+                        nFrameRate = "35";
+                        break;
+                    case 20:
+                        nFrameRate = "40";
+                        break;
+                    default:
+                        nFrameRate = "鏈煡";
+                        break;
+                }
+                map.put("resolution", resolution);//鍒嗚鲸鐜�
+                map.put("videoBitrate", videoBitrate);//姣旂壒鐜�
+                map.put("videoEncType", videoEncType);//缂栫爜
+                map.put("nFrameRate", nFrameRate);//甯х巼
 
             } else {
                 int code = hCNetSDK.NET_DVR_GetLastError();
@@ -794,9 +836,9 @@
         String cameraId = cmd.getCameraId();
         Integer channelNum = cmd.getChanNo();
         if (!GlobalVariable.loginMap.containsKey(cameraId)) {
-            return null;
+            return new HashMap<>();
         }
-        Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId);
+        Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId);
 
         NET_DVR_PTZPOS m_ptzPosCurrent = new NET_DVR_PTZPOS();
         Pointer pioint = m_ptzPosCurrent.getPointer();
@@ -828,7 +870,6 @@
             log.error("鎺у埗澶辫触,璇风◢鍚庨噸璇�" + code);
             return new HashMap<>();
         }
-
     }
 
     /**
@@ -840,7 +881,6 @@
      * @淇敼浜哄拰鍏跺畠淇℃伅 娉ㄦ剰淇话瑙掑害璐熷�奸渶瑕佸姞涓�360寰楀埌鐨勬鍊艰繘琛岃缃�
      */
     @Override
-    @SdkOperate
     public boolean setPtz(CameraCmd cmd) {
         String cameraId = cmd.getCameraId();
         Integer channelNum = cmd.getChanNo();
@@ -848,13 +888,13 @@
         if (!GlobalVariable.loginMap.containsKey(cameraId)) {
             return false;
         }
-        Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId);
+        Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId);
         NET_DVR_PTZPOS m_ptzPosCurrent = new NET_DVR_PTZPOS();
         m_ptzPosCurrent.wAction = 1;
         try {
-            String p = String.valueOf(ptz.get("p") * 10);
-            String t = String.valueOf(ptz.get("t") * 10);
-            String z = String.valueOf(ptz.get("z") * 10);
+            String p = String.valueOf((int) (ptz.get("p") * 10));
+            String t = String.valueOf((int) (ptz.get("t") * 10));
+            String z = String.valueOf((int) (ptz.get("z") * 10));
             m_ptzPosCurrent.wPanPos = (short) (Integer.parseInt(p, 16));
             m_ptzPosCurrent.wTiltPos = (short) (Integer.parseInt(t, 16));
             m_ptzPosCurrent.wZoomPos = (short) (Integer.parseInt(z, 16));
@@ -873,14 +913,13 @@
     }
 
     @Override
-    @SdkOperate
     public boolean guideTargetPosition(CameraCmd cmd) {
         String cameraId = cmd.getCameraId();
         Integer channelNum = cmd.getChanNo();
         if (!GlobalVariable.loginMap.containsKey(cameraId)) {
             return false;
         }
-        Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId);
+        Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId);
         NET_DVR_PTZPOS m_ptzPosCurrent = new NET_DVR_PTZPOS();
         m_ptzPosCurrent.wAction = 1;
         try {
@@ -908,49 +947,6 @@
         }
     }
 
-    /**
-     * @鎻忚堪 鎿嶆帶閿佸畾
-     * @鍙傛暟 [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;
-    }
 
     /**
      * @鎻忚堪 鑾峰彇ptz閿佸畾淇℃伅
@@ -967,7 +963,7 @@
         if (!GlobalVariable.loginMap.containsKey(cameraId)) {
             return -1;
         }
-        Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId);
+        Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId);
         NET_DVR_PTZ_LOCKCFG netDvrPtzLockcfg = new NET_DVR_PTZ_LOCKCFG();
         Pointer point = netDvrPtzLockcfg.getPointer();
         IntByReference ibrBytesReturned = new IntByReference(0);
@@ -999,7 +995,7 @@
         if (!GlobalVariable.loginMap.containsKey(cameraId)) {
             return false;
         }
-        Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId);
+        Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId);
         NET_DVR_INITIALPOSITIONCTRL initialpositionctrl = new NET_DVR_INITIALPOSITIONCTRL();
 
         initialpositionctrl.dwSize = initialpositionctrl.size();
@@ -1031,7 +1027,7 @@
         if (!GlobalVariable.loginMap.containsKey(cameraId)) {
             return new HashMap<>();
         }
-        Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId);
+        Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId);
         NET_DVR_PTZSCOPE m_ptzPosCurrent = new NET_DVR_PTZSCOPE();
         Pointer point = m_ptzPosCurrent.getPointer();
         IntByReference ibrBytesReturned = new IntByReference(0);
@@ -1080,7 +1076,7 @@
         if (!GlobalVariable.loginMap.containsKey(cameraId)) {
             return false;
         }
-        Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId);
+        Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId);
         NET_DVR_CAMERAPARAMCFG_EX struCameraParam = new NET_DVR_CAMERAPARAMCFG_EX();
         Pointer point = struCameraParam.getPointer();
         IntByReference ibrBytesReturned = new IntByReference(0);
@@ -1126,7 +1122,7 @@
         if (!GlobalVariable.loginMap.containsKey(cameraId)) {
             return false;
         }
-        Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId);
+        Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId);
         NET_DVR_CAMERAPARAMCFG_EX struDayNigh = new NET_DVR_CAMERAPARAMCFG_EX();
         Pointer point = struDayNigh.getPointer();
         IntByReference ibrBytesReturned = new IntByReference(0);
@@ -1174,7 +1170,7 @@
         if (!GlobalVariable.loginMap.containsKey(cameraId)) {
             return false;
         }
-        Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId);
+        Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId);
         NET_DVR_FOCUSMODE_CFG struFocusMode = new NET_DVR_FOCUSMODE_CFG();
         Pointer point = struFocusMode.getPointer();
         IntByReference ibrBytesReturned = new IntByReference(0);
@@ -1217,7 +1213,7 @@
         if (!GlobalVariable.loginMap.containsKey(cameraId)) {
             return "";
         }
-        Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId);
+        Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId);
         NET_DVR_FOCUSMODE_CFG struFocusMode = new NET_DVR_FOCUSMODE_CFG();
         Pointer point = struFocusMode.getPointer();
         IntByReference ibrBytesReturned = new IntByReference(0);
@@ -1247,7 +1243,7 @@
         if (!GlobalVariable.loginMap.containsKey(cameraId)) {
             return false;
         }
-        Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId);
+        Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId);
         int dwStop;
         if (enable) {
             dwStop = 0;//寮�鍚�
@@ -1280,7 +1276,7 @@
         if (!GlobalVariable.loginMap.containsKey(cameraId)) {
             return false;
         }
-        Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId);
+        Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId);
         NET_DVR_DEVSERVER_CFG struDeicing = new NET_DVR_DEVSERVER_CFG();
         Pointer point = struDeicing.getPointer();
         IntByReference ibrBytesReturned = new IntByReference(0);
@@ -1317,7 +1313,7 @@
         if (!GlobalVariable.loginMap.containsKey(cameraId)) {
             return "";
         }
-        Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId);
+        Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId);
         NET_DVR_WORKSTATE_V30 devwork = new NET_DVR_WORKSTATE_V30();
         if (!hCNetSDK.NET_DVR_GetDVRWorkState_V30(userId, devwork)) {
             // 杩斿洖Boolean鍊硷紝鍒ゆ柇鏄惁鑾峰彇璁惧鑳藉姏
@@ -1360,7 +1356,7 @@
         if (!GlobalVariable.loginMap.containsKey(cameraId)) {
             return "";
         }
-        Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId);
+        Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId);
         //鍥剧墖淇℃伅
         NET_DVR_JPEGPARA jpeg = new NET_DVR_JPEGPARA();
         //璁剧疆鍥剧墖鍒嗚鲸鐜�
@@ -1424,7 +1420,7 @@
             if (!GlobalVariable.loginMap.containsKey(cameraId)) {
                 return "";
             }
-            Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId);
+            Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId);
             //寮哄埗I甯х粨鏋勪綋瀵硅薄
             HCNetSDK.NET_DVR_I_FRAME netDvrIFrame = new HCNetSDK.NET_DVR_I_FRAME();   //鏂板缓缁撴瀯浣撳璞�
             netDvrIFrame.read();
@@ -1468,6 +1464,15 @@
                     GlobalVariable.previewMap.remove(cameraId);
                 }
                 log.debug("褰曞儚鍋滄");
+                //瀛樺叆minio
+                String BucketName = "record";
+                String ObjectName = IdUtils.simpleUUID() + ".mp4";
+                FileInputStream stream = new FileInputStream(path);
+                boolean b = MinioUtil.uploadObject(BucketName, ObjectName, stream, stream.available(), "video/MP4");
+                if (b) {
+                    url = MinioUtil.getBucketObjectUrl(BucketName, ObjectName);
+                    log.debug("涓婁紶鏂囦欢鎴愬姛!" + url);
+                }
             }
             return url;
         } catch (Exception ex) {
@@ -1477,15 +1482,15 @@
     }
 
     @Override
-    public void recordStart(CameraCmd cmd) {
+    public boolean recordStart(CameraCmd cmd) {
         try {
             String cameraId = cmd.getCameraId();
             Integer channelNum = cmd.getChanNo();
             String path = FileUtils.createFile("D:/recordTemp/" + cameraId + ".mp4");
             if (!GlobalVariable.loginMap.containsKey(cameraId)) {
-                return;
+                return false;
             }
-            Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId);
+            Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId);
             //寮哄埗I甯х粨鏋勪綋瀵硅薄
             HCNetSDK.NET_DVR_I_FRAME netDvrIFrame = new HCNetSDK.NET_DVR_I_FRAME();   //鏂板缓缁撴瀯浣撳璞�
             netDvrIFrame.read();
@@ -1515,18 +1520,20 @@
             int lRealHandle = hCNetSDK.NET_DVR_RealPlay_V40(userId, previewinfo, null, null);
             if (lRealHandle == -1) {
                 log.error("鍙栨祦澶辫触" + hCNetSDK.NET_DVR_GetLastError());
-                return;
+                return false;
             }
             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)) {
                 log.error("淇濆瓨瑙嗛鏂囦欢鍒颁复鏃舵枃浠跺す澶辫触 閿欒鐮佷负:  " + hCNetSDK.NET_DVR_GetLastError());
-                return;
+                return false;
             }
             log.debug("褰曞儚寮�濮�");
+            return true;
         } catch (Exception ex) {
             log.error("寮�濮嬪綍鍍忓紓甯�" + ex.getMessage());
+            return false;
         }
     }
 
@@ -1540,7 +1547,7 @@
             if (!GlobalVariable.loginMap.containsKey(cameraId)) {
                 return "";
             }
-            Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId);
+            Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId);
             //region 寮哄埗I甯�
             HCNetSDK.NET_DVR_I_FRAME netDvrIFrame = new HCNetSDK.NET_DVR_I_FRAME();   //鏂板缓缁撴瀯浣撳璞�
             netDvrIFrame.read();
@@ -1586,14 +1593,15 @@
     }
 
     @Override
-    public void recordStopNotToMinio(CameraCmd cmd) {
+    public boolean recordStopNotToMinio(CameraCmd cmd) {
+        boolean result = false;
         try {
             String cameraId = cmd.getCameraId();
             Integer channelNum = cmd.getChanNo();
             if (!GlobalVariable.loginMap.containsKey(cameraId)) {
-                return;
+                return false;
             }
-            Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId);
+            Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId);
             //寮哄埗I甯х粨鏋勪綋瀵硅薄
             HCNetSDK.NET_DVR_I_FRAME netDvrIFrame = new HCNetSDK.NET_DVR_I_FRAME();   //鏂板缓缁撴瀯浣撳璞�
             netDvrIFrame.read();
@@ -1620,9 +1628,12 @@
                 GlobalVariable.previewMap.remove(cameraId);
             }
             log.debug("褰曞儚鍋滄");
+            result = true;
         } catch (Exception ex) {
             log.error("褰曞儚鍋滄寮傚父" + ex.getMessage());
+            result = false;
         }
+        return result;
     }
 
     //鑾峰彇IP閫氶亾
@@ -1678,7 +1689,7 @@
             return new HashMap<>();
         }
         // 鑾峰彇鍙傛暟
-        Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId);
+        Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId);
         HCNetSDK.NET_DVR_STD_CONFIG struStdCfg = new HCNetSDK.NET_DVR_STD_CONFIG();
         HCNetSDK.NET_DVR_GIS_INFO struGisInfo = new HCNetSDK.NET_DVR_GIS_INFO();
         struStdCfg.read();

--
Gitblit v1.9.3