From a2bef1bc001cc196affb1b24d69eec4127cfa40a Mon Sep 17 00:00:00 2001
From: liusuyi <1951119284@qq.com>
Date: Wed, 01 Apr 2026 10:04:55 +0800
Subject: [PATCH] 优化
---
ard-vtdu/src/main/java/com/ard/vtdu/service/impl/ArdArdMediaServiceImpl.java | 102 ++++++++++++++++++++++-----------------------------
1 files changed, 44 insertions(+), 58 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 7446a03..3aacf67 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,22 +51,30 @@
@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();
+ String source = ardVtdu.getRtspSource();
Conf conf = new Conf();
- conf.setSource(ardVtdu.getRtspSource());
- conf.setRunOnDemandRestart(false);
- conf.setRunOnDemandCloseAfter("5s");
+ conf.setName(ardVtdu.getName());
+ conf.setSource(source);
+ // 如果是拉流则配置按需
+ if (!"publisher".equalsIgnoreCase(source)) {
+ conf.setSourceOnDemand(true); // 按需拉
+ conf.setRunOnDemandCloseAfter("5s"); // 无观众 5 秒断开
+ }
conf.setMaxReaders(100);
conf.setSourceProtocol("tcp");
- if (checkNameExist(ardVtdu.getName())) {
- mediaClient.removePath(ardVtdu.getName());
+ if (!checkNameExist(ardVtdu.getName())) {
+ mediaClient.addPath(ardVtdu.getName(), conf);
+ } else {
+ mediaClient.editPath(ardVtdu.getName(), conf);
}
- mediaClient.addPath(ardVtdu.getName(), conf);
ardVtdu.setCameraId(ardVtdu.getName().split("_")[0]);
ardVtdu.setRtspUrl(rtspUrl);
@@ -82,15 +90,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 +209,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);
--
Gitblit v1.9.3