From d353fdce7cb957aa0f5d9d51d0ad4205c96e156c Mon Sep 17 00:00:00 2001
From: ‘liusuyi’ <1951119284@qq.com>
Date: 星期六, 21 十月 2023 11:57:12 +0800
Subject: [PATCH] 1、流媒体升级1.2.0,修改部分forest接口 2、登录设备判断编码自动配置转码 3、增加sdk聚焦模式切换 4、增加sdk视场角获取并定时上传

---
 ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java |  353 ++++++++++++++++++++++++++++++++--------------------------
 1 files changed, 196 insertions(+), 157 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..d094ae1 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,7 +5,6 @@
 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;
@@ -26,7 +25,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;
@@ -61,7 +60,7 @@
     private static HCNetSDK hCNetSDK;
 
     @Override
-    public void loadHCNetSDKLib() {
+    public boolean init() {
         try {
             log.debug("寮�濮嬪姞杞絪dk搴撴枃浠惰矾寰�");
             if (Platform.isWindows()) {
@@ -96,8 +95,10 @@
                 ptrByteArraySsl.write();
                 hCNetSDK.NET_DVR_SetSDKInitCfg(4, ptrByteArraySsl.getPointer());
             }
+            return true;
         } catch (Exception ex) {
             log.error("鍔犺浇搴撴枃浠跺紓甯革細" + ex.getMessage());
+            return false;
         }
     }
 
@@ -110,6 +111,7 @@
      * @鍒涘缓鏃堕棿 2023/1/17 16:12
      * @淇敼浜哄拰鍏跺畠淇℃伅
      */
+    @Async
     public void syncLogin(ArdCameras camera) {
         // 鍒濆鍖�
         if (!hCNetSDK.NET_DVR_Init()) {
@@ -182,22 +184,23 @@
                     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) {
-                        //娣诲姞鍒版祦濯掍綋
-                        vtdu = new Vtdu();
-                        vtdu.setRtspSource(rtspSource);
-                        vtdu.setName(camera.getId() + "_" + channel.getChanNo());
-                        vtdu.setIsCode("0");//榛樿涓嶈浆鐮�
-                        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 (vtdu != null) {
+                        vtduService.deleteVtduByName(name);
                     }
+                    //娣诲姞鍒版祦濯掍綋
+                    vtdu = new Vtdu();
+                    vtdu.setRtspSource(rtspSource);
+                    vtdu.setName(camera.getId() + "_" + channel.getChanNo());
+                    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);
                 }
             }
             //鍒涘缓寮曞闃熷垪
@@ -283,7 +286,7 @@
             for (ArdCameras camera : ardCameras) {
                 Thread.sleep(500);
                 //寮傛鐧诲綍
-                asyncLogin(camera);
+                syncLogin(camera);
             }
         } catch (Exception ex) {
             log.error("鍒濆鍖栫櫥褰曠浉鏈哄紓甯革細" + ex.getMessage());
@@ -303,7 +306,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 +326,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 +345,6 @@
      * @淇敼浜哄拰鍏跺畠淇℃伅
      */
     @Override
-    @SdkOperate
     public boolean pTZControlWithSpeed(CameraCmd cmd) {
         String cameraId = cmd.getCameraId();
         boolean enable = cmd.isEnable();
@@ -352,7 +354,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 +431,6 @@
      * @param cmd 鐩告満鍛戒护
      */
     @Override
-    @SdkOperate
     public boolean setFocusPos(CameraCmd cmd) {
         String cameraId = cmd.getCameraId();
         Integer channelNum = cmd.getChanNo();
@@ -438,7 +439,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 +466,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 +488,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 +502,6 @@
      * @param cmd 鐩告満鍛戒护
      */
     @Override
-    @SdkOperate
     public boolean setPreset(CameraCmd cmd) {
         String cameraId = cmd.getCameraId();
         Integer channelNum = cmd.getChanNo();
@@ -509,7 +509,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 +524,6 @@
      * @param cmd 鐩告満鍛戒护
      */
     @Override
-    @SdkOperate
     public boolean gotoPreset(CameraCmd cmd) {
         String cameraId = cmd.getCameraId();
         Integer channelNum = cmd.getChanNo();
@@ -532,7 +531,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 +549,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 +614,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 +702,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 +750,7 @@
                         resolution = "1920*1920";
                         break;
                     case 27:
-                        resolution = "1920*1080p";
+                        resolution = "1920*1080";
                         break;
                     case 28:
                         resolution = "2560*1920";
@@ -766,10 +765,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 +863,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();
@@ -840,7 +909,6 @@
      * @淇敼浜哄拰鍏跺畠淇℃伅 娉ㄦ剰淇话瑙掑害璐熷�奸渶瑕佸姞涓�360寰楀埌鐨勬鍊艰繘琛岃缃�
      */
     @Override
-    @SdkOperate
     public boolean setPtz(CameraCmd cmd) {
         String cameraId = cmd.getCameraId();
         Integer channelNum = cmd.getChanNo();
@@ -848,13 +916,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 +941,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 +975,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 +991,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 +1023,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 +1055,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 +1104,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 +1150,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 +1198,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 +1241,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 +1271,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 +1304,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 +1341,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 +1384,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 +1448,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 +1492,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 +1510,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 +1548,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 +1575,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 +1621,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 +1656,12 @@
                 GlobalVariable.previewMap.remove(cameraId);
             }
             log.debug("褰曞儚鍋滄");
+            result = true;
         } catch (Exception ex) {
             log.error("褰曞儚鍋滄寮傚父" + ex.getMessage());
+            result = false;
         }
+        return result;
     }
 
     //鑾峰彇IP閫氶亾
@@ -1678,7 +1717,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