From 8a8a13eb80498e9b905b47b8dc4d52cd8fdb8497 Mon Sep 17 00:00:00 2001
From: aijinhui <aijinhui>
Date: 星期二, 24 十月 2023 16:36:03 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 ard-work/src/main/java/com/ruoyi/inspect/service/impl/ArdVideoInspectRecordServiceImpl.java |   11 +
 ard-work/src/main/java/com/ruoyi/device/camera/service/impl/AsyncLogin.java                 |    9 -
 ard-work/src/main/java/com/ruoyi/device/dhsdk/service/impl/DhClientServiceImpl.java         |   96 ++++++++-------
 ard-work/src/main/java/com/ruoyi/device/camera/service/impl/CameraSdkServiceImpl.java       |   20 +--
 ard-work/src/main/java/com/ruoyi/utils/forest/MediaClient.java                              |    6 
 ard-work/src/main/java/com/ruoyi/media/service/impl/VtduServiceImpl.java                    |    2 
 ard-work/src/main/java/com/ruoyi/cmd/startup.java                                           |    2 
 ard-work/src/main/java/com/ruoyi/media/service/impl/MediaServiceImpl.java                   |   48 +++++--
 ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java       |  137 +++++++++++-----------
 ard-work/src/main/java/com/ruoyi/device/camera/service/ICameraSdkService.java               |    2 
 ard-work/src/main/java/com/ruoyi/inspect/service/impl/ArdVideoInspectTaskServiceImpl.java   |    1 
 server/mediamtx/mediamtx.yml                                                                |   16 +-
 ard-work/src/main/java/com/ruoyi/device/camera/service/impl/ArdCamerasServiceImpl.java      |    5 
 13 files changed, 191 insertions(+), 164 deletions(-)

diff --git a/ard-work/src/main/java/com/ruoyi/cmd/startup.java b/ard-work/src/main/java/com/ruoyi/cmd/startup.java
index 64b60f3..8466eda 100644
--- a/ard-work/src/main/java/com/ruoyi/cmd/startup.java
+++ b/ard-work/src/main/java/com/ruoyi/cmd/startup.java
@@ -6,6 +6,7 @@
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.context.ApplicationContextInitializer;
 import org.springframework.context.ConfigurableApplicationContext;
+import org.springframework.core.annotation.Order;
 import org.springframework.core.io.ClassPathResource;
 import org.springframework.core.io.Resource;
 import org.springframework.core.io.ResourceLoader;
@@ -77,6 +78,7 @@
     }
 
     @PostConstruct
+    @Order(1)
     public void init() {
         if (minioEnabled) {
             log.info("鍒濆鍖栧惎鍔╩inio");
diff --git a/ard-work/src/main/java/com/ruoyi/device/camera/service/ICameraSdkService.java b/ard-work/src/main/java/com/ruoyi/device/camera/service/ICameraSdkService.java
index bf0b78e..5f9a351 100644
--- a/ard-work/src/main/java/com/ruoyi/device/camera/service/ICameraSdkService.java
+++ b/ard-work/src/main/java/com/ruoyi/device/camera/service/ICameraSdkService.java
@@ -6,8 +6,6 @@
 import java.util.Map;
 
 public interface ICameraSdkService {
-    //鍒濆鍖栫櫥褰�
-    void loginAll();
 
     //鐧诲綍
     Boolean login(ArdCameras ardCamera);
diff --git a/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/ArdCamerasServiceImpl.java b/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/ArdCamerasServiceImpl.java
index 22b1c04..99c36f5 100644
--- a/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/ArdCamerasServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/ArdCamerasServiceImpl.java
@@ -14,6 +14,7 @@
 import com.ruoyi.device.channel.mapper.ArdChannelMapper;
 import com.ruoyi.device.hiksdk.service.IHikClientService;
 import com.ruoyi.media.domain.Vtdu;
+import com.ruoyi.media.service.IMediaService;
 import com.ruoyi.media.service.IVtduService;
 import com.ruoyi.scheduling.domian.SchedulingParam;
 import com.ruoyi.utils.gis.GisUtil;
@@ -50,9 +51,13 @@
     private ArdChannelMapper ardChannelMapper;
     @Resource
     private IVtduService vtduService;
+    @Resource
+    private IMediaService mediaService;
+
 
     @PostConstruct
     public void loadCameras() {
+
         //娓呯┖鐩告満缂撳瓨
         Collection<String> cacheKeys = redisCache.keys(getCacheKey("*"));
         redisCache.deleteObject(cacheKeys);
diff --git a/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/AsyncLogin.java b/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/AsyncLogin.java
index 3dca655..d0c7e52 100644
--- a/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/AsyncLogin.java
+++ b/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/AsyncLogin.java
@@ -1,24 +1,19 @@
 package com.ruoyi.device.camera.service.impl;
 
-import com.ruoyi.common.utils.Threads;
 import com.ruoyi.device.camera.domain.ArdCameras;
 import com.ruoyi.device.dhsdk.service.IDhClientService;
 import com.ruoyi.device.hiksdk.service.IHikClientService;
-import org.hibernate.validator.internal.util.stereotypes.Lazy;
 import org.springframework.scheduling.annotation.Async;
-import org.springframework.scheduling.annotation.EnableAsync;
-import org.springframework.stereotype.Service;
-
 import javax.annotation.Resource;
 
 /**
  * @ClassName 寮傛鐧诲綍
- * @Description:
+ * @Description: 鐢变簬娴佸獟浣撳绾跨▼鏈夐棶棰橈紝鏆傛椂涓嶄娇鐢ㄥ紓姝�
  * @Author 鍒樿嫃涔�
  * @Date 2023/10/23 21:39
  * @Version 1.0
  */
-@Service
+
 public class AsyncLogin {
     @Resource
     IHikClientService hikClientService;
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 a59702a..b561e4e 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
@@ -12,6 +12,8 @@
 import com.ruoyi.device.hiksdk.service.IHikClientService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.SmartInitializingSingleton;
+import org.springframework.boot.ApplicationArguments;
+import org.springframework.boot.ApplicationRunner;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.PostConstruct;
@@ -30,7 +32,7 @@
  **/
 @Service
 @Slf4j(topic = "SDK")
-public class CameraSdkServiceImpl implements ICameraSdkService {
+public class CameraSdkServiceImpl implements ICameraSdkService, ApplicationRunner {
     @Resource
     private IArdCamerasService ardCamerasService;
     @Resource
@@ -39,22 +41,16 @@
     IDhClientService dhClientService;
     @Resource
     RedisCache redisCache;
-    @Resource
-    AsyncLogin asyncLogin;
 
-
-
-    //鍒濆鍖朣DK
-    @PostConstruct
     @Override
-    public void loginAll() {
+    public void run(ApplicationArguments args) throws Exception {
         try {
             List<ArdCameras> ardCameras = ardCamerasService.selectArdCamerasListNoDataScope(new ArdCameras());
             for (ArdCameras camera : ardCameras) {
                 if ("1".equals(camera.getFactory())) {
-                    asyncLogin.hikLogin(camera);
+                    hikClientService.login(camera);
                 } else if ("2".equals(camera.getFactory())) {
-                    asyncLogin.dhLogin(camera);
+                    dhClientService.login(camera);
                 }
             }
         } catch (Exception ex) {
@@ -70,10 +66,10 @@
             if (ardCamera != null) {
                 String factory = ardCamera.getFactory();
                 if (factory.equals("1")) {
-                    asyncLogin.hikLogin(ardCamera);
+                    hikClientService.login(ardCamera);
                     result = true;
                 } else if (factory.equals("2")) {
-                    asyncLogin.dhLogin(ardCamera);
+                    dhClientService.login(ardCamera);
                     result = true;
                 }
             }
diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/service/impl/DhClientServiceImpl.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/service/impl/DhClientServiceImpl.java
index 8da654f..0a9df8c 100644
--- a/ard-work/src/main/java/com/ruoyi/device/dhsdk/service/impl/DhClientServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/service/impl/DhClientServiceImpl.java
@@ -84,62 +84,64 @@
             ardCamerasService.updateArdCameras(camera);
             return false;
         }
-        synchronized (lock) {
-            if (GlobalVariable.loginMap.containsKey(camera.getId())) {
-                GlobalVariable.loginMap.remove(camera.getId());
-            }
-            //鍒犻櫎绠$悊閫氶亾
-            ardChannelService.deleteArdChannelByDeviceId(camera.getId());
-            camera.setState("1");
-            camera.setChanNum(m_stDeviceInfo.byChanNum);
-            camera.setStartDChan(1);
-            camera.setLoginId((int) loginId.longValue());
-            ardCamerasService.updateArdCameras(camera);
-            GlobalVariable.loginMap.put(camera.getId(), loginId);
+        if (GlobalVariable.loginMap.containsKey(camera.getId())) {
+            GlobalVariable.loginMap.remove(camera.getId());
+        }
+        //鍒犻櫎绠$悊閫氶亾
+        ardChannelService.deleteArdChannelByDeviceId(camera.getId());
+        camera.setState("1");
+        camera.setChanNum(m_stDeviceInfo.byChanNum);
+        camera.setStartDChan(1);
+        camera.setLoginId((int) loginId.longValue());
+        ardCamerasService.updateArdCameras(camera);
+        GlobalVariable.loginMap.put(camera.getId(), loginId);
 
-            //鑾峰彇鏈�鏂伴�氶亾
-            for (int i = 1; i < m_stDeviceInfo.byChanNum + 1; i++) {
-                ArdChannel channel = new ArdChannel();
-                AV_CFG_ChannelName av_cfg_channelName = new AV_CFG_ChannelName();
-                boolean b = ConfigModule.GetNewDevConfig(loginId, i - 1, CFG_CMD_CHANNELTITLE, av_cfg_channelName);
-                if (b) {
-                    String chanName = null;
-                    try {
-                        chanName = new String(av_cfg_channelName.szName, "GBK").trim();
-                    } catch (UnsupportedEncodingException e) {
-                        e.printStackTrace();
-                    }
-                    channel.setName(chanName);
-                } else {
-                    channel.setName("閫氶亾" + i);
+        //鑾峰彇鏈�鏂伴�氶亾
+        for (int i = 1; i < m_stDeviceInfo.byChanNum + 1; i++) {
+            ArdChannel channel = new ArdChannel();
+            AV_CFG_ChannelName av_cfg_channelName = new AV_CFG_ChannelName();
+            boolean b = ConfigModule.GetNewDevConfig(loginId, i - 1, CFG_CMD_CHANNELTITLE, av_cfg_channelName);
+            if (b) {
+                String chanName = null;
+                try {
+                    chanName = new String(av_cfg_channelName.szName, "GBK").trim();
+                } catch (UnsupportedEncodingException e) {
+                    e.printStackTrace();
                 }
-                channel.setDeviceId(camera.getId());
-                channel.setChanNo(i);
-                ardChannelService.insertArdChannel(channel);
+                channel.setName(chanName);
+            } else {
+                channel.setName("閫氶亾" + i);
             }
-            //閰嶇疆鍒版祦濯掍綋
-            for (int i = 1; i < m_stDeviceInfo.byChanNum + 1; i++) {
-                String name = camera.getId() + "_" + i;
-                String rtspSource = "rtsp://" + camera.getUsername() + ":" + camera.getPassword() + "@" + camera.getIp() + ":" + camera.getRtspPort() + "/cam/realmonitor?channel=" + i + "&subtype=0";
-                Vtdu vtdu = vtduService.selectVtduByName(name);
-                if (vtdu != null) {
-                    vtduService.deleteVtduByName(name);
-                }
-                //娣诲姞鍒版祦濯掍綋
-                CameraCmd cmd = new CameraCmd(camera.getId(), i);
-                Map<String, Object> videoCompressionCfg = getVideoCompressionCfg(cmd);
-                vtdu = new Vtdu();
+            channel.setDeviceId(camera.getId());
+            channel.setChanNo(i);
+            ardChannelService.insertArdChannel(channel);
+        }
+        //閰嶇疆鍒版祦濯掍綋
+        for (int i = 1; i < m_stDeviceInfo.byChanNum + 1; i++) {
+            String name = camera.getId() + "_" + i;
+            String rtspSource = "rtsp://" + camera.getUsername() + ":" + camera.getPassword() + "@" + camera.getIp() + ":" + camera.getRtspPort() + "/cam/realmonitor?channel=" + i + "&subtype=0";
+            Vtdu vtdu = vtduService.selectVtduByName(name);
+            if (vtdu != null) {
+                vtduService.deleteVtduByName(name);
+            }
+            //娣诲姞鍒版祦濯掍綋
+            CameraCmd cmd = new CameraCmd(camera.getId(), i);
+            Map<String, Object> videoCompressionCfg = getVideoCompressionCfg(cmd);
+            vtdu = new Vtdu();
+            if (videoCompressionCfg.get("videoEncType") != null) {
                 if (videoCompressionCfg.get("videoEncType").equals("鏍囧噯h264")) {
                     vtdu.setIsCode("0");//榛樿涓嶈浆鐮�
                 } else {
                     vtdu.setIsCode("1");//榛樿杞爜
                 }
-                vtdu.setRtspSource(rtspSource);
-                vtdu.setName(camera.getId() + "_" + i);
-                vtdu.setMode("1");//榛樿CPU杞В鐮�
-                vtdu.setCameraId(camera.getId());
-                vtduService.insertVtdu(vtdu);
+            } else {
+                vtdu.setIsCode("0");//榛樿涓嶈浆鐮�
             }
+            vtdu.setRtspSource(rtspSource);
+            vtdu.setName(camera.getId() + "_" + i);
+            vtdu.setMode("1");//榛樿CPU杞В鐮�
+            vtdu.setCameraId(camera.getId());
+            vtduService.insertVtdu(vtdu);
         }
         return true;
     }
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 a052a0f..97191e6 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
@@ -117,71 +117,72 @@
                 camera.setState("0");
                 return;
             }
-            synchronized (lock) {
-                log.debug("Login Success [ " + camera.getIp() + ":" + camera.getPort() + " ]");
-                if (fExceptionCallBack == null) {
-                    fExceptionCallBack = new ExceptionCallBack();//寮傚父鍥炶皟
-                    //璁剧疆寮傚父鍥炶皟鍑芥暟(鍙湪鍥炶皟鍑芥暟涓幏鍙栬澶囦笂涓嬬嚎鐘舵�佺瓑)
-                    if (!hCNetSDK.NET_DVR_SetExceptionCallBack_V30(0, 0, fExceptionCallBack, null)) {
-                        log.debug("Set fExceptionCallBack function fail");
-                        return;
-                    } else {
-                        log.debug("Set fExceptionCallBack function successfully!");
-                    }
+
+            log.debug("Login Success [ " + camera.getIp() + ":" + camera.getPort() + " ]");
+            if (fExceptionCallBack == null) {
+                fExceptionCallBack = new ExceptionCallBack();//寮傚父鍥炶皟
+                //璁剧疆寮傚父鍥炶皟鍑芥暟(鍙湪鍥炶皟鍑芥暟涓幏鍙栬澶囦笂涓嬬嚎鐘舵�佺瓑)
+                if (!hCNetSDK.NET_DVR_SetExceptionCallBack_V30(0, 0, fExceptionCallBack, null)) {
+                    log.debug("Set fExceptionCallBack function fail");
+                    return;
+                } else {
+                    log.debug("Set fExceptionCallBack function successfully!");
                 }
+            }
 
-                if (GlobalVariable.loginMap.containsKey(camera.getId())) {
-                    GlobalVariable.loginMap.remove(camera.getId());
+            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);
+
+            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);
                 }
-                //鍒犻櫎绠$悊閫氶亾
-                ardChannelService.deleteArdChannelByDeviceId(camera.getId());
-                GlobalVariable.loginMap.put(camera.getId(), lUserID);
-                GlobalVariable.loginCameraMap.put(lUserID, camera);
-
-
-                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);
                     }
                     //娣诲姞鍒版祦濯掍綋
-                    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());
-                        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);
+                    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);
                 }
-                //鍒涘缓寮曞闃熷垪
-                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);
@@ -502,19 +503,21 @@
      */
     @Override
     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);
 
         Map<String, Object> map = new HashMap<>();
-        NET_DVR_COMPRESSIONCFG_V30 compressioncfg = new NET_DVR_COMPRESSIONCFG_V30();
-        compressioncfg.write();
-        Pointer pioint = compressioncfg.getPointer();
-        IntByReference ibrBytesReturned = new IntByReference(0);
         try {
+            String cameraId = cmd.getCameraId();
+            Integer chanNo = cmd.getChanNo();
+            if (!GlobalVariable.loginMap.containsKey(cameraId)) {
+                return null;
+            }
+            Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId);
+
+            NET_DVR_COMPRESSIONCFG_V30 compressioncfg = new NET_DVR_COMPRESSIONCFG_V30();
+            compressioncfg.write();
+            Pointer pioint = compressioncfg.getPointer();
+            IntByReference ibrBytesReturned = new IntByReference(0);
+
             boolean bool = hCNetSDK.NET_DVR_GetDVRConfig(userId, HCNetSDK.NET_DVR_GET_COMPRESSCFG_V30, chanNo, pioint, compressioncfg.size(), ibrBytesReturned);
             if (bool) {
                 compressioncfg.read();
diff --git a/ard-work/src/main/java/com/ruoyi/inspect/service/impl/ArdVideoInspectRecordServiceImpl.java b/ard-work/src/main/java/com/ruoyi/inspect/service/impl/ArdVideoInspectRecordServiceImpl.java
index 1b00910..20da998 100644
--- a/ard-work/src/main/java/com/ruoyi/inspect/service/impl/ArdVideoInspectRecordServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/inspect/service/impl/ArdVideoInspectRecordServiceImpl.java
@@ -2,10 +2,13 @@
 
 import java.util.HashMap;
 import java.util.List;
+
+import com.ruoyi.common.utils.uuid.IdUtils;
 import org.springframework.stereotype.Service;
 import com.ruoyi.inspect.mapper.ArdVideoInspectRecordMapper;
 import com.ruoyi.inspect.domain.ArdVideoInspectRecord;
 import com.ruoyi.inspect.service.IArdVideoInspectRecordService;
+
 import javax.annotation.Resource;
 
 /**
@@ -42,12 +45,13 @@
     }
 
     @Override
-    public List<HashMap>  selectArdVideoInspectRecordListByStartTime(ArdVideoInspectRecord ardVideoInspectRecord) {
+    public List<HashMap> selectArdVideoInspectRecordListByStartTime(ArdVideoInspectRecord ardVideoInspectRecord) {
         return ardVideoInspectRecordMapper.selectArdVideoInspectRecordListByStartTime(ardVideoInspectRecord);
     }
 
     /**
      * 鎸夋湀浠借幏鍙栨瘡鏃ヨ褰曟枃浠舵暟閲�
+     *
      * @param startMonth
      * @return
      */
@@ -63,8 +67,9 @@
      */
     @Override
     public int insertArdVideoInspectRecord(ArdVideoInspectRecord ardVideoInspectRecord) {
-              //  ardVideoInspectRecord.setUserId(SecurityUtils.getUserId());
-            return ardVideoInspectRecordMapper.insertArdVideoInspectRecord(ardVideoInspectRecord);
+        //  ardVideoInspectRecord.setUserId(SecurityUtils.getUserId());
+        ardVideoInspectRecord.setId(IdUtils.simpleUUID());
+        return ardVideoInspectRecordMapper.insertArdVideoInspectRecord(ardVideoInspectRecord);
     }
 
     /**
diff --git a/ard-work/src/main/java/com/ruoyi/inspect/service/impl/ArdVideoInspectTaskServiceImpl.java b/ard-work/src/main/java/com/ruoyi/inspect/service/impl/ArdVideoInspectTaskServiceImpl.java
index 49757d6..d008af9 100644
--- a/ard-work/src/main/java/com/ruoyi/inspect/service/impl/ArdVideoInspectTaskServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/inspect/service/impl/ArdVideoInspectTaskServiceImpl.java
@@ -557,6 +557,7 @@
                 String url = cameraSdkService.recordStopToMinio(cmd);
                 /*鎻掑叆宸℃璁板綍*/
                 ArdVideoInspectRecord ardVideoInspectRecord = new ArdVideoInspectRecord();
+                ardVideoInspectRecord.setId(IdUtils.simpleUUID());
                 ardVideoInspectRecord.setStepId(step.getId());
                 ArdAlarmpointsWell ardAlarmpointsWell = ardAlarmpointsWellMapper.selectArdAlarmpointsWellById(step.getWellId());
                 if (StringUtils.isNotNull(ardAlarmpointsWell)) {
diff --git a/ard-work/src/main/java/com/ruoyi/media/service/impl/MediaServiceImpl.java b/ard-work/src/main/java/com/ruoyi/media/service/impl/MediaServiceImpl.java
index 81be80e..b7242fd 100644
--- a/ard-work/src/main/java/com/ruoyi/media/service/impl/MediaServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/media/service/impl/MediaServiceImpl.java
@@ -1,8 +1,10 @@
 package com.ruoyi.media.service.impl;
 
 import com.alibaba.fastjson2.JSONObject;
+import com.dtflys.forest.Forest;
 import com.dtflys.forest.exceptions.ForestNetworkException;
 import com.dtflys.forest.exceptions.ForestRuntimeException;
+import com.dtflys.forest.http.ForestRequest;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.media.domain.*;
 import com.ruoyi.media.service.IMediaService;
@@ -10,10 +12,14 @@
 import com.ruoyi.utils.tools.ArdTool;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.ApplicationArguments;
+import org.springframework.boot.ApplicationRunner;
 import org.springframework.core.annotation.Order;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.PostConstruct;
 import javax.annotation.Resource;
+import javax.xml.soap.SOAPEnvelope;
 import java.util.*;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
@@ -28,13 +34,22 @@
 @Service
 @Slf4j(topic = "vtdu")
 @Order(2)
-public class MediaServiceImpl implements IMediaService {
-
+public class MediaServiceImpl implements IMediaService, ApplicationRunner {
+    private static List<String> mediaNameList = new ArrayList<>();
     @Resource
     MediaClient mediaClient;
 
     @Value("${mediamtx.host}")
     String mediamtxHost;
+    @Override
+    public void run(ApplicationArguments args) throws Exception {
+        mediaNameList = getNameList();
+        if(mediaNameList.size()>0)
+        {
+            removePath(mediaNameList.toArray(new String[0]));
+            mediaNameList.clear();
+        }
+    }
 
     /**
      * 娣诲姞娴佸獟浣�
@@ -55,13 +70,13 @@
             String webrtcUrl = "http://" + mediamtxHost + ":8889/" + name;
 
             Conf conf = new Conf();
-            String rootPath = System.getProperty("user.dir").replaceAll("\\\\", "/") + "/lib/mediamtx/";
+            String rootPath = System.getProperty("user.dir").replaceAll("\\\\", "/") + "/server/mediamtx/";
             if (isCode.equals("1")) {
                 conf.setSource("publisher");
                 //榛樿杞В鐮�
                 String cmd = "ffmpeg -rtsp_transport tcp -i " + sourceUrl + " -vcodec libx264 -preset:v ultrafast -r 25 -keyint_min 25 -g 60 -sc_threshold 0 -threads 6  -b:v 2048k -acodec opus  -strict -2 -f rtsp rtsp://localhost:$RTSP_PORT/$MTX_PATH";
                 if (mode.equals("0")) {//纭В鐮�
-                    cmd = "ffmpeg -hwaccel cuvid -c:v hevc_cuvid  -rtsp_transport tcp  -i " + sourceUrl + " -c:v h264_nvenc  -r 25 -g 60 -sc_threshold 0 -threads 6  -b:v 2048k -bf 0 -acodec opus  -strict -2 -f rtsp rtsp://localhost:$RTSP_PORT/$MTX_PATH";
+                    cmd = rootPath+"ffmpeg -hwaccel cuvid -c:v hevc_cuvid  -rtsp_transport tcp  -i " + sourceUrl + " -c:v h264_nvenc  -r 25 -g 60 -sc_threshold 0 -threads 6  -b:v 2048k -bf 0 -acodec opus  -strict -2 -f rtsp rtsp://localhost:$RTSP_PORT/$MTX_PATH";
                 }
                 conf.setRunOnDemand(cmd);
                 conf.setRunOnDemandRestart(true);
@@ -74,14 +89,16 @@
             conf.setSourceProtocol("tcp");
 
             if (!checkNameExist(name)) {
-                mediaClient.addPath(name, conf);
+                 mediaClient.addPath(name, conf);
             }
 
             map.put("rtspUrl", rtspUrl);
             map.put("rtmpUrl", rtmpUrl);
             map.put("webrtcUrl", webrtcUrl);
+        } catch (ForestNetworkException ex) {
+            log.error("娣诲姞娴佸獟浣撳紓甯革細" + ex.getMessage());
         } catch (ForestRuntimeException ex) {
-           log.error("娣诲姞娴佸獟浣撳紓甯革細"+ex.getMessage());
+            log.error("娣诲姞娴佸獟浣撳紓甯革細" + ex.getMessage());
         }
         return map;
     }
@@ -124,7 +141,7 @@
             map.put("rtmpUrl", rtmpUrl);
             map.put("webrtcUrl", webrtcUrl);
         } catch (ForestRuntimeException ex) {
-            log.error("淇敼娴佸獟浣撳紓甯革細"+ex.getMessage());
+            log.error("淇敼娴佸獟浣撳紓甯革細" + ex.getMessage());
         }
         return map;
     }
@@ -157,6 +174,7 @@
         for (String name : names) {
             if (checkNameExist(name)) {
                 mediaClient.removePath(name);
+                log.info("鍒犻櫎鎴愬姛");
             }
         }
     }
@@ -168,7 +186,7 @@
                 mediaClient.removePath(name);
             }
         } catch (ForestRuntimeException ex) {
-            log.error("绉婚櫎娴佸獟浣撳紓甯革細"+ex.getMessage());
+            log.error("绉婚櫎娴佸獟浣撳紓甯革細" + ex.getMessage());
         }
     }
 
@@ -463,11 +481,10 @@
             for (Items item : items) {
                 nameList.add(item.getName());
             }
-        }catch (ForestNetworkException ex) {
-            log.error("鑾峰彇娴佸獟浣搉ame鍒楄〃寮傚父锛�"+ex.getMessage());
-        }
-        catch (ForestRuntimeException ex) {
-            log.error("鑾峰彇娴佸獟浣搉ame鍒楄〃寮傚父锛�"+ex.getMessage());
+        } catch (ForestNetworkException ex) {
+            log.error("鑾峰彇娴佸獟浣搉ame鍒楄〃寮傚父锛�" + ex.getMessage());
+        } catch (ForestRuntimeException ex) {
+            log.error("鑾峰彇娴佸獟浣搉ame鍒楄〃寮傚父锛�" + ex.getMessage());
         }
         return nameList;
     }
@@ -480,8 +497,7 @@
     @Override
     public boolean checkNameExist(String name) {
         boolean result = false;
-        List<String> nameList = getNameList();
-        if (nameList.contains(name)) {
+        if (mediaNameList.contains(name)) {
             result = true;
         }
         return result;
@@ -494,4 +510,6 @@
     public String setConfig(Config config) {
         return mediaClient.setConfig(config);
     }
+
+
 }
diff --git a/ard-work/src/main/java/com/ruoyi/media/service/impl/VtduServiceImpl.java b/ard-work/src/main/java/com/ruoyi/media/service/impl/VtduServiceImpl.java
index 7028ce7..c08fb1d 100644
--- a/ard-work/src/main/java/com/ruoyi/media/service/impl/VtduServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/media/service/impl/VtduServiceImpl.java
@@ -1,5 +1,6 @@
 package com.ruoyi.media.service.impl;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 
@@ -11,6 +12,7 @@
 import com.ruoyi.media.domain.Vtdu;
 import com.ruoyi.media.service.IVtduService;
 
+import javax.annotation.PostConstruct;
 import javax.annotation.Resource;
 
 /**
diff --git a/ard-work/src/main/java/com/ruoyi/utils/forest/MediaClient.java b/ard-work/src/main/java/com/ruoyi/utils/forest/MediaClient.java
index b5266a7..a187f3e 100644
--- a/ard-work/src/main/java/com/ruoyi/utils/forest/MediaClient.java
+++ b/ard-work/src/main/java/com/ruoyi/utils/forest/MediaClient.java
@@ -17,13 +17,13 @@
     /**
      * 澧炲姞璺緞
      */
-    @Post(url = "/config/paths/add/{name}",async = true)
+    @Post("/config/paths/add/{name}")
     public String addPath(@Var("name") String name, @JSONBody Conf body);
 
     /**
      * 淇敼璺緞
      */
-    @Patch(url = "/config/paths/patch/{name}")
+    @Patch("/config/paths/patch/{name}")
     public String editPath(@Var("name") String name, @JSONBody Conf body);
 
     /**
@@ -35,7 +35,7 @@
     /**
      * 鑾峰彇璺緞璇︽儏
      */
-    @Get("/config/paths/get/{name}")
+    @Get(url ="/config/paths/get/{name}")
     public Conf getPathInfo(@Var("name") String name);
 
     /**
diff --git a/server/mediamtx/mediamtx.yml b/server/mediamtx/mediamtx.yml
index 1c79833..0d0358e 100644
--- a/server/mediamtx/mediamtx.yml
+++ b/server/mediamtx/mediamtx.yml
@@ -44,17 +44,17 @@
 # Enable the HTTP API.
 api: yes
 # Address of the API listener.
-apiAddress: 127.0.0.1:9997
+apiAddress: 192.168.1.227:9997
 
 # Enable Prometheus-compatible metrics.
 metrics: no
 # Address of the metrics listener.
-metricsAddress: 127.0.0.1:9998
+metricsAddress: 192.168.1.227:9998
 
 # Enable pprof-compatible endpoint to monitor performances.
 pprof: no
 # Address of the pprof listener.
-pprofAddress: 127.0.0.1:9999
+pprofAddress: 192.168.1.227:9999
 
 # Command to run when a client connects to the server.
 # This is terminated with SIGINT when a client disconnects from the server.
@@ -215,17 +215,17 @@
   # needed when server and clients are on different LANs.
   # TURN/TURNS servers are needed when a direct connection between server and
   # clients is not possible. All traffic is routed through them.
-- url: stun:127.0.0.1:3478
+- url: stun:stun.l.google.com:19302
   # if user is "AUTH_SECRET", then authentication is secret based.
   # the secret must be inserted into the password field.
-  username: 'admin'
-  password: '123456'
+  username: ''
+  password: ''
 # List of interfaces that will be used to gather IPs to send
 # to the counterpart to establish a connection.
 webrtcICEInterfaces: []
 # List of public IP addresses that are to be used as a host.
 # This is used typically for servers that are behind 1:1 D-NAT.
-webrtcICEHostNAT1To1IPs: [127.0.0.1]
+webrtcICEHostNAT1To1IPs: [192.168.1.227]
 # Address of a ICE UDP listener in format host:port.
 # If filled, ICE traffic will pass through a single UDP port,
 # allowing the deployment of the server inside a container or behind a NAT.
@@ -235,7 +235,7 @@
 # allowing the deployment of the server inside a container or behind a NAT.
 # Using this setting forces usage of the TCP protocol, which is not
 # optimal for WebRTC.
-webrtcICETCPMuxAddress: 127.0.0.1:1234
+webrtcICETCPMuxAddress: 192.168.1.227:1234
 
 ###############################################
 # Global settings -> SRT

--
Gitblit v1.9.3