From c21d973977a9f1d00d26179de764687ddd0ec56c Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期三, 24 四月 2024 14:59:41 +0800
Subject: [PATCH] 修复收到catalog消息是更新导致是否有音频的设置失效的BUG

---
 src/main/java/com/genersoft/iot/vmp/common/StreamInfo.java |  207 +++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 174 insertions(+), 33 deletions(-)

diff --git a/src/main/java/com/genersoft/iot/vmp/common/StreamInfo.java b/src/main/java/com/genersoft/iot/vmp/common/StreamInfo.java
index 460f418..979f54a 100644
--- a/src/main/java/com/genersoft/iot/vmp/common/StreamInfo.java
+++ b/src/main/java/com/genersoft/iot/vmp/common/StreamInfo.java
@@ -1,8 +1,10 @@
 package com.genersoft.iot.vmp.common;
 
+import com.genersoft.iot.vmp.service.bean.DownloadFileInfo;
 import io.swagger.v3.oas.annotations.media.Schema;
 
 import java.io.Serializable;
+import java.util.Objects;
 
 @Schema(description = "娴佷俊鎭�")
 public class StreamInfo implements Serializable, Cloneable{
@@ -75,6 +77,8 @@
     private String endTime;
     @Schema(description = "杩涘害锛堝綍鍍忎笅杞戒娇鐢級")
     private double progress;
+    @Schema(description = "鏂囦欢涓嬭浇鍦板潃锛堝綍鍍忎笅杞戒娇鐢級")
+    private DownloadFileInfo downLoadFilePath;
 
     @Schema(description = "鏄惁鏆傚仠锛堝綍鍍忓洖鏀句娇鐢級")
     private boolean pause;
@@ -168,26 +172,32 @@
     }
 
     public void setRtmp(String host, int port, int sslPort, String app, String stream, String callIdParam) {
-        String file = String.format("%s/%s/%s", app, stream, callIdParam);
-        this.rtmp = new StreamURL("rtmp", host, port, file);
-        if (sslPort != 0) {
+        String file = String.format("%s/%s%s", app, stream, callIdParam);
+        if (port > 0) {
+            this.rtmp = new StreamURL("rtmp", host, port, file);
+        }
+        if (sslPort > 0) {
             this.rtmps = new StreamURL("rtmps", host, sslPort, file);
         }
     }
 
     public void setRtsp(String host, int port, int sslPort, String app, String stream, String callIdParam) {
-        String file = String.format("%s/%s/%s", app, stream, callIdParam);
-        this.rtsp = new StreamURL("rtsp", host, port, file);
-        if (sslPort != 0) {
+        String file = String.format("%s/%s%s", app, stream, callIdParam);
+        if (port > 0) {
+            this.rtsp = new StreamURL("rtsp", host, port, file);
+        }
+        if (sslPort > 0) {
             this.rtsps = new StreamURL("rtsps", host, sslPort, file);
         }
     }
 
     public void setFlv(String host, int port, int sslPort, String app, String stream, String callIdParam) {
         String file = String.format("%s/%s.live.flv%s", app, stream, callIdParam);
-        this.flv = new StreamURL("http", host, port, file);
+        if (port > 0) {
+            this.flv = new StreamURL("http", host, port, file);
+        }
         this.ws_flv = new StreamURL("ws", host, port, file);
-        if (sslPort != 0) {
+        if (sslPort > 0) {
             this.https_flv = new StreamURL("https", host, sslPort, file);
             this.wss_flv = new StreamURL("wss", host, sslPort, file);
         }
@@ -195,9 +205,11 @@
 
     public void setFmp4(String host, int port, int sslPort, String app, String stream, String callIdParam) {
         String file = String.format("%s/%s.live.mp4%s", app, stream, callIdParam);
-        this.fmp4 = new StreamURL("http", host, port, file);
-        this.ws_fmp4 = new StreamURL("ws", host, port, file);
-        if (sslPort != 0) {
+        if (port > 0) {
+            this.fmp4 = new StreamURL("http", host, port, file);
+            this.ws_fmp4 = new StreamURL("ws", host, port, file);
+        }
+        if (sslPort > 0) {
             this.https_fmp4 = new StreamURL("https", host, sslPort, file);
             this.wss_fmp4 = new StreamURL("wss", host, sslPort, file);
         }
@@ -205,9 +217,11 @@
 
     public void setHls(String host, int port, int sslPort, String app, String stream, String callIdParam) {
         String file = String.format("%s/%s/hls.m3u8%s", app, stream, callIdParam);
-        this.hls = new StreamURL("http", host, port, file);
-        this.ws_hls = new StreamURL("ws", host, port, file);
-        if (sslPort != 0) {
+        if (port > 0) {
+            this.hls = new StreamURL("http", host, port, file);
+            this.ws_hls = new StreamURL("ws", host, port, file);
+        }
+        if (sslPort > 0) {
             this.https_hls = new StreamURL("https", host, sslPort, file);
             this.wss_hls = new StreamURL("wss", host, sslPort, file);
         }
@@ -215,51 +229,94 @@
 
     public void setTs(String host, int port, int sslPort, String app, String stream, String callIdParam) {
         String file = String.format("%s/%s.live.ts%s", app, stream, callIdParam);
-        this.ts = new StreamURL("http", host, port, file);
-        this.ws_ts = new StreamURL("ws", host, port, file);
-        if (sslPort != 0) {
+
+        if (port > 0) {
+            this.ts = new StreamURL("http", host, port, file);
+            this.ws_ts = new StreamURL("ws", host, port, file);
+        }
+        if (sslPort > 0) {
             this.https_ts = new StreamURL("https", host, sslPort, file);
             this.wss_ts = new StreamURL("wss", host, sslPort, file);
         }
     }
 
-    public void setRtc(String host, int port, int sslPort, String app, String stream, String callIdParam) {
-        String file = String.format("index/api/webrtc?app=%s&stream=%s&type=play%s", app, stream, callIdParam);
-        this.rtc = new StreamURL("http", host, port, file);
-        if (sslPort != 0) {
+    public void setRtc(String host, int port, int sslPort, String app, String stream, String callIdParam, boolean isPlay) {
+        if (callIdParam != null) {
+            callIdParam = Objects.equals(callIdParam, "") ? callIdParam : callIdParam.replace("?", "&");
+        }
+        String file = String.format("index/api/webrtc?app=%s&stream=%s&type=%s%s", app, stream, isPlay?"play":"push", callIdParam);
+        if (port > 0) {
+            this.rtc = new StreamURL("http", host, port, file);
+        }
+        if (sslPort > 0) {
             this.rtcs = new StreamURL("https", host, sslPort, file);
         }
     }
 
     public void channgeStreamIp(String localAddr) {
-        this.flv.setHost(localAddr);
-        this.ws_flv.setHost(localAddr);
-        this.hls.setHost(localAddr);
-        this.ws_hls.setHost(localAddr);
-        this.ts.setHost(localAddr);
-        this.ws_ts.setHost(localAddr);
-        this.fmp4.setHost(localAddr);
-        this.ws_fmp4.setHost(localAddr);
-        this.rtc.setHost(localAddr);
+        if (this.flv != null) {
+            this.flv.setHost(localAddr);
+        }
+        if (this.ws_flv != null ){
+            this.ws_flv.setHost(localAddr);
+        }
+        if (this.hls != null ) {
+            this.hls.setHost(localAddr);
+        }
+        if (this.ws_hls != null ) {
+            this.ws_hls.setHost(localAddr);
+        }
+        if (this.ts != null ) {
+            this.ts.setHost(localAddr);
+        }
+        if (this.ws_ts != null ) {
+            this.ws_ts.setHost(localAddr);
+        }
+        if (this.fmp4 != null ) {
+            this.fmp4.setHost(localAddr);
+        }
+        if (this.ws_fmp4 != null ) {
+            this.ws_fmp4.setHost(localAddr);
+        }
+        if (this.rtc != null ) {
+            this.rtc.setHost(localAddr);
+        }
         if (this.https_flv != null) {
             this.https_flv.setHost(localAddr);
+        }
+        if (this.wss_flv != null) {
             this.wss_flv.setHost(localAddr);
+        }
+        if (this.https_hls != null) {
             this.https_hls.setHost(localAddr);
+        }
+        if (this.wss_hls != null) {
             this.wss_hls.setHost(localAddr);
+        }
+        if (this.wss_ts != null) {
             this.wss_ts.setHost(localAddr);
+        }
+        if (this.https_fmp4 != null) {
             this.https_fmp4.setHost(localAddr);
+        }
+        if (this.wss_fmp4 != null) {
             this.wss_fmp4.setHost(localAddr);
+        }
+        if (this.rtcs != null) {
             this.rtcs.setHost(localAddr);
         }
-        this.rtsp.setHost(localAddr);
+        if (this.rtsp != null) {
+            this.rtsp.setHost(localAddr);
+        }
         if (this.rtsps != null) {
             this.rtsps.setHost(localAddr);
         }
-        this.rtmp.setHost(localAddr);
+        if (this.rtmp != null) {
+            this.rtmp.setHost(localAddr);
+        }
         if (this.rtmps != null) {
             this.rtmps.setHost(localAddr);
         }
-
     }
 
 
@@ -469,9 +526,93 @@
         StreamInfo instance = null;
         try{
             instance = (StreamInfo)super.clone();
+            if (this.flv != null) {
+                instance.flv=this.flv.clone();
+            }
+            if (this.ws_flv != null ){
+                instance.ws_flv= this.ws_flv.clone();
+            }
+            if (this.hls != null ) {
+                instance.hls= this.hls.clone();
+            }
+            if (this.ws_hls != null ) {
+                instance.ws_hls= this.ws_hls.clone();
+            }
+            if (this.ts != null ) {
+                instance.ts= this.ts.clone();
+            }
+            if (this.ws_ts != null ) {
+                instance.ws_ts= this.ws_ts.clone();
+            }
+            if (this.fmp4 != null ) {
+                instance.fmp4= this.fmp4.clone();
+            }
+            if (this.ws_fmp4 != null ) {
+                instance.ws_fmp4= this.ws_fmp4.clone();
+            }
+            if (this.rtc != null ) {
+                instance.rtc= this.rtc.clone();
+            }
+            if (this.https_flv != null) {
+                instance.https_flv= this.https_flv.clone();
+            }
+            if (this.wss_flv != null) {
+                instance.wss_flv= this.wss_flv.clone();
+            }
+            if (this.https_hls != null) {
+                instance.https_hls= this.https_hls.clone();
+            }
+            if (this.wss_hls != null) {
+                instance.wss_hls= this.wss_hls.clone();
+            }
+            if (this.wss_ts != null) {
+                instance.wss_ts= this.wss_ts.clone();
+            }
+            if (this.https_fmp4 != null) {
+                instance.https_fmp4= this.https_fmp4.clone();
+            }
+            if (this.wss_fmp4 != null) {
+                instance.wss_fmp4= this.wss_fmp4.clone();
+            }
+            if (this.rtcs != null) {
+                instance.rtcs= this.rtcs.clone();
+            }
+            if (this.rtsp != null) {
+                instance.rtsp= this.rtsp.clone();
+            }
+            if (this.rtsps != null) {
+                instance.rtsps= this.rtsps.clone();
+            }
+            if (this.rtmp != null) {
+                instance.rtmp= this.rtmp.clone();
+            }
+            if (this.rtmps != null) {
+                instance.rtmps= this.rtmps.clone();
+            }
         }catch(CloneNotSupportedException e) {
             e.printStackTrace();
         }
         return instance;
     }
+
+
+    /*=========================璁惧涓诲瓙鐮佹祦閫昏緫START====================*/
+    @Schema(description = "鏄惁涓哄瓙鐮佹祦(true-鏄紝false-涓荤爜娴�)")
+    private boolean subStream;
+
+    public boolean isSubStream() {
+        return subStream;
+    }
+
+    public void setSubStream(boolean subStream) {
+        this.subStream = subStream;
+    }
+
+    public DownloadFileInfo getDownLoadFilePath() {
+        return downLoadFilePath;
+    }
+
+    public void setDownLoadFilePath(DownloadFileInfo downLoadFilePath) {
+        this.downLoadFilePath = downLoadFilePath;
+    }
 }

--
Gitblit v1.8.0