diff --git a/README.md b/README.md
index 1c131bff4..050c1386e 100644
--- a/README.md
+++ b/README.md
@@ -101,6 +101,7 @@ https://gitee.com/pan648540858/wvp-GB28181-pro.git
- [X] 目录订阅与通知
- [X] 录像查看与播放
- [X] GPS订阅与通知(直播推流)
+- [X] 支持手动添加设备和给设备设置单独的密码
- [X] 添加RTSP视频
- [X] 添加接口鉴权
- [X] 添加RTMP视频
@@ -155,7 +156,6 @@ QQ私信一般不回, 精力有限.欢迎大家在群里讨论.觉得项目对
# 授权协议
本项目自有代码使用宽松的MIT协议,在保留版权信息的情况下可以自由应用于各自商用、非商业的项目。 但是本项目也零碎的使用了一些其他的开源代码,在商用的情况下请自行替代或剔除; 由于使用本项目而产生的商业纠纷或侵权行为一概与本项目及开发者无关,请自行承担法律风险。 在使用本项目代码时,也应该在授权协议中同时表明本项目依赖的第三方库的协议
-
# 致谢
感谢作者[夏楚](https://github.com/xia-chu) 提供这么棒的开源流媒体服务框架,并在开发过程中给予支持与帮助。
感谢作者[dexter langhuihui](https://github.com/langhuihui) 开源这么好用的WEB播放器。
@@ -165,7 +165,7 @@ QQ私信一般不回, 精力有限.欢迎大家在群里讨论.觉得项目对
[hotcoffie](https://github.com/hotcoffie) [xiaomu](https://github.com/nikmu) [TristingChen](https://github.com/TristingChen)
[chenparty](https://github.com/chenparty) [Hotleave](https://github.com/hotleave) [ydwxb](https://github.com/ydwxb)
[ydpd](https://github.com/ydpd) [szy833](https://github.com/szy833) [ydwxb](https://github.com/ydwxb) [Albertzhu666](https://github.com/Albertzhu666)
-[mk1990](https://github.com/mk1990)
+[mk1990](https://github.com/mk1990) [SaltFish001](https://github.com/SaltFish001)
ps: 刚增加了这个名单,肯定遗漏了一些大佬,欢迎大佬联系我添加。
diff --git a/doc/_content/qa/play_error.md b/doc/_content/qa/play_error.md
index 8c9e75906..c8e9c02bb 100644
--- a/doc/_content/qa/play_error.md
+++ b/doc/_content/qa/play_error.md
@@ -1,6 +1,6 @@
# 点播错误
-排查点播错误你首先要清除[点播的基本流程](_content/theory/play.md),一般的流程如下:
+排查点播错误你首先要清楚[点播的基本流程](_content/theory/play.md),一般的流程如下:
```plantuml
@startuml
"WEB用户" -> "WVP-PRO": 1. 发起点播请求
diff --git a/pom.xml b/pom.xml
index 94c8277c6..7ed030440 100644
--- a/pom.xml
+++ b/pom.xml
@@ -11,7 +11,7 @@
com.genersoft
wvp-pro
- 2.3.2
+ 2.6.6
web video platform
国标28181视频平台
@@ -153,13 +153,17 @@
2.1.3
-
+
- com.alibaba
- fastjson
- 1.2.83
+ com.alibaba.fastjson2
+ fastjson2
+ 2.0.17
+
+
+ com.alibaba.fastjson2
+ fastjson2-extension
+ 2.0.17
-
diff --git a/sql/mysql.sql b/sql/mysql.sql
index a088c25ab..b5ca0161e 100644
--- a/sql/mysql.sql
+++ b/sql/mysql.sql
@@ -1,8 +1,8 @@
--- MySQL dump 10.13 Distrib 8.0.29, for Linux (x86_64)
+-- MySQL dump 10.13 Distrib 8.0.30, for Linux (x86_64)
--
--- Host: 127.0.0.1 Database: 242wvp
+-- Host: 127.0.0.1 Database: wvp
-- ------------------------------------------------------
--- Server version 8.0.29-0ubuntu0.22.04.3
+-- Server version 8.0.30
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
@@ -34,13 +34,13 @@ CREATE TABLE `device` (
`online` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
`registerTime` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
`keepaliveTime` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
- `ip` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
+ `ip` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL,
`createTime` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`updateTime` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
- `port` int NOT NULL,
- `expires` int NOT NULL,
- `subscribeCycleForCatalog` int NOT NULL,
- `hostAddress` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
+ `port` int DEFAULT NULL,
+ `expires` int DEFAULT NULL,
+ `subscribeCycleForCatalog` int DEFAULT NULL,
+ `hostAddress` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL,
`charset` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`subscribeCycleForMobilePosition` int DEFAULT NULL,
`mobilePositionSubmissionInterval` int DEFAULT '5',
@@ -49,9 +49,11 @@ CREATE TABLE `device` (
`geoCoordSys` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`treeType` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`mediaServerId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT 'auto',
+ `custom_name` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL,
+ `password` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `device_deviceId_uindex` (`deviceId`)
-) ENGINE=InnoDB AUTO_INCREMENT=36 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
+) ENGINE=InnoDB AUTO_INCREMENT=47 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
@@ -143,7 +145,7 @@ CREATE TABLE `device_channel` (
PRIMARY KEY (`id`),
UNIQUE KEY `device_channel_id_uindex` (`id`),
UNIQUE KEY `device_channel_pk` (`channelId`,`deviceId`)
-) ENGINE=InnoDB AUTO_INCREMENT=60163 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
+) ENGINE=InnoDB AUTO_INCREMENT=60301 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
@@ -213,7 +215,7 @@ CREATE TABLE `gb_stream` (
PRIMARY KEY (`gbStreamId`) USING BTREE,
UNIQUE KEY `app` (`app`,`stream`) USING BTREE,
UNIQUE KEY `gbId` (`gbId`) USING BTREE
-) ENGINE=InnoDB AUTO_INCREMENT=301057 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
+) ENGINE=InnoDB AUTO_INCREMENT=301059 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
/*!40101 SET character_set_client = @saved_cs_client */;
--
@@ -243,7 +245,7 @@ CREATE TABLE `log` (
`username` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`createTime` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
PRIMARY KEY (`id`) USING BTREE
-) ENGINE=InnoDB AUTO_INCREMENT=727574 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
+) ENGINE=InnoDB AUTO_INCREMENT=733627 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
/*!40101 SET character_set_client = @saved_cs_client */;
--
@@ -279,7 +281,6 @@ CREATE TABLE `media_server` (
`secret` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`rtpEnable` int NOT NULL,
`rtpPortRange` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
- `sendRtpPortRange` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`recordAssistPort` int NOT NULL,
`defaultServer` int NOT NULL,
`createTime` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
@@ -336,7 +337,7 @@ CREATE TABLE `parent_platform` (
PRIMARY KEY (`id`),
UNIQUE KEY `parent_platform_id_uindex` (`id`),
UNIQUE KEY `parent_platform_pk` (`serverGBId`)
-) ENGINE=InnoDB AUTO_INCREMENT=41 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
+) ENGINE=InnoDB AUTO_INCREMENT=44 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
/*!40101 SET character_set_client = @saved_cs_client */;
--
@@ -388,7 +389,7 @@ CREATE TABLE `platform_gb_channel` (
`catalogId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`deviceChannelId` int NOT NULL,
PRIMARY KEY (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=51 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
+) ENGINE=InnoDB AUTO_INCREMENT=102 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
@@ -414,7 +415,7 @@ CREATE TABLE `platform_gb_stream` (
`id` int NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`id`),
UNIQUE KEY `platform_gb_stream_pk` (`platformId`,`catalogId`,`gbStreamId`)
-) ENGINE=InnoDB AUTO_INCREMENT=301759 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
+) ENGINE=InnoDB AUTO_INCREMENT=301766 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
/*!40101 SET character_set_client = @saved_cs_client */;
--
@@ -453,9 +454,10 @@ CREATE TABLE `stream_proxy` (
`createTime` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
`updateTime` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
+ `enable_disable_none_reader` bit(1) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `stream_proxy_pk` (`app`,`stream`)
-) ENGINE=InnoDB AUTO_INCREMENT=545 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
+) ENGINE=InnoDB AUTO_INCREMENT=548 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
@@ -492,7 +494,7 @@ CREATE TABLE `stream_push` (
`self` int DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `stream_push_pk` (`app`,`stream`)
-) ENGINE=InnoDB AUTO_INCREMENT=310546 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
+) ENGINE=InnoDB AUTO_INCREMENT=310558 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
@@ -521,7 +523,7 @@ CREATE TABLE `user` (
`pushKey` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `user_username_uindex` (`username`) USING BTREE
-) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
+) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
/*!40101 SET character_set_client = @saved_cs_client */;
--
@@ -570,4 +572,4 @@ UNLOCK TABLES;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
--- Dump completed on 2022-09-08 16:46:27
+-- Dump completed on 2022-10-18 17:00:02
diff --git a/sql/update.sql b/sql/update.sql
index c026df985..405cb3a75 100644
--- a/sql/update.sql
+++ b/sql/update.sql
@@ -1,5 +1,38 @@
alter table media_server
drop column streamNoneReaderDelayMS;
+alter table media_server
+ drop column sendRtpPortRange;
+
alter table stream_proxy
add enable_disable_none_reader bit(1) default null;
+
+alter table device
+ add mediaServerId varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT 'auto';
+
+alter table device
+ add custom_name varchar(255) default null;
+
+alter table device
+ add sdpIp varchar(50) default null;
+
+alter table device
+ add localIp varchar(50) default null;
+
+alter table device
+ add password varchar(255) default null;
+
+alter table device
+ modify ip varchar(50) null;
+
+alter table device
+ modify port int null;
+
+alter table device
+ modify expires int null;
+
+alter table device
+ modify subscribeCycleForCatalog int null;
+
+alter table device
+ modify hostAddress varchar(50) null;
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 93d837c85..460f418cd 100644
--- a/src/main/java/com/genersoft/iot/vmp/common/StreamInfo.java
+++ b/src/main/java/com/genersoft/iot/vmp/common/StreamInfo.java
@@ -2,8 +2,10 @@ package com.genersoft.iot.vmp.common;
import io.swagger.v3.oas.annotations.media.Schema;
+import java.io.Serializable;
+
@Schema(description = "流信息")
-public class StreamInfo {
+public class StreamInfo implements Serializable, Cloneable{
@Schema(description = "应用名")
private String app;
@@ -13,54 +15,56 @@ public class StreamInfo {
private String deviceID;
@Schema(description = "通道编号")
private String channelId;
- @Schema(description = "HTTP-FLV流地址")
- private String flv;
@Schema(description = "IP")
private String ip;
+
+ @Schema(description = "HTTP-FLV流地址")
+ private StreamURL flv;
+
@Schema(description = "HTTPS-FLV流地址")
- private String https_flv;
+ private StreamURL https_flv;
@Schema(description = "Websocket-FLV流地址")
- private String ws_flv;
+ private StreamURL ws_flv;
@Schema(description = "Websockets-FLV流地址")
- private String wss_flv;
+ private StreamURL wss_flv;
@Schema(description = "HTTP-FMP4流地址")
- private String fmp4;
+ private StreamURL fmp4;
@Schema(description = "HTTPS-FMP4流地址")
- private String https_fmp4;
+ private StreamURL https_fmp4;
@Schema(description = "Websocket-FMP4流地址")
- private String ws_fmp4;
+ private StreamURL ws_fmp4;
@Schema(description = "Websockets-FMP4流地址")
- private String wss_fmp4;
+ private StreamURL wss_fmp4;
@Schema(description = "HLS流地址")
- private String hls;
+ private StreamURL hls;
@Schema(description = "HTTPS-HLS流地址")
- private String https_hls;
+ private StreamURL https_hls;
@Schema(description = "Websocket-HLS流地址")
- private String ws_hls;
+ private StreamURL ws_hls;
@Schema(description = "Websockets-HLS流地址")
- private String wss_hls;
+ private StreamURL wss_hls;
@Schema(description = "HTTP-TS流地址")
- private String ts;
+ private StreamURL ts;
@Schema(description = "HTTPS-TS流地址")
- private String https_ts;
+ private StreamURL https_ts;
@Schema(description = "Websocket-TS流地址")
- private String ws_ts;
+ private StreamURL ws_ts;
@Schema(description = "Websockets-TS流地址")
- private String wss_ts;
+ private StreamURL wss_ts;
@Schema(description = "RTMP流地址")
- private String rtmp;
+ private StreamURL rtmp;
@Schema(description = "RTMPS流地址")
- private String rtmps;
+ private StreamURL rtmps;
@Schema(description = "RTSP流地址")
- private String rtsp;
+ private StreamURL rtsp;
@Schema(description = "RTSPS流地址")
- private String rtsps;
+ private StreamURL rtsps;
@Schema(description = "RTC流地址")
- private String rtc;
+ private StreamURL rtc;
@Schema(description = "RTCS流地址")
- private String rtcs;
+ private StreamURL rtcs;
@Schema(description = "流媒体ID")
private String mediaServerId;
@Schema(description = "流编码信息")
@@ -75,6 +79,190 @@ public class StreamInfo {
@Schema(description = "是否暂停(录像回放使用)")
private boolean pause;
+ public void setFlv(StreamURL flv) {
+ this.flv = flv;
+ }
+
+ public void setHttps_flv(StreamURL https_flv) {
+ this.https_flv = https_flv;
+ }
+
+ public void setWs_flv(StreamURL ws_flv) {
+ this.ws_flv = ws_flv;
+ }
+
+ public void setWss_flv(StreamURL wss_flv) {
+ this.wss_flv = wss_flv;
+ }
+
+ public void setFmp4(StreamURL fmp4) {
+ this.fmp4 = fmp4;
+ }
+
+ public void setHttps_fmp4(StreamURL https_fmp4) {
+ this.https_fmp4 = https_fmp4;
+ }
+
+ 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 void setHttps_hls(StreamURL https_hls) {
+ this.https_hls = https_hls;
+ }
+
+ 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);
+ 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) {
+ 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);
+ 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);
+ 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);
+ 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);
+ 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) {
+ 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.https_flv != null) {
+ this.https_flv.setHost(localAddr);
+ this.wss_flv.setHost(localAddr);
+ this.https_hls.setHost(localAddr);
+ this.wss_hls.setHost(localAddr);
+ this.wss_ts.setHost(localAddr);
+ this.https_fmp4.setHost(localAddr);
+ this.wss_fmp4.setHost(localAddr);
+ this.rtcs.setHost(localAddr);
+ }
+ this.rtsp.setHost(localAddr);
+ if (this.rtsps != null) {
+ this.rtsps.setHost(localAddr);
+ }
+ this.rtmp.setHost(localAddr);
+ if (this.rtmps != null) {
+ this.rtmps.setHost(localAddr);
+ }
+
+ }
+
+
public static class TransactionInfo{
public String callId;
public String localTag;
@@ -108,94 +296,6 @@ public class StreamInfo {
this.channelId = channelId;
}
- public String getFlv() {
- return flv;
- }
-
- public void setFlv(String flv) {
- this.flv = flv;
- }
-
- public String getWs_flv() {
- return ws_flv;
- }
-
- public void setWs_flv(String ws_flv) {
- this.ws_flv = ws_flv;
- }
-
- public String getRtmp() {
- return rtmp;
- }
-
- public void setRtmp(String rtmp) {
- this.rtmp = rtmp;
- }
-
- public String getHls() {
- return hls;
- }
-
- public void setHls(String hls) {
- this.hls = hls;
- }
-
- public String getRtsp() {
- return rtsp;
- }
-
- public void setRtsp(String rtsp) {
- this.rtsp = rtsp;
- }
-
- public Object getTracks() {
- return tracks;
- }
-
- public void setTracks(Object tracks) {
- this.tracks = tracks;
- }
-
- public String getFmp4() {
- return fmp4;
- }
-
- public void setFmp4(String fmp4) {
- this.fmp4 = fmp4;
- }
-
- public String getWs_fmp4() {
- return ws_fmp4;
- }
-
- public void setWs_fmp4(String ws_fmp4) {
- this.ws_fmp4 = ws_fmp4;
- }
-
- public String getWs_hls() {
- return ws_hls;
- }
-
- public void setWs_hls(String ws_hls) {
- this.ws_hls = ws_hls;
- }
-
- public String getTs() {
- return ts;
- }
-
- public void setTs(String ts) {
- this.ts = ts;
- }
-
- public String getWs_ts() {
- return ws_ts;
- }
-
- public void setWs_ts(String ws_ts) {
- this.ws_ts = ws_ts;
- }
-
public String getStream() {
return stream;
}
@@ -204,20 +304,108 @@ public class StreamInfo {
this.stream = stream;
}
- public String getRtc() {
+ 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 void setRtc(String rtc) {
- this.rtc = rtc;
- }
-
- public TransactionInfo getTransactionInfo() {
- return transactionInfo;
- }
-
- public void setTransactionInfo(TransactionInfo transactionInfo) {
- this.transactionInfo = transactionInfo;
+ public StreamURL getRtcs() {
+ return rtcs;
}
public String getMediaServerId() {
@@ -228,87 +416,14 @@ public class StreamInfo {
this.mediaServerId = mediaServerId;
}
- public String getHttps_flv() {
- return https_flv;
+ public Object getTracks() {
+ return tracks;
}
- public void setHttps_flv(String https_flv) {
- this.https_flv = https_flv;
+ public void setTracks(Object tracks) {
+ this.tracks = tracks;
}
- public String getWss_flv() {
- return wss_flv;
- }
-
- public void setWss_flv(String wss_flv) {
- this.wss_flv = wss_flv;
- }
-
- public String getWss_fmp4() {
- return wss_fmp4;
- }
-
- public void setWss_fmp4(String wss_fmp4) {
- this.wss_fmp4 = wss_fmp4;
- }
-
- public String getWss_hls() {
- return wss_hls;
- }
-
- public void setWss_hls(String wss_hls) {
- this.wss_hls = wss_hls;
- }
-
- public String getWss_ts() {
- return wss_ts;
- }
-
- public void setWss_ts(String wss_ts) {
- this.wss_ts = wss_ts;
- }
-
- public String getRtmps() {
- return rtmps;
- }
-
- public void setRtmps(String rtmps) {
- this.rtmps = rtmps;
- }
-
- public String getRtsps() {
- return rtsps;
- }
-
- public void setRtsps(String rtsps) {
- this.rtsps = rtsps;
- }
-
- public String getHttps_hls() {
- return https_hls;
- }
-
- public void setHttps_hls(String https_hls) {
- this.https_hls = https_hls;
- }
-
- public String getHttps_fmp4() {
- return https_fmp4;
- }
-
- public void setHttps_fmp4(String https_fmp4) {
- this.https_fmp4 = https_fmp4;
- }
-
- public String getHttps_ts() {
- return https_ts;
- }
-
- public void setHttps_ts(String https_ts) {
- this.https_ts = https_ts;
- }
-
-
public String getStartTime() {
return startTime;
}
@@ -333,22 +448,6 @@ public class StreamInfo {
this.progress = progress;
}
- public String getIp() {
- return ip;
- }
-
- public void setIp(String ip) {
- this.ip = ip;
- }
-
- public String getRtcs() {
- return rtcs;
- }
-
- public void setRtcs(String rtcs) {
- this.rtcs = rtcs;
- }
-
public boolean isPause() {
return pause;
}
@@ -356,4 +455,23 @@ public class StreamInfo {
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();
+ }catch(CloneNotSupportedException e) {
+ e.printStackTrace();
+ }
+ return instance;
+ }
}
diff --git a/src/main/java/com/genersoft/iot/vmp/common/StreamURL.java b/src/main/java/com/genersoft/iot/vmp/common/StreamURL.java
new file mode 100644
index 000000000..eecf469ff
--- /dev/null
+++ b/src/main/java/com/genersoft/iot/vmp/common/StreamURL.java
@@ -0,0 +1,80 @@
+package com.genersoft.iot.vmp.common;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+
+import java.io.Serializable;
+
+
+@Schema(description = "流地址信息")
+public class StreamURL implements Serializable {
+
+ @Schema(description = "协议")
+ private String protocol;
+
+ @Schema(description = "主机地址")
+ private String host;
+
+ @Schema(description = "端口")
+ private int port = -1;
+
+ @Schema(description = "定位位置")
+ private String file;
+
+ @Schema(description = "拼接后的地址")
+ private String url;
+
+ public StreamURL() {
+ }
+
+ public StreamURL(String protocol, String host, int port, String file) {
+ this.protocol = protocol;
+ this.host = host;
+ this.port = port;
+ this.file = file;
+ }
+
+ public String getProtocol() {
+ return protocol;
+ }
+
+ public void setProtocol(String protocol) {
+ this.protocol = protocol;
+ }
+
+ public String getHost() {
+ return host;
+ }
+
+ public void setHost(String host) {
+ this.host = host;
+ }
+
+ public int getPort() {
+ return port;
+ }
+
+ public void setPort(int port) {
+ this.port = port;
+ }
+
+ public String getFile() {
+ return file;
+ }
+
+ public void setFile(String file) {
+ this.file = file;
+ }
+
+ public String getUrl() {
+ return this.toString();
+ }
+
+ @Override
+ public String toString() {
+ if (protocol != null && host != null && port != -1 ) {
+ return String.format("%s://%s:%s/%s", protocol, host, port, file);
+ }else {
+ return null;
+ }
+ }
+}
diff --git a/src/main/java/com/genersoft/iot/vmp/common/SystemAllInfo.java b/src/main/java/com/genersoft/iot/vmp/common/SystemAllInfo.java
new file mode 100644
index 000000000..48485da85
--- /dev/null
+++ b/src/main/java/com/genersoft/iot/vmp/common/SystemAllInfo.java
@@ -0,0 +1,54 @@
+package com.genersoft.iot.vmp.common;
+
+import java.util.List;
+
+public class SystemAllInfo {
+
+ private List