From ba1e219d97e123b91657dc424f13a2fdeaa85d21 Mon Sep 17 00:00:00 2001
From: ‘liusuyi’ <1951119284@qq.com>
Date: Mon, 21 Aug 2023 13:37:01 +0800
Subject: [PATCH] 修改兴趣点列表井号模糊查询

---
 ard-work/src/main/java/com/ruoyi/media/service/impl/MediaService.java |  124 +++++++++++++++++++++++++---------------
 1 files changed, 77 insertions(+), 47 deletions(-)

diff --git a/ard-work/src/main/java/com/ruoyi/media/service/impl/MediaService.java b/ard-work/src/main/java/com/ruoyi/media/service/impl/MediaService.java
index c4be437..5e61e05 100644
--- a/ard-work/src/main/java/com/ruoyi/media/service/impl/MediaService.java
+++ b/ard-work/src/main/java/com/ruoyi/media/service/impl/MediaService.java
@@ -22,6 +22,8 @@
 import java.io.IOException;
 import java.io.InputStreamReader;
 import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
 import java.util.List;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
@@ -81,8 +83,8 @@
     }
 
     @Override
-    public String addPath(String name, String rtspPath, String mode) {
-        String rtspUrl = "rtsp://" + mediamtxHost + ":7554/";
+    public String addPath(String name, String rtspPath, String mode, String isCode) {
+        String rtspUrl = "rtsp://" + mediamtxHost + ":7554/" + name;
         Conf mediaInfo = new Conf();
         //-vcodec libx264 //指定视频编码器为 libx264,使用 H.264 编码格式进行视频压缩
         //-preset ultrafast  //--preset的参数主要调节编码速度和质量的平衡,有ultrafast(转码速度最快,视频往往也最模糊)、superfast、veryfast、faster、fast、medium、slow、slower、veryslow、placebo这10个选项,从快到慢
@@ -95,16 +97,20 @@
         String cmd = "ffmpeg -rtsp_transport tcp -i \"" + rtspPath + "\" -vcodec libx264 -preset:v ultrafast -r 25 -threads 4  -b:v 4096k -f rtsp rtsp://localhost:$RTSP_PORT/$MTX_PATH";
         //GPU硬解码编码 -hwaccel cuvid -c:v h264_cuvid  使用cuda解码   -c:v h264_nvenc 使用cuda编码
         //String cmd = "ffmpeg -hwaccel cuvid -c:v h264_cuvid  -rtsp_transport udp  -i \"" + rtspPath + "\" -c:v h264_nvenc  -r 25 -threads 4  -b:v 4096k -f rtsp rtsp://localhost:$RTSP_PORT/$MTX_PATH";
-
-        if (mode.equals("1")) {
-            mediaInfo.setRunondemand(cmd);
-            mediaInfo.setRunondemandrestart(true);
+        if (isCode.equals("1")) {
+            if (mode.equals("1")) {
+                mediaInfo.setRunondemand(cmd);
+                mediaInfo.setRunondemandrestart(true);
+            } else {
+                mediaInfo.setRunoninit(cmd);
+                mediaInfo.setRunoninitrestart(true);
+            }
         } else {
-            mediaInfo.setRunoninit(cmd);
-            mediaInfo.setRunoninitrestart(true);
+            mediaInfo.setSource(rtspPath);
         }
+        mediaInfo.setSourceprotocol("udp");
         mediaClient.addPath(name, mediaInfo);
-        return rtspUrl + name;
+        return rtspUrl;
     }
 
     @Override
@@ -128,6 +134,12 @@
         Matcher matcher = pattern.matcher(runoninit);
         if (matcher.find()) {
             info.setRtspSource(matcher.group());
+            info.setIsCode("1");
+        }
+        else
+        {
+            info.setRtspSource(item.getConf().getSource());
+            info.setIsCode("0");
         }
         return info;
     }
@@ -141,7 +153,6 @@
 
     @Override
     public List<StreamInfo> paths() {
-
         String list = mediaClient.paths();
         JsonsRoot jsonsRoot = JSONObject.parseObject(list, JsonsRoot.class);
         List<Items> items = jsonsRoot.getItems();
@@ -166,6 +177,10 @@
             Matcher matcher = pattern.matcher(runoninit);
             if (matcher.find()) {
                 info.setRtspSource(matcher.group());
+                info.setIsCode("1");
+            } else {
+                info.setRtspSource(item.getConf().getSource());
+                info.setIsCode("0");
             }
             //传输协议
             regex = "-rtsp_transport\\s+(\\w+)";
@@ -249,22 +264,30 @@
             String rtspUrl = "rtsp://" + mediamtxHost + ":7554/" + name;
             info.setRtspUrl(rtspUrl);
             Source source = item.getSource();
-            if (source == null) {
-                continue;
+            if (source==null||source.getId().equals("")) {
+                //会话ID
+                info.setId("0");
+                //上行流量
+                long bytesReceived = item.getBytesReceived();
+                String formatReceivedSize = ArdTool.formatFileSize(bytesReceived);
+                info.setUpTraffic(formatReceivedSize);
+            } 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());
             }
-            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);
             //RTSP源地址
             String runondemand = item.getConf().getRunondemand();
             String runoninit;
@@ -279,18 +302,22 @@
             if (matcher.find()) {
                 info.setRtspSource(matcher.group());
             }
-            //传输协议
-            regex = "-rtsp_transport\\s+(\\w+)";
-            pattern = Pattern.compile(regex);
-            matcher = pattern.matcher(runoninit);
-            if (matcher.find()) {
-                info.setProtocol(matcher.group(1));
+            else
+            {
+                info.setRtspSource(item.getConf().getSource());
             }
+            //传输协议
+//            regex = "-rtsp_transport\\s+(\\w+)";
+//            pattern = Pattern.compile(regex);
+//            matcher = pattern.matcher(runoninit);
+//            if (matcher.find()) {
+//                info.setProtocol(matcher.group(1));
+//            }
+            info.setProtocol(item.getConf().getSourceprotocol());
             //拉流数量
             List<Readers> readers = item.getReaders();
             info.setNum(readers.size());
-            //推流服务器
-            info.setRemoteAddr(rtspSession.getRemoteAddr());
+
 
             PushStreamInfoList.add(info);
         }
@@ -304,15 +331,15 @@
         JsonsRoot jsonsRoot = JSONObject.parseObject(list, JsonsRoot.class);
         List<Items> items = jsonsRoot.getItems();
         for (Items item : items) {
-            StreamInfo info = new StreamInfo();
-            //ID
-            String name = item.getName();
-            info.setName(name);
-            //RTSP播放地址
-            String rtspUrl = "rtsp://" + mediamtxHost + ":8554/" + name;
-            info.setRtspUrl(rtspUrl);
             List<Readers> readers = item.getReaders();
             for (Readers reader : readers) {
+                StreamInfo info = new StreamInfo();
+                //ID
+                String name = item.getName();
+                info.setName(name);
+                //RTSP播放地址
+                String rtspUrl = "rtsp://" + mediamtxHost + ":8554/" + name;
+                info.setRtspUrl(rtspUrl);
                 RtspSession rtspSession = getRtspSessionById(reader.getId());
                 //会话ID
                 info.setId(rtspSession.getId());
@@ -328,18 +355,21 @@
                 info.setDownTraffic(formatSentSize);
 
                 //传输协议
-                String runoninit = item.getConf().getRunondemand();
-                String regex = "-rtsp_transport\\s+(\\w+)";
-                Pattern pattern = Pattern.compile(regex);
-                Matcher matcher = pattern.matcher(runoninit);
-                if (matcher.find()) {
-                    info.setProtocol(matcher.group(1));
-                }
+//                String runoninit = item.getConf().getRunondemand();
+//                String regex = "-rtsp_transport\\s+(\\w+)";
+//                Pattern pattern = Pattern.compile(regex);
+//                Matcher matcher = pattern.matcher(runoninit);
+//                if (matcher.find()) {
+//                    info.setProtocol(matcher.group(1));
+//                }
+                info.setProtocol(item.getConf().getSourceprotocol());
                 //拉流服务器
                 info.setRemoteAddr(rtspSession.getRemoteAddr());
                 PullStreamInfoList.add(info);
             }
         }
+        Comparator<StreamInfo> comparator = Comparator.comparing(streamInfo ->streamInfo.getBeginTime() ); // 使用Collections.sort方法进行排序 Collections.sort(personList, comparator);
+        Collections.sort(PullStreamInfoList, comparator.reversed());
         return PullStreamInfoList;
     }
 

--
Gitblit v1.9.3