From 1de344674afd6bb35b51b165bbad76dbe6299b7e Mon Sep 17 00:00:00 2001 From: 648540858 <648540858@qq.com> Date: 星期四, 28 三月 2024 18:08:33 +0800 Subject: [PATCH] 使用冒号分隔redis的key --- src/main/java/com/genersoft/iot/vmp/common/StreamInfo.java | 608 +++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 569 insertions(+), 39 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 270f72a..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,65 +1,340 @@ package com.genersoft.iot.vmp.common; -import com.alibaba.fastjson.JSONArray; +import com.genersoft.iot.vmp.service.bean.DownloadFileInfo; +import io.swagger.v3.oas.annotations.media.Schema; -public class StreamInfo { +import java.io.Serializable; +import java.util.Objects; - private String ssrc; +@Schema(description = "娴佷俊鎭�") +public class StreamInfo implements Serializable, Cloneable{ + + @Schema(description = "搴旂敤鍚�") + private String app; + @Schema(description = "娴両D") + private String stream; + @Schema(description = "璁惧缂栧彿") private String deviceID; - private String cahnnelId; - private String flv; - private String ws_flv; - private String rtmp; - private String hls; - private String rtsp; - private JSONArray tracks; + @Schema(description = "閫氶亾缂栧彿") + private String channelId; - public String getSsrc() { - return ssrc; - } + @Schema(description = "IP") + private String ip; - public void setSsrc(String ssrc) { - this.ssrc = ssrc; - } + @Schema(description = "HTTP-FLV娴佸湴鍧�") + private StreamURL flv; - public String getFlv() { - return flv; - } + @Schema(description = "HTTPS-FLV娴佸湴鍧�") + private StreamURL https_flv; + @Schema(description = "Websocket-FLV娴佸湴鍧�") + private StreamURL ws_flv; + @Schema(description = "Websockets-FLV娴佸湴鍧�") + private StreamURL wss_flv; + @Schema(description = "HTTP-FMP4娴佸湴鍧�") + private StreamURL fmp4; + @Schema(description = "HTTPS-FMP4娴佸湴鍧�") + private StreamURL https_fmp4; + @Schema(description = "Websocket-FMP4娴佸湴鍧�") + private StreamURL ws_fmp4; + @Schema(description = "Websockets-FMP4娴佸湴鍧�") + private StreamURL wss_fmp4; + @Schema(description = "HLS娴佸湴鍧�") + private StreamURL hls; + @Schema(description = "HTTPS-HLS娴佸湴鍧�") + private StreamURL https_hls; + @Schema(description = "Websocket-HLS娴佸湴鍧�") + private StreamURL ws_hls; + @Schema(description = "Websockets-HLS娴佸湴鍧�") + private StreamURL wss_hls; + @Schema(description = "HTTP-TS娴佸湴鍧�") + private StreamURL ts; + @Schema(description = "HTTPS-TS娴佸湴鍧�") + private StreamURL https_ts; + @Schema(description = "Websocket-TS娴佸湴鍧�") + private StreamURL ws_ts; + @Schema(description = "Websockets-TS娴佸湴鍧�") + private StreamURL wss_ts; + @Schema(description = "RTMP娴佸湴鍧�") + private StreamURL rtmp; + @Schema(description = "RTMPS娴佸湴鍧�") + private StreamURL rtmps; + @Schema(description = "RTSP娴佸湴鍧�") + private StreamURL rtsp; + @Schema(description = "RTSPS娴佸湴鍧�") + private StreamURL rtsps; + @Schema(description = "RTC娴佸湴鍧�") + private StreamURL rtc; - public void setFlv(String flv) { + @Schema(description = "RTCS娴佸湴鍧�") + private StreamURL rtcs; + @Schema(description = "娴佸獟浣揑D") + private String mediaServerId; + @Schema(description = "娴佺紪鐮佷俊鎭�") + private Object tracks; + @Schema(description = "寮�濮嬫椂闂�") + private String startTime; + @Schema(description = "缁撴潫鏃堕棿") + private String endTime; + @Schema(description = "杩涘害锛堝綍鍍忎笅杞戒娇鐢級") + private double progress; + @Schema(description = "鏂囦欢涓嬭浇鍦板潃锛堝綍鍍忎笅杞戒娇鐢級") + private DownloadFileInfo downLoadFilePath; + + @Schema(description = "鏄惁鏆傚仠锛堝綍鍍忓洖鏀句娇鐢級") + private boolean pause; + + public void setFlv(StreamURL flv) { this.flv = flv; } - public String getWs_flv() { - return ws_flv; + public void setHttps_flv(StreamURL https_flv) { + this.https_flv = https_flv; } - public void setWs_flv(String ws_flv) { + public void setWs_flv(StreamURL ws_flv) { this.ws_flv = ws_flv; } - public String getRtmp() { - return rtmp; + public void setWss_flv(StreamURL wss_flv) { + this.wss_flv = wss_flv; } - public void setRtmp(String rtmp) { - this.rtmp = rtmp; + public void setFmp4(StreamURL fmp4) { + this.fmp4 = fmp4; } - public String getHls() { - return hls; + public void setHttps_fmp4(StreamURL https_fmp4) { + this.https_fmp4 = https_fmp4; } - public void setHls(String hls) { + public void setWs_fmp4(StreamURL ws_fmp4) { + this.ws_fmp4 = ws_fmp4; + } + + public void setWss_fmp4(StreamURL wss_fmp4) { + this.wss_fmp4 = wss_fmp4; + } + + public void setHls(StreamURL hls) { this.hls = hls; } - public String getRtsp() { - return rtsp; + public void setHttps_hls(StreamURL https_hls) { + this.https_hls = https_hls; } - public void setRtsp(String rtsp) { + public void setWs_hls(StreamURL ws_hls) { + this.ws_hls = ws_hls; + } + + public void setWss_hls(StreamURL wss_hls) { + this.wss_hls = wss_hls; + } + + public void setTs(StreamURL ts) { + this.ts = ts; + } + + public void setHttps_ts(StreamURL https_ts) { + this.https_ts = https_ts; + } + + public void setWs_ts(StreamURL ws_ts) { + this.ws_ts = ws_ts; + } + + public void setWss_ts(StreamURL wss_ts) { + this.wss_ts = wss_ts; + } + + public void setRtmp(StreamURL rtmp) { + this.rtmp = rtmp; + } + + public void setRtmps(StreamURL rtmps) { + this.rtmps = rtmps; + } + + public void setRtsp(StreamURL rtsp) { this.rtsp = rtsp; + } + + public void setRtsps(StreamURL rtsps) { + this.rtsps = rtsps; + } + + public void setRtc(StreamURL rtc) { + this.rtc = rtc; + } + + public void setRtcs(StreamURL rtcs) { + this.rtcs = rtcs; + } + + 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); + 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); + 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); + if (port > 0) { + this.flv = new StreamURL("http", host, port, file); + } + this.ws_flv = new StreamURL("ws", host, port, file); + if (sslPort > 0) { + this.https_flv = new StreamURL("https", host, sslPort, file); + this.wss_flv = new StreamURL("wss", host, sslPort, file); + } + } + + 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); + 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); + } + } + + 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); + 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); + } + } + + 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); + + 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, 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) { + 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); + } + if (this.rtsp != null) { + this.rtsp.setHost(localAddr); + } + if (this.rtsps != null) { + this.rtsps.setHost(localAddr); + } + if (this.rtmp != null) { + this.rtmp.setHost(localAddr); + } + if (this.rtmps != null) { + this.rtmps.setHost(localAddr); + } + } + + + public static class TransactionInfo{ + public String callId; + public String localTag; + public String remoteTag; + public String branch; + } + + private TransactionInfo transactionInfo; + + public String getApp() { + return app; + } + + public void setApp(String app) { + this.app = app; } public String getDeviceID() { @@ -70,19 +345,274 @@ this.deviceID = deviceID; } - public String getCahnnelId() { - return cahnnelId; + public String getChannelId() { + return channelId; } - public void setCahnnelId(String cahnnelId) { - this.cahnnelId = cahnnelId; + public void setChannelId(String channelId) { + this.channelId = channelId; } - public JSONArray getTracks() { + public String getStream() { + return stream; + } + + public void setStream(String stream) { + this.stream = stream; + } + + public String getIp() { + return ip; + } + + public void setIp(String ip) { + this.ip = ip; + } + + public StreamURL getFlv() { + return flv; + } + + public StreamURL getHttps_flv() { + return https_flv; + } + + public StreamURL getWs_flv() { + return ws_flv; + } + + + public StreamURL getWss_flv() { + return wss_flv; + } + + public StreamURL getFmp4() { + return fmp4; + } + + + + public StreamURL getHttps_fmp4() { + return https_fmp4; + } + + public StreamURL getWs_fmp4() { + return ws_fmp4; + } + + public StreamURL getWss_fmp4() { + return wss_fmp4; + } + + public StreamURL getHls() { + return hls; + } + + + public StreamURL getHttps_hls() { + return https_hls; + } + + public StreamURL getWs_hls() { + return ws_hls; + } + + public StreamURL getWss_hls() { + return wss_hls; + } + + public StreamURL getTs() { + return ts; + } + + + public StreamURL getHttps_ts() { + return https_ts; + } + + + public StreamURL getWs_ts() { + return ws_ts; + } + + + public StreamURL getWss_ts() { + return wss_ts; + } + + + public StreamURL getRtmp() { + return rtmp; + } + + public StreamURL getRtmps() { + return rtmps; + } + + public StreamURL getRtsp() { + return rtsp; + } + + public StreamURL getRtsps() { + return rtsps; + } + + public StreamURL getRtc() { + return rtc; + } + + public StreamURL getRtcs() { + return rtcs; + } + + public String getMediaServerId() { + return mediaServerId; + } + + public void setMediaServerId(String mediaServerId) { + this.mediaServerId = mediaServerId; + } + + public Object getTracks() { return tracks; } - public void setTracks(JSONArray tracks) { + public void setTracks(Object tracks) { this.tracks = tracks; } + + public String getStartTime() { + return startTime; + } + + public void setStartTime(String startTime) { + this.startTime = startTime; + } + + public String getEndTime() { + return endTime; + } + + public void setEndTime(String endTime) { + this.endTime = endTime; + } + + public double getProgress() { + return progress; + } + + public void setProgress(double progress) { + this.progress = progress; + } + + public boolean isPause() { + return pause; + } + + public void setPause(boolean pause) { + this.pause = pause; + } + + public TransactionInfo getTransactionInfo() { + return transactionInfo; + } + + public void setTransactionInfo(TransactionInfo transactionInfo) { + this.transactionInfo = transactionInfo; + } + + @Override + public StreamInfo clone() { + 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