From 653471f1df709ade123006b662d81fc33d84ea9c Mon Sep 17 00:00:00 2001
From: ‘liusuyi’ <1951119284@qq.com>
Date: 星期五, 14 七月 2023 17:27:22 +0800
Subject: [PATCH] 优化流媒体编解码业务

---
 ard-work/src/main/java/com/ruoyi/media/domain/Items.java               |   16 +++++++-
 ard-work/src/main/java/com/ruoyi/media/controller/MediaController.java |   22 ++++++++---
 ard-work/src/main/java/com/ruoyi/media/domain/JsonsRoot.java           |    5 +-
 ard-work/src/main/java/com/ruoyi/utils/forest/MediaClient.java         |   34 +++++++++++++++--
 ard-work/src/main/java/com/ruoyi/media/service/IMediaService.java      |    5 ++
 ard-work/src/main/java/com/ruoyi/media/domain/MediaInfo.java           |    4 +-
 ard-work/src/main/java/com/ruoyi/media/service/impl/MediaService.java  |   34 ++++++++++++-----
 7 files changed, 93 insertions(+), 27 deletions(-)

diff --git a/ard-work/src/main/java/com/ruoyi/media/controller/MediaController.java b/ard-work/src/main/java/com/ruoyi/media/controller/MediaController.java
index 83bdeea..910cd71 100644
--- a/ard-work/src/main/java/com/ruoyi/media/controller/MediaController.java
+++ b/ard-work/src/main/java/com/ruoyi/media/controller/MediaController.java
@@ -32,19 +32,29 @@
     @PostMapping("/add")
     @ApiOperation("澧炲姞杞爜")
     public AjaxResult addPath(@RequestBody MediaInfo mediaInfo) {
-        String rtsp = mediaService.addPath(mediaInfo.getName(), mediaInfo.getRtspPath());
+        String rtsp = mediaService.addPath(mediaInfo.getCameraId(), mediaInfo.getRtspPath());
         return AjaxResult.success(rtsp);
     }
     @PostMapping("/remove")
     @ApiOperation("绉婚櫎杞爜")
-    @ApiOperationSupport(includeParameters={"mediaInfo.name"})
+    @ApiOperationSupport(includeParameters={"mediaInfo.cameraId"})
     public AjaxResult removePath(@RequestBody MediaInfo mediaInfo) {
-        mediaService.removePath(mediaInfo.getName());
+        mediaService.removePath(mediaInfo.getCameraId());
         return AjaxResult.success();
     }
-    @GetMapping("/getList")
+    @GetMapping("/getPaths")
     @ApiOperation("鑾峰彇褰撳墠杞爜鍒楄〃")
-    public AjaxResult getList() {
-        return AjaxResult.success(mediaService.list());
+    public AjaxResult getPaths() {
+        return AjaxResult.success(mediaService.paths());
+    }
+    @GetMapping("/getRtspSessions")
+    @ApiOperation("鑾峰彇rtsp浼氳瘽鍒楄〃")
+    public AjaxResult getRtspSessions() {
+        return AjaxResult.success(mediaService.rtspsessions());
+    }
+    @GetMapping("/getRtspConns")
+    @ApiOperation("鑾峰彇rtsp杩炴帴鍒楄〃")
+    public AjaxResult getRtspConns() {
+        return AjaxResult.success(mediaService.rtspconns());
     }
 }
diff --git a/ard-work/src/main/java/com/ruoyi/media/domain/Items.java b/ard-work/src/main/java/com/ruoyi/media/domain/Items.java
index bb933cd..96b5c2e 100644
--- a/ard-work/src/main/java/com/ruoyi/media/domain/Items.java
+++ b/ard-work/src/main/java/com/ruoyi/media/domain/Items.java
@@ -1,8 +1,10 @@
 package com.ruoyi.media.domain;
 
+import com.fasterxml.jackson.annotation.JsonInclude;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import lombok.Data;
 
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -13,11 +15,21 @@
  * @Version: 1.0
  **/
 @Data
+@JsonInclude(value = JsonInclude.Include.NON_NULL)
 public class Items {
     private String name;
-    private String confname;
+    private String confName;
     private Conf conf;
     private Source source;
-    private boolean sourceready;
+    private boolean sourceReady;
     private List<String> tracks;
+
+
+    private String id;
+    private Date created;
+    private String remoteAddr;
+    private String state;
+    private long bytesReceived;
+    private long bytesSent;
+
 }
diff --git a/ard-work/src/main/java/com/ruoyi/media/domain/JsonsRoot.java b/ard-work/src/main/java/com/ruoyi/media/domain/JsonsRoot.java
index 0c8808d..08fb974 100644
--- a/ard-work/src/main/java/com/ruoyi/media/domain/JsonsRoot.java
+++ b/ard-work/src/main/java/com/ruoyi/media/domain/JsonsRoot.java
@@ -1,5 +1,6 @@
 package com.ruoyi.media.domain;
 
+import com.fasterxml.jackson.annotation.JsonProperty;
 import lombok.Data;
 
 import java.util.List;
@@ -14,9 +15,9 @@
 @Data
 public class JsonsRoot {
 
-    private int itemcount;
+    private int itemCount;
 
-    private int pagecount;
+    private int pageCount;
 
     private List<Items> items;
 
diff --git a/ard-work/src/main/java/com/ruoyi/media/domain/MediaInfo.java b/ard-work/src/main/java/com/ruoyi/media/domain/MediaInfo.java
index 8def810..6f06f1e 100644
--- a/ard-work/src/main/java/com/ruoyi/media/domain/MediaInfo.java
+++ b/ard-work/src/main/java/com/ruoyi/media/domain/MediaInfo.java
@@ -3,7 +3,7 @@
 import lombok.Data;
 
 /**
- * @Description:
+ * @Description: 娴佸獟浣撲俊鎭疄浣�
  * @ClassName: MediaInfo
  * @Author: 鍒樿嫃涔�
  * @Date: 2023骞�07鏈�13鏃�10:11
@@ -11,6 +11,6 @@
  **/
 @Data
 public class MediaInfo {
-    String name;
+    String cameraId;
     String rtspPath;
 }
diff --git a/ard-work/src/main/java/com/ruoyi/media/service/IMediaService.java b/ard-work/src/main/java/com/ruoyi/media/service/IMediaService.java
index b23fff6..37ac942 100644
--- a/ard-work/src/main/java/com/ruoyi/media/service/IMediaService.java
+++ b/ard-work/src/main/java/com/ruoyi/media/service/IMediaService.java
@@ -1,10 +1,13 @@
 package com.ruoyi.media.service;
 import com.ruoyi.media.domain.Items;
+
 import java.util.List;
 
 public interface IMediaService {
 
     public String addPath(String name, String rtspPath);
     public void removePath(String name);
-    public List<Items>list();
+    public List<Items>paths();
+    public List<Items> rtspconns();
+    public List<Items> rtspsessions();
 }
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 b360b82..73a8650 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
@@ -1,9 +1,7 @@
 package com.ruoyi.media.service.impl;
 
 import com.alibaba.fastjson2.JSONObject;
-import com.ruoyi.media.domain.Conf;
-import com.ruoyi.media.domain.Items;
-import com.ruoyi.media.domain.JsonsRoot;
+import com.ruoyi.media.domain.*;
 import com.ruoyi.media.service.IMediaService;
 import com.ruoyi.utils.forest.MediaClient;
 import org.springframework.beans.factory.annotation.Value;
@@ -41,25 +39,41 @@
         // -i //鐢ㄤ簬鎸囧畾杈撳叆濯掍綋鏂囦欢鎴栬緭鍏ユ祦鐨勫湴鍧�
         //-f rtsp //杩欎釜閫夐」鍛婅瘔 FFmpeg 杈撳嚭涓� RTSP 鏍煎紡銆�
         //CPU杞В鐮佺紪鐮�
-        //String cmd = "ffmpeg -rtsp_transport udp -i \"" + rtspPath + "\" -vcodec libx264 -preset:v veryfast  -r 25 -threads 4 -f rtsp rtsp://localhost:$RTSP_PORT/$MTX_PATH";
-        //GPU纭В鐮佺紪鐮�
-        String cmd = "ffmpeg -hwaccel cuvid -c:v h264_cuvid  -rtsp_transport udp  -i \"" + rtspPath + "\" -c:v h264_nvenc  -r 25 -threads 4 -f rtsp rtsp://localhost:$RTSP_PORT/$MTX_PATH";
+        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瑙g爜   -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 -f rtsp rtsp://localhost:$RTSP_PORT/$MTX_PATH";
         mediaInfo.setRunoninit(cmd);
         mediaInfo.setRunoninitrestart(true);
-        mediaClient.add(apiUrl, name, mediaInfo);
+        mediaClient.addPath(apiUrl, name, mediaInfo);
         return rtspUrl + name;
     }
 
     @Override
     public void removePath(String name) {
         String apiUrl="http://"+mediamtxHost+":9997/v2";
-        mediaClient.remove(apiUrl, name);
+        mediaClient.removePath(apiUrl, name);
     }
 
     @Override
-    public List<Items> list() {
+    public List<Items> paths() {
         String apiUrl="http://"+mediamtxHost+":9997/v2";
-        String list = mediaClient.list(apiUrl);
+        String list = mediaClient.paths(apiUrl);
+        JsonsRoot jsonsRoot = JSONObject.parseObject(list, JsonsRoot.class);
+        return jsonsRoot.getItems();
+    }
+
+    @Override
+    public List<Items> rtspconns() {
+        String apiUrl="http://"+mediamtxHost+":9997/v2";
+        String list = mediaClient.rtspconns(apiUrl);
+        JsonsRoot jsonsRoot = JSONObject.parseObject(list, JsonsRoot.class);
+        return jsonsRoot.getItems();
+    }
+
+    @Override
+    public List<Items> rtspsessions() {
+        String apiUrl="http://"+mediamtxHost+":9997/v2";
+        String list = mediaClient.rtspsessions(apiUrl);
         JsonsRoot jsonsRoot = JSONObject.parseObject(list, JsonsRoot.class);
         return jsonsRoot.getItems();
     }
diff --git a/ard-work/src/main/java/com/ruoyi/utils/forest/MediaClient.java b/ard-work/src/main/java/com/ruoyi/utils/forest/MediaClient.java
index 0f8adfc..d0a9725 100644
--- a/ard-work/src/main/java/com/ruoyi/utils/forest/MediaClient.java
+++ b/ard-work/src/main/java/com/ruoyi/utils/forest/MediaClient.java
@@ -14,13 +14,39 @@
  * @Version: 1.0
  **/
 public interface MediaClient {
-
+    /**
+     * 澧炲姞璺緞
+     */
     @Post("{apiUrl}/config/paths/add/{name}")
-    String add(@Var("apiUrl") String apiUrl,@Var("name") String name, @JSONBody Conf body);
+    String addPath(@Var("apiUrl") String apiUrl, @Var("name") String name, @JSONBody Conf body);
 
+    /**
+     * 绉婚櫎璺緞
+     */
     @Post("{apiUrl}/config/paths/remove/{name}")
-    String remove(@Var("apiUrl") String apiUrl,@Var("name") String name);
+    String removePath(@Var("apiUrl") String apiUrl, @Var("name") String name);
 
+    /**
+     * 鏌ヨ鎵�鏈夎矾寰�
+     */
     @Get("{apiUrl}/paths/list")
-    String list(@Var("apiUrl") String apiUrl);
+    String paths(@Var("apiUrl") String apiUrl);
+
+    /**
+     * 鏌ヨ鎵�鏈塺tsp浼氳瘽
+     */
+    @Get("{apiUrl}/rtspsessions/list")
+    String rtspsessions(@Var("apiUrl") String apiUrl);
+
+    /**
+     * 鏌ヨ鎵�鏈塺tsp杩炴帴
+     */
+    @Get("{apiUrl}/rtspconns/list")
+    String rtspconns(@Var("apiUrl") String apiUrl);
+
+    /**
+     * 鎸塱d鏌ヨrtsp浼氳瘽
+     */
+    @Get("{apiUrl}/rtspsessions/get/{id}")
+    String rtspsessionsById(@Var("apiUrl") String apiUrl, @Var("id") String id);
 }

--
Gitblit v1.9.3