From a14aa010851dfc7d9957cabda474f32a58be6e82 Mon Sep 17 00:00:00 2001
From: liusuyi <1951119284@qq.com>
Date: Wed, 21 Jan 2026 13:20:50 +0800
Subject: [PATCH] 退出增加事件监听

---
 ard-vtdu/src/main/java/com/ard/vtdu/service/impl/ArdArdMediaServiceImpl.java |   96 ++++++++++++++++++++----------------------------
 1 files changed, 40 insertions(+), 56 deletions(-)

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 60e4aa7..533f3bc 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,23 +51,29 @@
     @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());
+            if(!"publisher".equalsIgnoreCase(conf.getSource())) {
+                conf.setSourceOnDemand(true);
+            }
             conf.setRunOnDemandRestart(false);
             conf.setRunOnDemandCloseAfter("5s");
             conf.setMaxReaders(100);
             conf.setSourceProtocol("tcp");
 
-            if (!checkNameExist(ardVtdu.getName())) {
-                mediaClient.addPath(ardVtdu.getName(), conf);
-            } else {
-                mediaClient.editPath(ardVtdu.getName(), conf);
+            if (checkNameExist(ardVtdu.getName())) {
+                mediaClient.removePath(ardVtdu.getName());
             }
+            mediaClient.addPath(ardVtdu.getName(), conf);
+
             ardVtdu.setCameraId(ardVtdu.getName().split("_")[0]);
             ardVtdu.setRtspUrl(rtspUrl);
             ardVtdu.setRtmpUrl(rtmpUrl);
@@ -82,15 +88,20 @@
     @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());
             conf.setName(ardVtdu.getName());
-            conf.setRunOnDemand("");
+            if(!"publisher".equalsIgnoreCase(conf.getSource())) {
+                conf.setSourceOnDemand(true);
+            }
             conf.setRunOnDemandRestart(false);
             conf.setRunOnDemandCloseAfter("5s");
             conf.setMaxReaders(100);
@@ -196,61 +207,34 @@
             String name = item.getName();
             info.setName(name);
             Conf conf = mediaClient.getPathConfig(name);
+            //源
+            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);
-            Source source = item.getSource();
-            if (source == null || source.getId().equals("")) {
-                //会话ID
-                info.setId("0");
-                //下行流量
-                long bytesReceived = item.getBytesReceived();
-                String formatReceivedSize = ArdTool.formatFileSize(bytesReceived);
-                info.setDownTraffic(formatReceivedSize);
-                //上行流量
-                long bytesSent = item.getBytesSent();
-                String formatSentdSize = ArdTool.formatFileSize(bytesSent);
-                info.setUpTraffic(formatSentdSize);
-                info.setBeginTime(item.getReadyTime());
-            } else {
-                RtspSession rtspSession = getRtspSessionById(source.getId());
-                //会话ID
-                info.setId(rtspSession.getId());
-                //开始推流时间
-                info.setBeginTime(rtspSession.getCreated());
-                //上行流量
-                long bytesReceived = rtspSession.getBytesReceived();
-                String formatReceivedSize = ArdTool.formatFileSize(bytesReceived);
-                info.setUpTraffic(formatReceivedSize);
-                //下行流量
-                long bytesSent = rtspSession.getBytesSent();
-                String formatSentSize = ArdTool.formatFileSize(bytesSent);
-                info.setDownTraffic(formatSentSize);
-                //推流服务器
-                info.setRemoteAddr(rtspSession.getRemoteAddr());
-            }
-            //RTSP源地址
-            String runOn = "";
-            if (StringUtils.isNotEmpty(conf.getRunOnDemand())) {
-                runOn = conf.getRunOnDemand();
-            }
-            Matcher matcher = Pattern.compile("rtsp://[^\\s\"]+").matcher(runOn);
-            if (matcher.find()) {
-                info.setRtspSource(matcher.group());
-            } else {
-                info.setRtspSource(conf.getSource());
-            }
+
+            //上行流量
+            long bytesReceived = item.getBytesReceived();
+            String formatReceivedSize = ArdTool.formatFileSize(bytesReceived);
+            info.setUpTraffic(formatReceivedSize);
+            //下行流量
+            long bytesSent = item.getBytesSent();
+            String formatSentSize = ArdTool.formatFileSize(bytesSent);
+            info.setDownTraffic(formatSentSize);
             //传输协议
             info.setProtocol(conf.getSourceProtocol());
             //拉流数量
             List<Readers> readers = item.getReaders();
+            //开始时间
+            info.setBeginTime(item.getReadyTime());
             info.setNum(readers.size());
 
             PushStreamInfoList.add(info);
@@ -393,7 +377,7 @@
                 nameList.add(item.getName());
             }
         } catch (Exception ex) {
-            log.error("获取流媒体name列表异常:" + ex.getMessage());
+            log.error("获取流媒体name列表异常:{}", ex.getMessage());
         }
         return nameList;
     }

--
Gitblit v1.9.3