From 49bedcce2ac42fa34da012ee3fc8e9230886064a Mon Sep 17 00:00:00 2001
From: liusuyi <1951119284@qq.com>
Date: 星期五, 12 七月 2024 15:28:24 +0800
Subject: [PATCH] 优化:流媒体

---
 ard-work/src/main/java/com/ruoyi/media/service/impl/MediaServiceImpl.java |  167 +++++++++++++++++++++++++------------------------------
 1 files changed, 75 insertions(+), 92 deletions(-)

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 0079687..3e3a269 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
@@ -3,6 +3,8 @@
 import com.alibaba.fastjson2.JSONObject;
 import com.dtflys.forest.exceptions.ForestNetworkException;
 import com.dtflys.forest.exceptions.ForestRuntimeException;
+import com.ruoyi.common.constant.HttpStatus;
+import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.media.domain.*;
 import com.ruoyi.media.service.IMediaService;
@@ -10,6 +12,7 @@
 import com.ruoyi.utils.tools.ArdTool;
 import io.swagger.models.auth.In;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.poi.ss.formula.functions.T;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.boot.ApplicationArguments;
 import org.springframework.boot.ApplicationRunner;
@@ -243,9 +246,12 @@
      * 2023/8/29 9:37:05
      */
     @Override
-    public List<StreamInfo> getPushStreamList(Integer pageNum, Integer pageSize) {
+    public TableDataInfo getPushStreamList(Integer pageNum, Integer pageSize) {
+        TableDataInfo tableDataInfo = new TableDataInfo();
         List<StreamInfo> PushStreamInfoList = new ArrayList<>();
         Paths paths = mediaClient.paths(pageNum - 1, pageSize);
+        int itemCount = paths.getItemCount();
+        tableDataInfo.setTotal(itemCount);
         List<Items> items = paths.getItems();
         for (Items item : items) {
             StreamInfo info = new StreamInfo();
@@ -309,105 +315,82 @@
 
             PushStreamInfoList.add(info);
         }
-        return PushStreamInfoList;
+        tableDataInfo.setRows(PushStreamInfoList);
+        tableDataInfo.setCode(HttpStatus.SUCCESS);
+        tableDataInfo.setMsg("鏌ヨ鎴愬姛");
+        return tableDataInfo;
     }
 
     /**
-     * 鑾峰彇鎷夋祦鍒楄〃
+     * 鑾峰彇webrtc鎷夋祦鍒楄〃
      * 鍒樿嫃涔�
      * 2023/8/29 9:37:05
      */
     @Override
-    public List<StreamInfo> getPullStreamList(Integer pageNum, Integer pageSize) {
-        List<StreamInfo> PullStreamInfoList = new ArrayList<>();
-        Paths paths = mediaClient.paths(pageNum - 1, pageSize);
-        List<Items> items = paths.getItems();
-        for (Items item : items) {
-            List<Readers> readers = item.getReaders();
-            for (Readers reader : readers) {
-                StreamInfo info = new StreamInfo();
-                //ID
-                String name = item.getName();
-                info.setName(name);
-                Conf conf = mediaClient.getPathInfo(name);
-                //浼犺緭鍗忚
-                info.setProtocol(conf.getSourceProtocol());
-
-                String type = reader.getType();
-                switch (type) {
-                    case "rtmpConn":
-                        info.setSessionType("rtmp");
-                        //webrtc鎾斁鍦板潃
-                        String url = "rtmp://" + mediamtxHost + ":1935/" + name;
-                        info.setRtspUrl(url);
-                        RtmpSession rtmpSession = getRtmpSessionById(reader.getId());
-                        //浼氳瘽ID
-                        info.setId(rtmpSession.getId());
-                        //寮�濮嬫媺娴佹椂闂�
-                        info.setBeginTime(rtmpSession.getCreated());
-                        //涓婅娴侀噺
-                        long bytesReceived = rtmpSession.getBytesReceived();
-                        String formatReceivedSize = ArdTool.formatFileSize(bytesReceived);
-                        info.setUpTraffic(formatReceivedSize);
-                        //涓嬭娴侀噺
-                        long bytesSent = rtmpSession.getBytesSent();
-                        String formatSentSize = ArdTool.formatFileSize(bytesSent);
-                        info.setDownTraffic(formatSentSize);
-                        //鎷夋祦鏈嶅姟鍣�
-                        info.setRemoteAddr(rtmpSession.getRemoteAddr());
-                        PullStreamInfoList.add(info);
-                        break;
-                    case "webRTCSession":
-                    case "webrtcSession":
-                        info.setSessionType("webrtc");
-                        //webrtc鎾斁鍦板潃
-                        url = "http://" + mediamtxHost + ":8889/" + name;
-                        info.setRtspUrl(url);
-                        WebrtcSession webrtcSession = getWebrtcSessionById(reader.getId());
-                        //浼氳瘽ID
-                        info.setId(webrtcSession.getId());
-                        //寮�濮嬫媺娴佹椂闂�
-                        info.setBeginTime(webrtcSession.getCreated());
-                        //涓婅娴侀噺
-                        bytesReceived = webrtcSession.getBytesReceived();
-                        formatReceivedSize = ArdTool.formatFileSize(bytesReceived);
-                        info.setUpTraffic(formatReceivedSize);
-                        //涓嬭娴侀噺
-                        bytesSent = webrtcSession.getBytesSent();
-                        formatSentSize = ArdTool.formatFileSize(bytesSent);
-                        info.setDownTraffic(formatSentSize);
-                        //鎷夋祦鏈嶅姟鍣�
-                        info.setRemoteAddr(webrtcSession.getRemoteAddr());
-                        PullStreamInfoList.add(info);
-                        break;
-                    case "rtspSession":
-                        info.setSessionType("rtsp");
-                        //RTSP鎾斁鍦板潃
-                        String rtspUrl = "rtsp://" + mediamtxHost + ":8554/" + name;
-                        info.setRtspUrl(rtspUrl);
-                        RtspSession rtspSession = getRtspSessionById(reader.getId());
-                        //浼氳瘽ID
-                        info.setId(rtspSession.getId());
-                        //寮�濮嬫媺娴佹椂闂�
-                        info.setBeginTime(rtspSession.getCreated());
-                        //涓婅娴侀噺
-                        bytesReceived = rtspSession.getBytesReceived();
-                        formatReceivedSize = ArdTool.formatFileSize(bytesReceived);
-                        info.setUpTraffic(formatReceivedSize);
-                        //涓嬭娴侀噺
-                        bytesSent = rtspSession.getBytesSent();
-                        formatSentSize = ArdTool.formatFileSize(bytesSent);
-                        info.setDownTraffic(formatSentSize);
-                        //鎷夋祦鏈嶅姟鍣�
-                        info.setRemoteAddr(rtspSession.getRemoteAddr());
-                        PullStreamInfoList.add(info);
-                        break;
+    public TableDataInfo getPullWebrtcStreamList(Integer pageNum, Integer pageSize) {
+        TableDataInfo tableDataInfo = new TableDataInfo();
+        WebrtcSessions WebrtcSessions = mediaClient.webrtcsessions(pageNum-1, pageSize);
+        List<WebrtcSession> webrtcsessions = WebrtcSessions.getItems();
+        webrtcsessions.stream().forEach(
+                webrtcSession -> {
+                    webrtcSession.setUpStream(ArdTool.formatFileSize(webrtcSession.getBytesReceived()));
+                    webrtcSession.setDownStream(ArdTool.formatFileSize(webrtcSession.getBytesSent()));
+                    webrtcSession.setBeginTime(webrtcSession.getCreated());
                 }
-            }
-        }
-        Comparator<StreamInfo> comparator = Comparator.comparing(streamInfo -> streamInfo.getBeginTime()); // 浣跨敤Collections.sort鏂规硶杩涜鎺掑簭 Collections.sort(personList, comparator);
-        Collections.sort(PullStreamInfoList, comparator.reversed());
-        return PullStreamInfoList;
+        );
+        tableDataInfo.setTotal(WebrtcSessions.getItemCount());
+        tableDataInfo.setRows(webrtcsessions);
+        tableDataInfo.setCode(HttpStatus.SUCCESS);
+        tableDataInfo.setMsg("鏌ヨ鎴愬姛");
+        return tableDataInfo;
+    }
+
+    /**
+     * 鑾峰彇rtmp鎷夋祦鍒楄〃
+     * 鍒樿嫃涔�
+     * 2023/8/29 9:37:05
+     */
+    @Override
+    public TableDataInfo getPullRtmpStreamList(Integer pageNum, Integer pageSize) {
+        TableDataInfo tableDataInfo = new TableDataInfo();
+        RtmpSessions rtmpSessions = mediaClient.rtmpsessions(pageNum-1, pageSize);
+        List<RtmpSession> webrtcsessions = rtmpSessions.getItems();
+        webrtcsessions.stream().forEach(
+                webrtcSession -> {
+                    webrtcSession.setUpStream(ArdTool.formatFileSize(webrtcSession.getBytesReceived()));
+                    webrtcSession.setDownStream(ArdTool.formatFileSize(webrtcSession.getBytesSent()));
+                    webrtcSession.setBeginTime(webrtcSession.getCreated());
+                }
+        );
+        tableDataInfo.setTotal(rtmpSessions.getItemCount());
+        tableDataInfo.setRows(webrtcsessions);
+        tableDataInfo.setCode(HttpStatus.SUCCESS);
+        tableDataInfo.setMsg("鏌ヨ鎴愬姛");
+        return tableDataInfo;
+    }
+
+    /**
+     * 鑾峰彇rtsp鎷夋祦鍒楄〃
+     * 鍒樿嫃涔�
+     * 2023/8/29 9:37:05
+     */
+    @Override
+    public TableDataInfo getPullRtspStreamList(Integer pageNum, Integer pageSize) {
+        TableDataInfo tableDataInfo = new TableDataInfo();
+        RtspSessions rtspSessions = mediaClient.rtspsessions(pageNum-1, pageSize);
+        List<RtspSession> webrtcsessions = rtspSessions.getItems();
+        webrtcsessions.stream().forEach(
+                webrtcSession -> {
+                    webrtcSession.setUpStream(ArdTool.formatFileSize(webrtcSession.getBytesReceived()));
+                    webrtcSession.setDownStream(ArdTool.formatFileSize(webrtcSession.getBytesSent()));
+                    webrtcSession.setBeginTime(webrtcSession.getCreated());
+                }
+        );
+        tableDataInfo.setTotal(rtspSessions.getItemCount());
+        tableDataInfo.setRows(webrtcsessions);
+        tableDataInfo.setCode(HttpStatus.SUCCESS);
+        tableDataInfo.setMsg("鏌ヨ鎴愬姛");
+        return tableDataInfo;
     }
 
     /**

--
Gitblit v1.9.3