From 2fa66c208202f420a5f001cf0d67e5aa1bf94578 Mon Sep 17 00:00:00 2001
From: aijinhui <aijinhui>
Date: 星期四, 07 九月 2023 16:53:39 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 ard-work/src/main/resources/templates/test.html                                           |   65 +++++++---
 ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/SdkTask.java                             |    2 
 ard-work/src/main/java/com/ruoyi/device/camera/domain/CameraCmd.java                      |    3 
 ard-work/src/main/java/com/ruoyi/inspect/service/impl/InspectionTaskManager.java          |    2 
 ard-work/src/main/resources/templates/preview.html                                        |    2 
 ard-work/src/main/java/com/ruoyi/alarm/global/service/impl/QueueTaskExecutor.java         |    2 
 ard-work/src/main/java/com/ruoyi/alarm/global/service/impl/GlobalAlarmServiceImpl.java    |   10 +
 ard-work/src/main/java/com/ruoyi/media/service/impl/MediaServiceImpl.java                 |    3 
 ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java     |  110 +++++++++--------
 ard-work/src/main/java/com/ruoyi/inspect/service/impl/ArdVideoInspectTaskServiceImpl.java |    6 
 lib/webrtc/webrtc-streamer.exe                                                            |    0 
 ard-work/src/main/java/com/ruoyi/device/camera/service/impl/ArdCamerasServiceImpl.java    |   44 +++++--
 lib/mediamtx/mediamtx.yml                                                                 |   77 ++++++------
 13 files changed, 189 insertions(+), 137 deletions(-)

diff --git a/ard-work/src/main/java/com/ruoyi/alarm/global/service/impl/GlobalAlarmServiceImpl.java b/ard-work/src/main/java/com/ruoyi/alarm/global/service/impl/GlobalAlarmServiceImpl.java
index 0af7c58..b6c55f2 100644
--- a/ard-work/src/main/java/com/ruoyi/alarm/global/service/impl/GlobalAlarmServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/alarm/global/service/impl/GlobalAlarmServiceImpl.java
@@ -1025,9 +1025,13 @@
         //鑾峰彇闆疯揪鎵�鍦ㄥ涓婄殑澶у厜鐢�
         String cameraIdWithTower = ardEquipRadarMapper.getCameraByRadar(radarId);
         if (StringUtils.isNotNull(cameraIdWithTower) && StringUtils.isNotEmpty(cameraIdWithTower)) {
-            log.info("鑾峰彇鍒伴浄杈惧涓婄殑鍏夌數:" + cameraIdWithTower);
+            log.debug("鑾峰彇鍒伴浄杈惧涓婄殑鍏夌數:" + cameraIdWithTower);
             //濡傛灉闆疯揪濉斾笂鏈夊厜鐢�
             messagesEnqueued(cameraIdWithTower, alarmId, alarmType, createTime, 1, 1, coordinate);
+        }
+        else
+        {
+            log.debug("鏈幏鍙栧埌闆疯揪濉斾笂鐨勫厜鐢�");
         }
         //鑾峰彇鎶ヨ鐐瑰叧鑱旂殑澶у厜鐢�
         ArdAlarmpointsWell ardAlarmpointsWell = ardAlarmpointsWellMapper.selectArdAlarmpointsWellByWellId(alarmpointName);
@@ -1040,6 +1044,10 @@
             //濡傛灉鎶ヨ鐐瑰叧鑱斾簡鍏夌數
             messagesEnqueued(cameraId, alarmId, alarmType, createTime, 1, 2, coordinate);
         }
+        else
+        {
+            log.debug("鏈幏鍙栧埌鎶ヨ鐐瑰叧鑱旂殑鍏夌數");
+        }
     }
 
 
diff --git a/ard-work/src/main/java/com/ruoyi/alarm/global/service/impl/QueueTaskExecutor.java b/ard-work/src/main/java/com/ruoyi/alarm/global/service/impl/QueueTaskExecutor.java
index 2dceaa2..8b0eb56 100644
--- a/ard-work/src/main/java/com/ruoyi/alarm/global/service/impl/QueueTaskExecutor.java
+++ b/ard-work/src/main/java/com/ruoyi/alarm/global/service/impl/QueueTaskExecutor.java
@@ -53,7 +53,7 @@
         try {
             CameraCmd cmd = new CameraCmd();
             cmd.setCameraId(guideTask.getCameraId());
-            cmd.setChannelNum(guideTask.getChanNum());
+            cmd.setChanNo(guideTask.getChanNum());
             cmd.setTargetPosition(guideTask.getTargetPosition());
             cmd.setOperator(guideTask.getAlarmType());
             cmd.setExpired(30);
diff --git a/ard-work/src/main/java/com/ruoyi/device/camera/domain/CameraCmd.java b/ard-work/src/main/java/com/ruoyi/device/camera/domain/CameraCmd.java
index 4ec8ce2..ad30ca7 100644
--- a/ard-work/src/main/java/com/ruoyi/device/camera/domain/CameraCmd.java
+++ b/ard-work/src/main/java/com/ruoyi/device/camera/domain/CameraCmd.java
@@ -2,6 +2,7 @@
 
 import io.swagger.annotations.ApiModel;
 import lombok.Data;
+import org.springframework.boot.context.properties.bind.DefaultValue;
 
 import java.util.Map;
 
@@ -13,7 +14,7 @@
     /*鐩告満ID*/
     String cameraId;
     /*鐩告満閫氶亾鍙�*/
-    Integer channelNum;
+    Integer chanNo;
     /*浜戝彴浠g爜*/
     Integer code;
     /*浜戝彴閫熷害*/
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 e79c3ec..9bfeeb1 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
@@ -86,7 +86,18 @@
     @Override
     @DataScope(deptAlias = "d", userAlias = "u")
     public List<ArdCameras> selectArdCamerasList(ArdCameras ardCameras) {
-        return ardCamerasMapper.selectArdCamerasList(ardCameras);
+        List<ArdCameras> ardCamerasList = ardCamerasMapper.selectArdCamerasList(ardCameras);
+        if (ardCamerasList.size() > 0) {
+            for (ArdCameras camera : ardCamerasList) {
+                ArdChannel ardChannel = new ArdChannel();
+                ardChannel.setDeviceId(camera.getId());
+                List<ArdChannel> ardChannels = ardChannelMapper.selectArdChannelList(ardChannel);
+                if (ardChannels != null) {
+                    camera.setChannelList(ardChannels);
+                }
+            }
+        }
+        return ardCamerasList;
     }
 
     /**
@@ -216,11 +227,10 @@
         }
         if (ardCameras.size() > 0) {
             for (ArdCameras camera : ardCameras) {
-                ArdChannel ardChannel=new ArdChannel();
+                ArdChannel ardChannel = new ArdChannel();
                 ardChannel.setDeviceId(camera.getId());
                 List<ArdChannel> ardChannels = ardChannelMapper.selectArdChannelList(ardChannel);
-                if(ardChannels!=null)
-                {
+                if (ardChannels != null) {
                     camera.setChannelList(ardChannels);
                 }
                 Map<String, Object> cameraMap = ArdTool.convertEntityToMap(camera);
@@ -268,7 +278,13 @@
                     camera.setChanNo(ArdTool.getChannelBydayNightTime(dayNightTime));
                     ardCameras.put(distance, camera);
                 }
-
+                //鑾峰彇閫氶亾鍒楄〃
+                ArdChannel ardChannel = new ArdChannel();
+                ardChannel.setDeviceId(camera.getId());
+                List<ArdChannel> ardChannels = ardChannelMapper.selectArdChannelList(ardChannel);
+                if (ardChannels != null) {
+                    camera.setChannelList(ardChannels);
+                }
             }
             return ardCameras;
         } catch (Exception ex) {
@@ -285,7 +301,7 @@
     @Override
     public List<ArdCameras> getNearCameras(SchedulingParam param) {
         try {
-            Long deptId=SecurityUtils.getLoginUser().getUser().getDeptId();
+            Long deptId = SecurityUtils.getLoginUser().getUser().getDeptId();
             Double longitude = param.getLongitude();
             Double latitude = param.getLatitude();
             if (longitude == null && latitude == null) {
@@ -299,7 +315,7 @@
             }
             String dayNightTime = redisCache.getCacheObject("sys_config:dayNightTime");
             //鑾峰彇鎵�鏈夊厜鐢�(鎸夐儴闂�)
-            ArdCameras cameras= new ArdCameras();
+            ArdCameras cameras = new ArdCameras();
             cameras.setDeptId(deptId);
             List<ArdCameras> ardCamerasList = ardCamerasMapper.selectArdCamerasList(cameras);
             //缁熻鎵�鏈夊厜鐢靛彲瑙嗚寖鍥村唴涓庢姤璀︾偣鐨勮窛绂�
@@ -312,7 +328,7 @@
                 double distance = GisUtil.getDistance(new double[]{longitude, latitude}, camPosition);
                 if (distance <= radius) {
                     /*鑾峰彇閫氶亾鍒楄〃*/
-                    ArdChannel ardChannel=new ArdChannel();
+                    ArdChannel ardChannel = new ArdChannel();
                     ardChannel.setDeviceId(camera.getId());
                     List<ArdChannel> ardChannels = ardChannelMapper.selectArdChannelList(ardChannel);
                     camera.setChannelList(ardChannels);
@@ -329,6 +345,7 @@
         }
         return null;
     }
+
     /**
      * 鑾峰彇鐩戞帶鍦堝唴鎵�鏈夊湪绾垮厜鐢�
      * 鍒樿嫃涔�
@@ -337,16 +354,15 @@
     @Override
     public List<ArdCameras> getNearCamerasWithPolygon(SchedulingParam param) {
         try {
-            Long deptId=SecurityUtils.getLoginUser().getUser().getDeptId();
+            Long deptId = SecurityUtils.getLoginUser().getUser().getDeptId();
             List<Point> partitionLocation = param.getPartitionLocation();
-            if(partitionLocation==null)
-            {
+            if (partitionLocation == null) {
                 log.debug("澶氳竟褰㈠潗鏍囬泦鍚堜负绌�");
                 return null;
             }
             String dayNightTime = redisCache.getCacheObject("sys_config:dayNightTime");
             //鑾峰彇鎵�鏈夊厜鐢�(鎸夐儴闂�)
-            ArdCameras cameras= new ArdCameras();
+            ArdCameras cameras = new ArdCameras();
             cameras.setDeptId(deptId);
             List<ArdCameras> ardCamerasList = ardCamerasMapper.selectArdCamerasList(cameras);
             List<ArdCameras> ardCameras = new ArrayList<>();
@@ -355,11 +371,11 @@
                     continue;
                 }
                 /*鍒ゆ柇鍧愭爣鏄惁鍦ㄥ杈瑰舰鑼冨洿鍐�*/
-                Point camPosition=new Point(camera.getLongitude(),camera.getLatitude());
+                Point camPosition = new Point(camera.getLongitude(), camera.getLatitude());
                 boolean inPolygon = GisUtil.isInPolygon(camPosition, partitionLocation);
                 if (inPolygon) {
                     /*鑾峰彇閫氶亾鍒楄〃*/
-                    ArdChannel ardChannel=new ArdChannel();
+                    ArdChannel ardChannel = new ArdChannel();
                     ardChannel.setDeviceId(camera.getId());
                     List<ArdChannel> ardChannels = ardChannelMapper.selectArdChannelList(ardChannel);
                     camera.setChannelList(ardChannels);
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 d03fb83..12c8cc8 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
@@ -262,7 +262,7 @@
     public boolean pTZControlWithSpeed(CameraCmd cmd) {
         String cameraId = cmd.getCameraId();
         boolean enable = cmd.isEnable();
-        Integer channelNum = cmd.getChannelNum();
+        Integer channelNum = cmd.getChanNo();
         Integer speed = cmd.getSpeed();
         Integer code = cmd.getCode();
         if (!GlobalVariable.loginMap.containsKey(cameraId)) {
@@ -348,23 +348,31 @@
     @SdkOperate
     public boolean setFocusPos(CameraCmd cmd) {
         String cameraId = cmd.getCameraId();
-        Integer channelNum = cmd.getChannelNum();
+        Integer channelNum = cmd.getChanNo();
         Integer dwFocusPos = cmd.getDwFocusPos();
         if (!GlobalVariable.loginMap.containsKey(cameraId)) {
             return false;
         }
+        // 鑾峰彇鍙傛暟
         Integer userId = GlobalVariable.loginMap.get(cameraId);
-
-        NET_DVR_FOCUSMODE_CFG focusmodeCfg = new NET_DVR_FOCUSMODE_CFG();
-        Pointer point = focusmodeCfg.getPointer();
-        IntByReference ibrBytesReturned = new IntByReference(0);
-        focusmodeCfg.dwFocusPos = dwFocusPos;
-        boolean bool = hCNetSDK.NET_DVR_GetDVRConfig(userId, NET_DVR_GET_FOCUSMODECFG, channelNum, point, focusmodeCfg.size(), ibrBytesReturned);
+        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;
+        struStdCfg.read();
+        IntByReference lchannel = new IntByReference(channelNum);
+        struStdCfg.lpInBuffer= struGisInfo.getPointer();
+        struStdCfg.lpCondBuffer = lchannel.getPointer();
+        struStdCfg.dwCondSize = 4;
+        struStdCfg.dwInSize = struGisInfo.size();
+        struStdCfg.write();//璁剧疆鍓嶄箣鍓嶈write()
+        boolean bool = hCNetSDK.NET_DVR_SetSTDConfig(userId, NET_DVR_GET_GISINFO, struStdCfg);
         if (!bool) {
             int code = hCNetSDK.NET_DVR_GetLastError();
-            log.error("璁剧疆鑱氱劍鍊煎け璐�,璇风◢鍚庨噸璇�" + code);
+            log.error("璁剧疆GIS淇℃伅鏁版嵁澶辫触,璇风◢鍚庨噸璇�" + code);
+            return false;
+        } else {
+            return true;
         }
-        return bool;
     }
 
     /**
@@ -375,31 +383,31 @@
     @Override
     public Map<String, Object> getFocusPos(CameraCmd cmd) {
         String cameraId = cmd.getCameraId();
-        Integer channelNum = cmd.getChannelNum();
-
+        Integer channelNum = cmd.getChanNo();
         if (!GlobalVariable.loginMap.containsKey(cameraId)) {
             return new HashMap<>();
         }
+        // 鑾峰彇鍙傛暟
         Integer userId = GlobalVariable.loginMap.get(cameraId);
-
-        NET_DVR_FOCUSMODE_CFG focusmodeCfg = new NET_DVR_FOCUSMODE_CFG();
-        Pointer point = focusmodeCfg.getPointer();
-        IntByReference ibrBytesReturned = new IntByReference(0);
-        focusmodeCfg.byFocusMode = 1;
-        focusmodeCfg.byAutoFocusMode = 0;
-        focusmodeCfg.write();
-        boolean bool = hCNetSDK.NET_DVR_GetDVRConfig(userId, NET_DVR_GET_FOCUSMODECFG, channelNum, point, focusmodeCfg.size(), ibrBytesReturned);
-        if (bool) {
-            focusmodeCfg.read();
-            Map<String, Object> map = new HashMap<>();
-            map.put("dwFocusPos", focusmodeCfg.dwFocusPos);
-            map.put("byFocusDefinitionDisplay ", focusmodeCfg.byFocusDefinitionDisplay);
-            map.put("dwRelativeFocusPos", focusmodeCfg.dwRelativeFocusPos);
-            return map;
-        } else {
+        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();
+        IntByReference lchannel = new IntByReference(channelNum);
+        struStdCfg.lpCondBuffer = lchannel.getPointer();
+        struStdCfg.dwCondSize = 4;
+        struStdCfg.lpOutBuffer = struGisInfo.getPointer();
+        struStdCfg.dwOutSize = struGisInfo.size();
+        struStdCfg.write();//璁剧疆鍓嶄箣鍓嶈write()
+        boolean bool = hCNetSDK.NET_DVR_GetSTDConfig(userId, NET_DVR_GET_GISINFO, struStdCfg);
+        if (!bool) {
             int code = hCNetSDK.NET_DVR_GetLastError();
-            log.debug("鑾峰彇鑱氱劍鍊煎け璐�,璇风◢鍚庨噸璇�" + code);
+            log.error("鑾峰彇GIS淇℃伅鏁版嵁澶辫触,璇风◢鍚庨噸璇�" + code);
             return new HashMap<>();
+        } else {
+            struGisInfo.read();
+            Map<String, Object> map = new HashMap<>();
+            map.put("dwFocus",struGisInfo.struPtzPosEx.dwFocus);
+            return map;
         }
     }
 
@@ -412,7 +420,7 @@
     @SdkOperate
     public boolean setPreset(CameraCmd cmd) {
         String cameraId = cmd.getCameraId();
-        Integer channelNum = cmd.getChannelNum();
+        Integer channelNum = cmd.getChanNo();
         Integer PresetIndex = cmd.getPresetIndex();
         if (!GlobalVariable.loginMap.containsKey(cameraId)) {
             return false;
@@ -435,7 +443,7 @@
     @SdkOperate
     public boolean gotoPreset(CameraCmd cmd) {
         String cameraId = cmd.getCameraId();
-        Integer channelNum = cmd.getChannelNum();
+        Integer channelNum = cmd.getChanNo();
         Integer PresetIndex = cmd.getPresetIndex();
         if (!GlobalVariable.loginMap.containsKey(cameraId)) {
             return false;
@@ -460,7 +468,7 @@
     @Override
     public String getVideoResolution(CameraCmd cmd) {
         String cameraId = cmd.getCameraId();
-        Integer channelNum = cmd.getChannelNum();
+        Integer channelNum = cmd.getChanNo();
         if (!GlobalVariable.loginMap.containsKey(cameraId)) {
             return " ";
         }
@@ -565,7 +573,7 @@
     @Override
     public Map<String, Object> getPtz(CameraCmd cmd) {
         String cameraId = cmd.getCameraId();
-        Integer channelNum = cmd.getChannelNum();
+        Integer channelNum = cmd.getChanNo();
         if (!GlobalVariable.loginMap.containsKey(cameraId)) {
             return null;
         }
@@ -616,7 +624,7 @@
     @SdkOperate
     public boolean setPtz(CameraCmd cmd) {
         String cameraId = cmd.getCameraId();
-        Integer channelNum = cmd.getChannelNum();
+        Integer channelNum = cmd.getChanNo();
         Map<String, Double> ptz = cmd.getPtzMap();
         if (!GlobalVariable.loginMap.containsKey(cameraId)) {
             return false;
@@ -649,7 +657,7 @@
     @SdkOperate
     public boolean guideTargetPosition(CameraCmd cmd) {
         String cameraId = cmd.getCameraId();
-        Integer channelNum = cmd.getChannelNum();
+        Integer channelNum = cmd.getChanNo();
         if (!GlobalVariable.loginMap.containsKey(cameraId)) {
             return false;
         }
@@ -736,7 +744,7 @@
     @Override
     public int getPTZLockInfo(CameraCmd cmd) {
         String cameraId = cmd.getCameraId();
-        Integer channelNum = cmd.getChannelNum();
+        Integer channelNum = cmd.getChanNo();
         if (!GlobalVariable.loginMap.containsKey(cameraId)) {
             return -1;
         }
@@ -768,7 +776,7 @@
     @SdkOperate
     public boolean setZeroPtz(CameraCmd cmd) {
         String cameraId = cmd.getCameraId();
-        Integer channelNum = cmd.getChannelNum();
+        Integer channelNum = cmd.getChanNo();
         if (!GlobalVariable.loginMap.containsKey(cameraId)) {
             return false;
         }
@@ -800,7 +808,7 @@
     @Override
     public Map<String, Object> getPtzScope(CameraCmd cmd) {
         String cameraId = cmd.getCameraId();
-        Integer channelNum = cmd.getChannelNum();
+        Integer channelNum = cmd.getChanNo();
         if (!GlobalVariable.loginMap.containsKey(cameraId)) {
             return new HashMap<>();
         }
@@ -849,7 +857,7 @@
     public boolean controlDefogcfg(CameraCmd cmd) {
         String cameraId = cmd.getCameraId();
         boolean enable = cmd.isEnable();
-        Integer channelNum = cmd.getChannelNum();
+        Integer channelNum = cmd.getChanNo();
         if (!GlobalVariable.loginMap.containsKey(cameraId)) {
             return false;
         }
@@ -895,7 +903,7 @@
     public boolean controlInfrarecfg(CameraCmd cmd) {
         String cameraId = cmd.getCameraId();
         boolean enable = cmd.isEnable();
-        Integer channelNum = cmd.getChannelNum();
+        Integer channelNum = cmd.getChanNo();
         if (!GlobalVariable.loginMap.containsKey(cameraId)) {
             return false;
         }
@@ -943,7 +951,7 @@
     public boolean controlFocusMode(CameraCmd cmd) {
         String cameraId = cmd.getCameraId();
         boolean enable = cmd.isEnable();
-        Integer channelNum = cmd.getChannelNum();
+        Integer channelNum = cmd.getChanNo();
         if (!GlobalVariable.loginMap.containsKey(cameraId)) {
             return false;
         }
@@ -986,7 +994,7 @@
      */
     public String getFocusMode(CameraCmd cmd) {
         String cameraId = cmd.getCameraId();
-        Integer channelNum = cmd.getChannelNum();
+        Integer channelNum = cmd.getChanNo();
         if (!GlobalVariable.loginMap.containsKey(cameraId)) {
             return "";
         }
@@ -1016,7 +1024,7 @@
     public boolean controlPTHeateRpwron(CameraCmd cmd) {
         String cameraId = cmd.getCameraId();
         boolean enable = cmd.isEnable();
-        Integer channelNum = cmd.getChannelNum();
+        Integer channelNum = cmd.getChanNo();
         if (!GlobalVariable.loginMap.containsKey(cameraId)) {
             return false;
         }
@@ -1049,7 +1057,7 @@
     public boolean controlCameraDeicing(CameraCmd cmd) {
         String cameraId = cmd.getCameraId();
         boolean enable = cmd.isEnable();
-        Integer channelNum = cmd.getChannelNum();
+        Integer channelNum = cmd.getChanNo();
         if (!GlobalVariable.loginMap.containsKey(cameraId)) {
             return false;
         }
@@ -1086,7 +1094,7 @@
      */
     public String captureJPEGPicture(CameraCmd cmd) {
         String cameraId = cmd.getCameraId();
-        Integer channelNum = cmd.getChannelNum();
+        Integer channelNum = cmd.getChanNo();
         if (!GlobalVariable.loginMap.containsKey(cameraId)) {
             return "";
         }
@@ -1129,7 +1137,7 @@
     @SdkOperate
     public String picCutCate(CameraCmd cmd) {
         String cameraId = cmd.getCameraId();
-        Integer channelNum = cmd.getChannelNum();
+        Integer channelNum = cmd.getChanNo();
         if (!GlobalVariable.loginMap.containsKey(cameraId)) {
             return "";
         }
@@ -1191,7 +1199,7 @@
     public String record(CameraCmd cmd) {
         try {
             String cameraId = cmd.getCameraId();
-            Integer channelNum = cmd.getChannelNum();
+            Integer channelNum = cmd.getChanNo();
             String path = FileUtils.createFile("D:/recordTemp/" + cameraId + ".mp4");
             boolean enable = cmd.isEnable();
             if (!GlobalVariable.loginMap.containsKey(cameraId)) {
@@ -1253,7 +1261,7 @@
     public void recordStart(CameraCmd cmd) {
         try {
             String cameraId = cmd.getCameraId();
-            Integer channelNum = cmd.getChannelNum();
+            Integer channelNum = cmd.getChanNo();
             String path = FileUtils.createFile("D:/recordTemp/" + cameraId + ".mp4");
             if (!GlobalVariable.loginMap.containsKey(cameraId)) {
                 return;
@@ -1308,7 +1316,7 @@
         String url = "";
         try {
             String cameraId = cmd.getCameraId();
-            Integer channelNum = cmd.getChannelNum();
+            Integer channelNum = cmd.getChanNo();
             String path = FileUtils.createFile("D:/recordTemp/" + cameraId + ".mp4");
             if (!GlobalVariable.loginMap.containsKey(cameraId)) {
                 return "";
@@ -1362,7 +1370,7 @@
     public void recordStopNotToMinio(CameraCmd cmd) {
         try {
             String cameraId = cmd.getCameraId();
-            Integer channelNum = cmd.getChannelNum();
+            Integer channelNum = cmd.getChanNo();
             if (!GlobalVariable.loginMap.containsKey(cameraId)) {
                 return;
             }
@@ -1446,7 +1454,7 @@
     @Override
     public Map<String, Object> getGisInfo(CameraCmd cmd) {
         String cameraId = cmd.getCameraId();
-        Integer channelNum = cmd.getChannelNum();
+        Integer channelNum = cmd.getChanNo();
         if (!GlobalVariable.loginMap.containsKey(cameraId)) {
             return new HashMap<>();
         }
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 0e09344..4ad799a 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
@@ -451,7 +451,7 @@
                     /*鎺у埗鐩告満宸℃*/
                     CameraCmd cmd = new CameraCmd();
                     cmd.setCameraId(cameraId);
-                    cmd.setChannelNum(channel);
+                    cmd.setChanNo(channel);
                     cmd.setTargetPosition(targetPositon);
                     cmd.setOperator("sys_patrol_inspect");
                     cmd.setExpired(step.getRecordingTime() * 60);
@@ -509,7 +509,7 @@
                     /*鎺у埗鐩告満宸℃*/
                     CameraCmd cmd = new CameraCmd();
                     cmd.setCameraId(cameraId);
-                    cmd.setChannelNum(channel);
+                    cmd.setChanNo(channel);
                     cmd.setTargetPosition(targetPositon);
                     cmd.setOperator("sys_patrol_inspect");
                     cmd.setExpired(step.getRecordingTime() * 60);
@@ -548,7 +548,7 @@
                 /*鍋滄褰曞儚*/
                 CameraCmd cmd = new CameraCmd();
                 cmd.setCameraId(cameraId);
-                cmd.setChannelNum(channel);
+                cmd.setChanNo(channel);
                 cmd.setOperator("sys_patrol_inspect");
                 cmd.setRecordBucketName("record");
                 cmd.setRecordObjectName("inspect_" + IdUtils.fastSimpleUUID());
diff --git a/ard-work/src/main/java/com/ruoyi/inspect/service/impl/InspectionTaskManager.java b/ard-work/src/main/java/com/ruoyi/inspect/service/impl/InspectionTaskManager.java
index bf0ff9d..f06e33d 100644
--- a/ard-work/src/main/java/com/ruoyi/inspect/service/impl/InspectionTaskManager.java
+++ b/ard-work/src/main/java/com/ruoyi/inspect/service/impl/InspectionTaskManager.java
@@ -76,7 +76,7 @@
         {   //褰撳墠鐩告満姝e湪褰曞儚锛屽垯鍋滄褰曞儚
             CameraCmd cmd = new CameraCmd();
             cmd.setCameraId(ardVideoInspectTask.getCameraId());
-            cmd.setChannelNum(ardVideoInspectTask.getChannel());
+            cmd.setChanNo(ardVideoInspectTask.getChannel());
             hikClientService.recordStopNotToMinio(cmd);
             GlobalVariable.previewMap.remove(cameraId);
         }
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 e27adb7..5eecbc0 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
@@ -113,6 +113,7 @@
         //-vcodec libx264 //鎸囧畾瑙嗛缂栫爜鍣ㄤ负 libx264锛屼娇鐢� H.264 缂栫爜鏍煎紡杩涜瑙嗛鍘嬬缉
         //-preset ultrafast  //--preset鐨勫弬鏁颁富瑕佽皟鑺傜紪鐮侀�熷害鍜岃川閲忕殑骞宠 锛屾湁ultrafast锛堣浆鐮侀�熷害鏈�蹇紝瑙嗛寰�寰�涔熸渶妯$硦锛夈�乻uperfast銆乿eryfast銆乫aster銆乫ast銆乵edium銆乻low銆乻lower銆乿eryslow銆乸lacebo杩�10涓�夐」锛屼粠蹇埌鎱�
         //-r 25 //璁剧疆杈撳嚭瑙嗛鐨勫抚鐜囦负 25 甯�/绉�
+        //-g 20 //鍏抽敭甯ч棿闅�20
         //-rtsp_transport tcp //杩欎釜閫夐」鍛婅瘔 FFmpeg 浣跨敤 TCP 浣滀负 RTSP 鐨勪紶杈撳崗璁�
         //-threads 4: 鎸囧畾瑕佷娇鐢ㄧ殑绾跨▼鏁颁负 4銆�//杩欏厑璁� FFmpeg 鍦ㄥ鏍稿鐞嗗櫒涓婁娇鐢ㄥ涓嚎绋嬫潵杩涜瑙嗛缂栫爜锛屼互鍔犲揩閫熷害銆�
         // -i //鐢ㄤ簬鎸囧畾杈撳叆濯掍綋鏂囦欢鎴栬緭鍏ユ祦鐨勫湴鍧�
@@ -123,7 +124,7 @@
         //GPU纭В鐮佺紪鐮� -hwaccel cuvid -c:v h264_cuvid  浣跨敤cuda瑙g爜   -c:v h264_nvenc 浣跨敤cuda缂栫爜
         //String cmd = rootPath  + "/lib/mediamtx/" + "ffmpeg -hwaccel cuvid -c:v h264_cuvid  -rtsp_transport udp  -i " + rtspPath + " -c:v h264_nvenc  -r 25 -threads 4  -b:v 2048k -bf 0 -f rtsp rtsp://localhost:$RTSP_PORT/$MTX_PATH";
         if (isCode.equals("1")) {
-            String cmd =  "ffmpeg -rtsp_transport tcp -i " + rtspPath + " -vcodec libx264 -preset:v ultrafast -r 25 -threads 6  -b:v 1024k -f rtsp rtsp://localhost:$RTSP_PORT/$MTX_PATH";
+            String cmd =  "ffmpeg -rtsp_transport tcp -i " + rtspPath + " -vcodec libx264 -preset:v ultrafast -r 25 -g 20 -threads 6  -b:v 2048k -f rtsp rtsp://localhost:$RTSP_PORT/$MTX_PATH";
             if (!softwareDecoding) {
                 cmd =  "ffmpeg -hwaccel cuvid -c:v h264_cuvid  -rtsp_transport tcp  -i " + rtspPath + " -c:v h264_nvenc  -r 25 -threads 6  -b:v 2048k -bf 0 -f rtsp rtsp://localhost:$RTSP_PORT/$MTX_PATH";
             }
diff --git a/ard-work/src/main/resources/templates/preview.html b/ard-work/src/main/resources/templates/preview.html
index 1a57d63..323ed06 100644
--- a/ard-work/src/main/resources/templates/preview.html
+++ b/ard-work/src/main/resources/templates/preview.html
@@ -148,7 +148,7 @@
     }
 
 
-    let mediamtxHost = "192.168.1.12"
+    let mediamtxHost = "192.168.1.227"
     var chanMap = new Map();
     window.onload = function () {
         changeGrid(2, 2);
diff --git a/ard-work/src/main/resources/templates/test.html b/ard-work/src/main/resources/templates/test.html
index 25cbd19..25ea102 100644
--- a/ard-work/src/main/resources/templates/test.html
+++ b/ard-work/src/main/resources/templates/test.html
@@ -308,7 +308,7 @@
 
     $("#setPreset").click(function () {
         cameraId = $('#select option:selected').val();
-        opt = {"cameraId": cameraId, "channelNum": 1, "speed": 8, "presetIndex": 1};
+        opt = {"cameraId": cameraId, "chanNo": 1, "speed": 8, "presetIndex": 1};
         $.ajax({
             headers: {
                 'Accept': 'application/json',
@@ -326,7 +326,7 @@
     })
     $("#gotoPreset").click(function () {
         cameraId = $('#select option:selected').val();
-        opt = {"cameraId": cameraId, "channelNum": 1, "speed": 8, "presetIndex": 1};
+        opt = {"cameraId": cameraId, "chanNo": 1, "speed": 8, "presetIndex": 1};
         $.ajax({
             headers: {
                 'Accept': 'application/json',
@@ -344,7 +344,7 @@
     })
     $("#getPTZ").click(function () {
         cameraId = $('#select option:selected').val();
-        opt = {"cameraId": cameraId, "channelNum": 1};
+        opt = {"cameraId": cameraId, "chanNo": 1};
         $.ajax({
             headers: {
                 'Accept': 'application/json',
@@ -370,7 +370,7 @@
         var z = $('#z').val();
         //瀹氫箟涓�涓甫鏈塎ap瀛楁鐨勫疄浣撳璞�
         var myEntity = {
-            channelNum: 1,
+            chanNo: 1,
             cameraId: cameraId,
             ptzMap: {
                 p: p,
@@ -401,7 +401,7 @@
         var targetP = $('#targetPostion').val();
         //瀹氫箟涓�涓甫鏈塎ap瀛楁鐨勫疄浣撳璞�
         var myEntity = {
-            channelNum: 1,
+            chanNo: 1,
             cameraId: cameraId,
             targetPosition: targetP,
             camPosition: camP,
@@ -424,7 +424,7 @@
     })
     $("#setZeroPTZ").click(function () {
         cameraId = $('#select option:selected').val();
-        opt = {"cameraId": cameraId, "channelNum": 1};
+        opt = {"cameraId": cameraId, "chanNo": 1};
         $.ajax({
             headers: {
                 'Accept': 'application/json',
@@ -442,7 +442,7 @@
     })
     $("#WiperPwron").click(function () {
         cameraId = $('#select option:selected').val();
-        opt = {"cameraId": cameraId, "channelNum": 1, "speed": 8, "enable": true, "code": 16};
+        opt = {"cameraId": cameraId, "chanNo": 1, "speed": 8, "enable": true, "code": 16};
         $.ajax({
             headers: {
                 'Accept': 'application/json',
@@ -461,8 +461,8 @@
     var defogflag = true;
     $("#Defogcfg").click(function () {
         cameraId = $('#select option:selected').val();
-        optOpen = {"cameraId": cameraId, "channelNum": 1, "enable": true};
-        optClose = {"cameraId": cameraId, "channelNum": 1, "enable": false};
+        optOpen = {"cameraId": cameraId, "chanNo": 1, "enable": true};
+        optClose = {"cameraId": cameraId, "chanNo": 1, "enable": false};
         if (defogflag) {
             $(this).text("鍏抽棴閫忛浘");
             defogflag = false;
@@ -503,8 +503,8 @@
     var infrareflag = true;
     $("#Infrarecfg").click(function () {
         cameraId = $('#select option:selected').val();
-        optOpen = {"cameraId": cameraId, "channelNum": 1, "enable": true};
-        optClose = {"cameraId": cameraId, "channelNum": 1, "enable": false};
+        optOpen = {"cameraId": cameraId, "chanNo": 1, "enable": true};
+        optClose = {"cameraId": cameraId, "chanNo": 1, "enable": false};
         if (infrareflag) {
             $(this).text("鍏抽棴绾㈠");
             infrareflag = false;
@@ -545,8 +545,8 @@
     var focusModeflag = true;
     $("#FocusMode").click(function () {
         cameraId = $('#select option:selected').val();
-        optOpen = {"cameraId": cameraId, "channelNum": 1, "enable": true};
-        optClose = {"cameraId": cameraId, "channelNum": 1, "enable": false};
+        optOpen = {"cameraId": cameraId, "chanNo": 1, "enable": true};
+        optClose = {"cameraId": cameraId, "chanNo": 1, "enable": false};
         if (focusModeflag) {
             $(this).text("鑷姩鑱氱劍");
             focusModeflag = false;
@@ -583,11 +583,30 @@
             })
         }
     })
+    $("#getFocusPos").click(function () {
+        cameraId = $('#select option:selected').val();
+        opt = {"cameraId": cameraId, "chanNo": 1};
+        $.ajax({
+                headers: {
+                    'Accept': 'application/json',
+                    'Content-Type': 'application/json',
+                    'Authorization': token
+                },
+                url: "../hik/getFocusPos",
+                type: "post",
+                dataType: "json",
+                data: JSON.stringify(opt),
+                success: function (datas) {
+                    console.log(datas);
+                    $("#focus").val(datas.data.dwFocus);
+                }
+            })
+    })
     var heateRpwronflag = true;
     $("#HeateRpwron").click(function () {
         cameraId = $('#select option:selected').val();
-        optOpen = {"cameraId": cameraId, "channelNum": 1, "enable": true};
-        optClose = {"cameraId": cameraId, "channelNum": 1, "enable": false};
+        optOpen = {"cameraId": cameraId, "chanNo": 1, "enable": true};
+        optClose = {"cameraId": cameraId, "chanNo": 1, "enable": false};
         if (heateRpwronflag) {
             $(this).text("鍏抽棴浜戝彴鍔犵儹");
             heateRpwronflag = false;
@@ -627,8 +646,8 @@
     var CameraDeicingflag = true;
     $("#CameraDeicing").click(function () {
         cameraId = $('#select option:selected').val();
-        optOpen = {"cameraId": cameraId, "channelNum": 1, "enable": true};
-        optClose = {"cameraId": cameraId, "channelNum": 1, "enable": false};
+        optOpen = {"cameraId": cameraId, "chanNo": 1, "enable": true};
+        optClose = {"cameraId": cameraId, "chanNo": 1, "enable": false};
         if (CameraDeicingflag) {
             $(this).text("鍏抽棴闀滃ご鍔犵儹");
             CameraDeicingflag = false;
@@ -666,7 +685,7 @@
     })
     $("#realCutPic").click(function () {
         cameraId = $('#select option:selected').val();
-        opt = {"cameraId": cameraId, "channelNum": 1};
+        opt = {"cameraId": cameraId, "chanNo": 1};
         $.ajax({
             headers: {
                 'Accept': 'application/json',
@@ -685,7 +704,7 @@
     })
     $("#saveCutPic").click(function () {
         cameraId = $('#select option:selected').val();
-        opt = {"cameraId": cameraId, "channelNum": 1};
+        opt = {"cameraId": cameraId, "chanNo": 1};
         $.ajax({
             headers: {
                 'Accept': 'application/json',
@@ -705,8 +724,8 @@
     var recordflag = true;
     $("#record").click(function () {
         cameraId = $('#select option:selected').val();
-        optOpen = {"cameraId": cameraId, "channelNum": 1, "enable": true};
-        optClose = {"cameraId": cameraId, "channelNum": 1, "enable": false};
+        optOpen = {"cameraId": cameraId, "chanNo": 1, "enable": true};
+        optClose = {"cameraId": cameraId, "chanNo": 1, "enable": false};
         if (recordflag) {
             $(this).text("鍋滄褰曞儚");
             recordflag = false;
@@ -749,7 +768,7 @@
     /*浜戝彴鍏叡鏂规硶*/
     function commondMethod(url, code, enable) {
         cameraId = $('#select option:selected').val();
-        opt = {"cameraId": cameraId, "channelNum": 1, "speed": 8, "enable": enable, "code": code};
+        opt = {"cameraId": cameraId, "chanNo": 1, "speed": 8, "enable": enable, "code": code};
         $.ajax({
             headers: {
                 'Accept': 'application/json',
@@ -790,7 +809,7 @@
     //棰勮娴峰悍鐩告満
     function realViewHik(serverip, elem, username, password, ipaddr, port) {
        // webRtcServer = new WebRtcStreamer(elem, "http://" + serverip + ":8000");
-        webRtcServer = new WebRtcStreamer(elem, "http://192.168.1.227:9000");
+        webRtcServer = new WebRtcStreamer(elem, "http://192.168.1.227:8000");
         let rtspUrl = "rtsp://" + username + ":" + password + "@" + ipaddr + ":" + port + "/ch1/main/av_stream";
         let option = "rtptransport=tcp";
         console.log("rtsp鍦板潃锛�" + rtspUrl);
diff --git a/lib/mediamtx/mediamtx.yml b/lib/mediamtx/mediamtx.yml
index 4be3390..9dfc5b5 100644
--- a/lib/mediamtx/mediamtx.yml
+++ b/lib/mediamtx/mediamtx.yml
@@ -1,6 +1,6 @@
 
 ###############################################
-# General parameters
+# General settings
 
 # Sets the verbosity of the program; available values are "error", "warn", "info", "debug".
 logLevel: info
@@ -13,10 +13,10 @@
 readTimeout: 10s
 # Timeout of write operations.
 writeTimeout: 10s
-# Number of read buffers.
-# A higher value allows a wider throughput, a lower value allows to save RAM.
-readBufferCount: 512
-# Maximum size of payload of outgoing UDP packets.
+# Size of the queue of outgoing packets.
+# A higher value allows to increase throughput, a lower value allows to save RAM.
+writeQueueSize: 512
+# Maximum size of outgoing UDP packets.
 # This can be decreased to avoid fragmentation on networks with a low UDP MTU.
 udpMaxPayloadSize: 1472
 
@@ -40,7 +40,7 @@
 # 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
@@ -62,9 +62,9 @@
 runOnConnectRestart: no
 
 ###############################################
-# RTSP parameters
+# RTSP settings
 
-# Enable support for the RTSP protocol.
+# Allow publishing and reading streams with the RTSP protocol.
 rtsp: yes
 # List of enabled RTSP transport protocols.
 # UDP is the most performant, but doesn't work when there's a NAT/firewall between
@@ -102,9 +102,9 @@
 authMethods: [basic]
 
 ###############################################
-# RTMP parameters
+# RTMP settings
 
-# Enable support for the RTMP protocol.
+# Allow publishing and reading streams with the RTMP protocol.
 rtmp: yes
 # Address of the RTMP listener. This is needed only when encryption is "no" or "optional".
 rtmpAddress: :1935
@@ -122,9 +122,9 @@
 rtmpServerCert: server.crt
 
 ###############################################
-# HLS parameters
+# HLS settings
 
-# Enable support for the HLS protocol.
+# Allow reading streams with the HLS protocol.
 hls: no
 # Address of the HLS listener.
 hlsAddress: :8888
@@ -178,9 +178,9 @@
 hlsDirectory: ''
 
 ###############################################
-# WebRTC parameters
+# WebRTC settings
 
-# Enable support for the WebRTC protocol.
+# Allow publishing and reading streams with the WebRTC protocol.
 webrtc: yes
 # Address of the WebRTC listener.
 webrtcAddress: :8889
@@ -206,36 +206,36 @@
   # STUN servers are used to obtain the public IP of server and clients. They are
   # 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. stun:stun.l.google.com:19302
-- url: stun:192.168.1.15:3478
+  # clients is not possible. All traffic is routed through them.
+- 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: ''
   password: ''
 # 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: []
+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.
-webrtcICEUDPMuxAddress:
+webrtcICEUDPMuxAddress: 192.168.1.227:8189
 # Address of a ICE TCP listener in format host:port.
 # If filled, ICE traffic will pass through a single TCP port,
 # allowing the deployment of the server inside a container or behind a NAT.
-# Setting this parameter forces usage of the TCP protocol, which is not
+# Using this setting forces usage of the TCP protocol, which is not
 # optimal for WebRTC.
-webrtcICETCPMuxAddress:
+webrtcICETCPMuxAddress: 192.168.1.227:8189
 
 ###############################################
-# SRT parameters
+# SRT settings
 
-# Enables support for the SRT protocol.
+# Allow publishing and reading streams with the SRT protocol.
 srt: yes
 # Address of the SRT listener.
 srtAddress: :8890
 
 ###############################################
-# Path parameters
+# Path settings
 
 # These settings are path-dependent, and the map key is the name of the path.
 # It's possible to use regular expressions by using a tilde as prefix,
@@ -245,25 +245,24 @@
 # another entry.
 paths:
   all:
+    ###############################################
+    # General path settings
+
     # Source of the stream. This can be:
-    # * publisher -> the stream is published by a RTSP, RTMP, WebRTC or SRT client
+    # * publisher -> the stream is provided by a RTSP, RTMP, WebRTC or SRT client
     # * rtsp://existing-url -> the stream is pulled from another RTSP server / camera
     # * rtsps://existing-url -> the stream is pulled from another RTSP server / camera with RTSPS
     # * rtmp://existing-url -> the stream is pulled from another RTMP server / camera
     # * rtmps://existing-url -> the stream is pulled from another RTMP server / camera with RTMPS
-    # * http://existing-url/stream.m3u8 -> the stream is pulled from another HLS server
-    # * https://existing-url/stream.m3u8 -> the stream is pulled from another HLS server with HTTPS
+    # * http://existing-url/stream.m3u8 -> the stream is pulled from another HLS server / camera
+    # * https://existing-url/stream.m3u8 -> the stream is pulled from another HLS server / camera with HTTPS
     # * udp://ip:port -> the stream is pulled with UDP, by listening on the specified IP and port
-    # * srt://existing-url -> the stream is pulled from another SRT server
-    # * whep://existing-url -> the stream is pulled from another WebRTC server
-    # * wheps://existing-url -> the stream is pulled from another WebRTC server with HTTPS
+    # * srt://existing-url -> the stream is pulled from another SRT server / camera
+    # * whep://existing-url -> the stream is pulled from another WebRTC server / camera
+    # * wheps://existing-url -> the stream is pulled from another WebRTC server / camera with HTTPS
     # * redirect -> the stream is provided by another path or server
     # * rpiCamera -> the stream is provided by a Raspberry Pi Camera
     source: publisher
-
-    ###############################################
-    # General path parameters
-
     # If the source is a URL, and the source certificate is self-signed
     # or invalid, you can provide the fingerprint of the certificate in order to
     # validate it anyway. It can be obtained by running:
@@ -283,7 +282,7 @@
     maxReaders: 0
 
     ###############################################
-    # Authentication path parameters
+    # Authentication path settings
 
     # Username required to publish.
     # SHA256-hashed values can be inserted with the "sha256:" prefix.
@@ -304,7 +303,7 @@
     readIPs: []
 
     ###############################################
-    # Publisher path parameters (when source is "publisher")
+    # Publisher path settings (when source is "publisher")
 
     # allow another client to disconnect the current publisher and publish in its place.
     overridePublisher: yes
@@ -313,7 +312,7 @@
     fallback:
 
     ###############################################
-    # RTSP path parameters (when source is a RTSP or a RTSPS URL)
+    # RTSP path settings (when source is a RTSP or a RTSPS URL)
 
     # protocol used to pull the stream. available values are "automatic", "udp", "multicast", "tcp".
     sourceProtocol: automatic
@@ -333,13 +332,13 @@
     rtspRangeStart:
 
     ###############################################
-    # Redirect path parameters (when source is "redirect")
+    # Redirect path settings (when source is "redirect")
 
     # RTSP URL which clients will be redirected to.
     sourceRedirect:
 
     ###############################################
-    # Raspberry Pi Camera path parameters (when source is "rpiCamera")
+    # Raspberry Pi Camera path settings (when source is "rpiCamera")
 
     # ID of the camera
     rpiCameraCamID: 0
@@ -421,7 +420,7 @@
     rpiCameraTextOverlay: '%Y-%m-%d %H:%M:%S - MediaMTX'
 
     ###############################################
-    # external commands path parameters
+    # External commands path settings
 
     # Command to run when this path is initialized.
     # This can be used to publish a stream and keep it always opened.
diff --git a/lib/webrtc/webrtc-streamer.exe b/lib/webrtc/webrtc-streamer.exe
index 5347950..e957c99 100644
--- a/lib/webrtc/webrtc-streamer.exe
+++ b/lib/webrtc/webrtc-streamer.exe
Binary files differ
diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/SdkTask.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/SdkTask.java
index e477f43..816709f 100644
--- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/SdkTask.java
+++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/SdkTask.java
@@ -51,7 +51,7 @@
                     }
                     CameraCmd cmd = new CameraCmd();
                     cmd.setCameraId(camera.getId());
-                    cmd.setChannelNum(1);
+                    cmd.setChanNo(1);
                     cmd.setOperator(camera.getOperatorId());
                     if (!GlobalVariable.loginMap.containsKey(camera.getId()))//鍙帹閫佺櫥褰曟垚鍔熺殑鐩告満
                     {

--
Gitblit v1.9.3