From 84ffb112e0f8fed4003a4fdd46afb257a87c9e34 Mon Sep 17 00:00:00 2001
From: zhaowenyu <35589726@qq.com>
Date: Thu, 27 Nov 2025 13:27:17 +0800
Subject: [PATCH] Merge branch 'dev' of http://59.110.226.79:18000/r/uav/ard-uav-server into dev

---
 ard-vtdu/src/main/java/com/ard/vtdu/config/MediamtxConfig.java                          |    3 +
 ard-device/src/main/java/com/ard/device/channel/service/impl/ArdChannelServiceImpl.java |   27 +++++++++----
 ard-vtdu/src/main/java/com/ard/vtdu/service/impl/ArdArdMediaServiceImpl.java            |   25 ++++++++----
 ard-sample/src/main/java/com/ard/sample/manage/service/impl/LiveStreamServiceImpl.java  |   20 +++++++---
 ard-admin/src/main/resources/application-prod.yml                                       |    3 +
 5 files changed, 54 insertions(+), 24 deletions(-)

diff --git a/ard-admin/src/main/resources/application-prod.yml b/ard-admin/src/main/resources/application-prod.yml
index ddf5c35..be98aff 100644
--- a/ard-admin/src/main/resources/application-prod.yml
+++ b/ard-admin/src/main/resources/application-prod.yml
@@ -57,6 +57,9 @@
   apiHost: 192.168.1.3
   playHost: 192.168.1.3
   https: true
+  rtmpPort: 1935
+  rtspPort: 8554
+  webrtcPort: 8889
 
 # mqtt配置
 mqtt:
diff --git a/ard-device/src/main/java/com/ard/device/channel/service/impl/ArdChannelServiceImpl.java b/ard-device/src/main/java/com/ard/device/channel/service/impl/ArdChannelServiceImpl.java
index 9a46d7f..2c9f997 100644
--- a/ard-device/src/main/java/com/ard/device/channel/service/impl/ArdChannelServiceImpl.java
+++ b/ard-device/src/main/java/com/ard/device/channel/service/impl/ArdChannelServiceImpl.java
@@ -13,6 +13,7 @@
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Service;
+
 import javax.annotation.Resource;
 import java.util.*;
 import java.util.stream.Collectors;
@@ -34,6 +35,7 @@
     private IArdVtduService ardVtduService;
     @Resource
     private MediamtxConfig mediamtxConfig;
+
     /**
      * 查询通道管理
      *
@@ -105,12 +107,13 @@
      * 清空通道
      *
      * @author 刘苏义
-     * @date   2024/8/10 11:18
+     * @date 2024/8/10 11:18
      */
     @Override
-    public int clearArdChannel(){
+    public int clearArdChannel() {
         return ardChannelMapper.clearArdChannel();
     }
+
     /**
      * 删除通道管理信息
      *
@@ -121,6 +124,7 @@
     public int deleteArdChannelByDeviceId(String deviceId) {
         return ardChannelMapper.deleteArdChannelByDeviceId(deviceId);
     }
+
     /**
      * 校验相机通道是否唯一
      *
@@ -130,8 +134,7 @@
     @Override
     public boolean checkArdChannelUnique(ArdChannel channel) {
         ArdChannel info = ardChannelMapper.checkArdChannelUnique(channel);
-        if (info != null && !Objects.equals(info.getId(), channel.getId()))
-        {
+        if (info != null && !Objects.equals(info.getId(), channel.getId())) {
             return UserConstants.NOT_UNIQUE;
         }
         return UserConstants.UNIQUE;
@@ -143,7 +146,7 @@
         log.debug("定时同步Vtdu任务");
         List<ArdChannel> channels = this.selectArdChannelList(new ArdChannel());
         if (channels == null || channels.isEmpty()) {
-           // log.warn("没有获取到通道数据,退出同步");
+            // log.warn("没有获取到通道数据,退出同步");
             return;
         }
         List<ArdVtdu> ardVtduList = ardVtduService.selectArdVtduList(new ArdVtdu());
@@ -156,10 +159,16 @@
             String name = channel.getDeviceId() + "_" + channel.getChanNo();  // 生成媒体表的 name
             String cameraId = channel.getDeviceId();  // cameraId 就是通道的 deviceId
             String rtspSourceUrl = getRtspSource(channel);
-            String rtspUrl = "rtsp://" + mediamtxConfig.getPlayHost() + ":8554" + "/" + name;  // 拼接 webrtcUrl
-            String rtmpUrl = "rtmp://" + mediamtxConfig.getPlayHost() + ":1935" + "/" + name;  // 拼接 webrtcUrl
+            String rtspUrl =
+                    "rtsp://" + mediamtxConfig.getPlayHost() + ":" + mediamtxConfig.getRtspPort() + "/" + name;  //
+            // 拼接 webrtcUrl
+            String rtmpUrl =
+                    "rtmp://" + mediamtxConfig.getPlayHost() + ":" + mediamtxConfig.getRtmpPort() + "/" + name;  // 拼接
+            // webrtcUrl
             String protocol = mediamtxConfig.isHttps() ? "https://" : "http://";
-            String webrtcUrl = protocol + mediamtxConfig.getPlayHost() + ":8889" + "/" + name;  // 拼接 webrtcUrl
+            String webrtcUrl =
+                    protocol + mediamtxConfig.getPlayHost() + ":" + mediamtxConfig.getWebrtcPort() + "/" + name;
+            // 拼接 webrtcUrl
 
             // 先检查媒体表是否已有此记录
             Optional<ArdVtdu> existingMedia = ardVtduList.stream()
@@ -212,7 +221,7 @@
     // 根据通道信息获取rtsp源地址
     private String getRtspSource(ArdChannel channel) {
         String rtspSource = "";
-        ArdCamera ardCamera =ardCameraService.selectArdCameraById(channel.getDeviceId());
+        ArdCamera ardCamera = ardCameraService.selectArdCameraById(channel.getDeviceId());
         if (ardCamera != null) {
             switch (ardCamera.getFactory()) {
                 case "1":
diff --git a/ard-sample/src/main/java/com/ard/sample/manage/service/impl/LiveStreamServiceImpl.java b/ard-sample/src/main/java/com/ard/sample/manage/service/impl/LiveStreamServiceImpl.java
index 9a0aec7..7133276 100644
--- a/ard-sample/src/main/java/com/ard/sample/manage/service/impl/LiveStreamServiceImpl.java
+++ b/ard-sample/src/main/java/com/ard/sample/manage/service/impl/LiveStreamServiceImpl.java
@@ -81,7 +81,7 @@
     @Override
     public void saveLiveCapacity(LiveCapacityReceiver liveCapacityReceiver, Long timestamp) {
         // Solve timing problems
-        if(liveCapacityReceiver==null){
+        if (liveCapacityReceiver == null) {
             //2025-10-28 zwy,这里有个空指针异常问题,如果liveCapacityReceiver为空,则不应该执行下面的代码。
             //机场设备在刚开机时,发送的state状态时,直播能力前三次发送的是空,可能是由于刚开机,等待各设备开机,第四次为正常数据。
             return;
@@ -100,7 +100,8 @@
 
     @Override
     public ResponseResult liveStart(LiveTypeDTO liveParam) {
-        String rtmpPublishUrl = "rtmp://" + mediamtxConfig.getApiHost() + ":1935/" + liveParam.getVideoId();
+        String rtmpPublishUrl =
+                "rtmp://" + mediamtxConfig.getApiHost() + ":" + mediamtxConfig.getRtmpPort() + "/" + liveParam.getVideoId();
         liveParam.setUrl(rtmpPublishUrl);
         // Check if this lens is available live.
         ResponseResult responseResult = this.checkBeforeLive(liveParam.getVideoId());
@@ -125,13 +126,20 @@
             case RTMP:
                 String name = liveParam.getVideoId();
                 // 拼接地址
-                String rtspUrl = "rtsp://" + mediamtxConfig.getPlayHost() + ":8554" + "/" + name;  // 拼接 webrtcUrl
-                String rtmpUrl = "rtmp://" + mediamtxConfig.getPlayHost() + ":1935" + "/" + name;  // 拼接 webrtcUrl
+                String rtspUrl =
+                        "rtsp://" + mediamtxConfig.getPlayHost() + ":" + mediamtxConfig.getRtspPort() + "/" + name;  //
+                // 拼接 webrtcUrl
+                String rtmpUrl =
+                        "rtmp://" + mediamtxConfig.getPlayHost() + ":" + mediamtxConfig.getRtmpPort() + "/" + name;  //
+                // 拼接 webrtcUrl
                 String protocol = mediamtxConfig.isHttps() ? "https://" : "http://";
-                String webrtcUrl = protocol + mediamtxConfig.getPlayHost() + ":8889" + "/" + name;  // 拼接 webrtcUrl
+                String webrtcUrl =
+                        protocol + mediamtxConfig.getPlayHost() + ":" + mediamtxConfig.getWebrtcPort() + "/" + name;  // 拼接
+                // webrtcUrl
 
                 // 如果没有,插入新的记录
-                ArdVtdu vtdu = ArdVtdu.builder().name(name).rtspSource("publisher").rtspUrl(rtspUrl).rtmpUrl(rtmpUrl).webrtcUrl(webrtcUrl).build();
+                ArdVtdu vtdu =
+                        ArdVtdu.builder().name(name).rtspSource("publisher").rtspUrl(rtspUrl).rtmpUrl(rtmpUrl).webrtcUrl(webrtcUrl).build();
                 int i = ardVtduService.insertArdVtdu(vtdu);  // 保存到媒体表
                 if (i > 0) {
                     live.setRtmpUrl(rtmpUrl);
diff --git a/ard-vtdu/src/main/java/com/ard/vtdu/config/MediamtxConfig.java b/ard-vtdu/src/main/java/com/ard/vtdu/config/MediamtxConfig.java
index b4b476e..fd39058 100644
--- a/ard-vtdu/src/main/java/com/ard/vtdu/config/MediamtxConfig.java
+++ b/ard-vtdu/src/main/java/com/ard/vtdu/config/MediamtxConfig.java
@@ -17,4 +17,7 @@
     private String apiHost;
     private String playHost;
     private boolean isHttps;
+    private Integer rtmpPort;
+    private Integer rtspPort;
+    private Integer webrtcPort;
 }
diff --git a/ard-vtdu/src/main/java/com/ard/vtdu/service/impl/ArdArdMediaServiceImpl.java b/ard-vtdu/src/main/java/com/ard/vtdu/service/impl/ArdArdMediaServiceImpl.java
index d68a004..c4e181f 100644
--- a/ard-vtdu/src/main/java/com/ard/vtdu/service/impl/ArdArdMediaServiceImpl.java
+++ b/ard-vtdu/src/main/java/com/ard/vtdu/service/impl/ArdArdMediaServiceImpl.java
@@ -51,10 +51,13 @@
     @Override
     public ArdVtdu addPath(ArdVtdu ardVtdu) {
         try {
-            String rtspUrl = "rtsp://" + mediamtxConfig.getPlayHost() + ":8554/" + ardVtdu.getName();
-            String rtmpUrl = "rtmp://" + mediamtxConfig.getPlayHost() + ":1935/" + ardVtdu.getName();
+            String rtspUrl =
+                    "rtsp://" + mediamtxConfig.getPlayHost() + ":" + mediamtxConfig.getRtspPort() + "/" + ardVtdu.getName();
+            String rtmpUrl =
+                    "rtmp://" + mediamtxConfig.getPlayHost() + ":" + mediamtxConfig.getRtmpPort() + "/" + ardVtdu.getName();
             String protocol = mediamtxConfig.isHttps() ? "https://" : "http://";
-            String webrtcUrl = protocol + mediamtxConfig.getPlayHost() + ":8889/" + ardVtdu.getName();
+            String webrtcUrl =
+                    protocol + mediamtxConfig.getPlayHost() + ":" + mediamtxConfig.getWebrtcPort() + "/" + ardVtdu.getName();
 
             Conf conf = new Conf();
             conf.setSource(ardVtdu.getRtspSource());
@@ -82,10 +85,13 @@
     @Override
     public ArdVtdu editPath(ArdVtdu ardVtdu) {
         try {
-            String rtspUrl = "rtsp://" + mediamtxConfig.getPlayHost() + ":8554/" + ardVtdu.getName();
-            String rtmpUrl = "rtmp://" + mediamtxConfig.getPlayHost() + ":1935/" + ardVtdu.getName();
+            String rtspUrl =
+                    "rtsp://" + mediamtxConfig.getPlayHost() + ":" + mediamtxConfig.getRtspPort() + "/" + ardVtdu.getName();
+            String rtmpUrl =
+                    "rtmp://" + mediamtxConfig.getPlayHost() + ":" + mediamtxConfig.getRtmpPort() + "/" + ardVtdu.getName();
             String protocol = mediamtxConfig.isHttps() ? "https://" : "http://";
-            String webrtcUrl = protocol + mediamtxConfig.getPlayHost() + ":8889/" + ardVtdu.getName();
+            String webrtcUrl =
+                    protocol + mediamtxConfig.getPlayHost() + ":" + mediamtxConfig.getWebrtcPort() + "/" + ardVtdu.getName();
 
             Conf conf = new Conf();
             conf.setSource(ardVtdu.getRtspSource());
@@ -199,14 +205,15 @@
             //源
             info.setRtspSource(conf.getSource());
             //RTMP播放地址
-            String rtmpUrl = "rtmp://" + mediamtxConfig.getPlayHost() + ":1935/" + name;
+            String rtmpUrl = "rtmp://" + mediamtxConfig.getPlayHost() + ":" + mediamtxConfig.getRtmpPort() + "/" + name;
             info.setRtmpUrl(rtmpUrl);
             //RTSP播放地址
-            String rtspUrl = "rtsp://" + mediamtxConfig.getPlayHost() + ":8554/" + name;
+            String rtspUrl = "rtsp://" + mediamtxConfig.getPlayHost() + ":" + mediamtxConfig.getRtspPort() + "/" + name;
             info.setRtspUrl(rtspUrl);
             //WEBRTC播放地址
             String protocol = mediamtxConfig.isHttps() ? "https://" : "http://";
-            String webrtcUrl = protocol + mediamtxConfig.getPlayHost() + ":8889/" + name;
+            String webrtcUrl =
+                    protocol + mediamtxConfig.getPlayHost() + ":" + mediamtxConfig.getWebrtcPort() + "/" + name;
             info.setWebrtcUrl(webrtcUrl);
 
             //上行流量

--
Gitblit v1.9.3