Merge branch 'wvp-28181-2.0'

# Conflicts:
#	src/main/java/com/genersoft/iot/vmp/common/StreamInfo.java
#	src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/InviteRequestProcessor.java
#	src/main/java/com/genersoft/iot/vmp/service/bean/RequestSendItemMsg.java
结构优化
648540858 2022-11-25 10:57:53 +08:00
commit d7623b5ca8
3 changed files with 107 additions and 60 deletions

View File

@ -169,25 +169,31 @@ public class StreamInfo implements Serializable, Cloneable{
public void setRtmp(String host, int port, int sslPort, String app, String stream, String callIdParam) { 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); String file = String.format("%s/%s/%s", app, stream, callIdParam);
if (port > 0) {
this.rtmp = new StreamURL("rtmp", host, port, file); this.rtmp = new StreamURL("rtmp", host, port, file);
if (sslPort != 0) { }
if (sslPort > 0) {
this.rtmps = new StreamURL("rtmps", host, sslPort, file); this.rtmps = new StreamURL("rtmps", host, sslPort, file);
} }
} }
public void setRtsp(String host, int port, int sslPort, String app, String stream, String callIdParam) { 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); String file = String.format("%s/%s/%s", app, stream, callIdParam);
if (port > 0) {
this.rtsp = new StreamURL("rtsp", host, port, file); this.rtsp = new StreamURL("rtsp", host, port, file);
if (sslPort != 0) { }
if (sslPort > 0) {
this.rtsps = new StreamURL("rtsps", host, sslPort, file); this.rtsps = new StreamURL("rtsps", host, sslPort, file);
} }
} }
public void setFlv(String host, int port, int sslPort, String app, String stream, String callIdParam) { 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); String file = String.format("%s/%s.live.flv%s", app, stream, callIdParam);
if (port > 0) {
this.flv = new StreamURL("http", host, port, file); this.flv = new StreamURL("http", host, port, file);
}
this.ws_flv = new StreamURL("ws", 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.https_flv = new StreamURL("https", host, sslPort, file);
this.wss_flv = new StreamURL("wss", host, sslPort, file); this.wss_flv = new StreamURL("wss", host, sslPort, file);
} }
@ -195,9 +201,11 @@ public class StreamInfo implements Serializable, Cloneable{
public void setFmp4(String host, int port, int sslPort, String app, String stream, String callIdParam) { 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); String file = String.format("%s/%s.live.mp4%s", app, stream, callIdParam);
if (port > 0) {
this.fmp4 = new StreamURL("http", host, port, file); this.fmp4 = new StreamURL("http", host, port, file);
this.ws_fmp4 = new StreamURL("ws", host, port, file); this.ws_fmp4 = new StreamURL("ws", host, port, file);
if (sslPort != 0) { }
if (sslPort > 0) {
this.https_fmp4 = new StreamURL("https", host, sslPort, file); this.https_fmp4 = new StreamURL("https", host, sslPort, file);
this.wss_fmp4 = new StreamURL("wss", host, sslPort, file); this.wss_fmp4 = new StreamURL("wss", host, sslPort, file);
} }
@ -205,9 +213,11 @@ public class StreamInfo implements Serializable, Cloneable{
public void setHls(String host, int port, int sslPort, String app, String stream, String callIdParam) { 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); String file = String.format("%s/%s/hls.m3u8%s", app, stream, callIdParam);
if (port > 0) {
this.hls = new StreamURL("http", host, port, file); this.hls = new StreamURL("http", host, port, file);
this.ws_hls = new StreamURL("ws", host, port, file); this.ws_hls = new StreamURL("ws", host, port, file);
if (sslPort != 0) { }
if (sslPort > 0) {
this.https_hls = new StreamURL("https", host, sslPort, file); this.https_hls = new StreamURL("https", host, sslPort, file);
this.wss_hls = new StreamURL("wss", host, sslPort, file); this.wss_hls = new StreamURL("wss", host, sslPort, file);
} }
@ -215,51 +225,91 @@ public class StreamInfo implements Serializable, Cloneable{
public void setTs(String host, int port, int sslPort, String app, String stream, String callIdParam) { 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); String file = String.format("%s/%s.live.ts%s", app, stream, callIdParam);
if (port > 0) {
this.ts = new StreamURL("http", host, port, file); this.ts = new StreamURL("http", host, port, file);
this.ws_ts = new StreamURL("ws", host, port, file); this.ws_ts = new StreamURL("ws", host, port, file);
if (sslPort != 0) { }
if (sslPort > 0) {
this.https_ts = new StreamURL("https", host, sslPort, file); this.https_ts = new StreamURL("https", host, sslPort, file);
this.wss_ts = new StreamURL("wss", 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) { 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=%s%s", app, stream, callIdParam, isPlay?"play":"push"); String file = String.format("index/api/webrtc?app=%s&stream=%s&type=play%s", app, stream, callIdParam);
if (port > 0) {
this.rtc = new StreamURL("http", host, port, file); this.rtc = new StreamURL("http", host, port, file);
if (sslPort != 0) { }
if (sslPort > 0) {
this.rtcs = new StreamURL("https", host, sslPort, file); this.rtcs = new StreamURL("https", host, sslPort, file);
} }
} }
public void channgeStreamIp(String localAddr) { public void channgeStreamIp(String localAddr) {
if (this.flv != null) {
this.flv.setHost(localAddr); this.flv.setHost(localAddr);
}
if (this.ws_flv != null ){
this.ws_flv.setHost(localAddr); this.ws_flv.setHost(localAddr);
}
if (this.hls != null ) {
this.hls.setHost(localAddr); this.hls.setHost(localAddr);
}
if (this.ws_hls != null ) {
this.ws_hls.setHost(localAddr); this.ws_hls.setHost(localAddr);
}
if (this.ts != null ) {
this.ts.setHost(localAddr); this.ts.setHost(localAddr);
}
if (this.ws_ts != null ) {
this.ws_ts.setHost(localAddr); this.ws_ts.setHost(localAddr);
}
if (this.fmp4 != null ) {
this.fmp4.setHost(localAddr); this.fmp4.setHost(localAddr);
}
if (this.ws_fmp4 != null ) {
this.ws_fmp4.setHost(localAddr); this.ws_fmp4.setHost(localAddr);
}
if (this.rtc != null ) {
this.rtc.setHost(localAddr); this.rtc.setHost(localAddr);
}
if (this.https_flv != null) { if (this.https_flv != null) {
this.https_flv.setHost(localAddr); this.https_flv.setHost(localAddr);
}
if (this.wss_flv != null) {
this.wss_flv.setHost(localAddr); this.wss_flv.setHost(localAddr);
}
if (this.https_hls != null) {
this.https_hls.setHost(localAddr); this.https_hls.setHost(localAddr);
}
if (this.wss_hls != null) {
this.wss_hls.setHost(localAddr); this.wss_hls.setHost(localAddr);
}
if (this.wss_ts != null) {
this.wss_ts.setHost(localAddr); this.wss_ts.setHost(localAddr);
}
if (this.https_fmp4 != null) {
this.https_fmp4.setHost(localAddr); this.https_fmp4.setHost(localAddr);
}
if (this.wss_fmp4 != null) {
this.wss_fmp4.setHost(localAddr); this.wss_fmp4.setHost(localAddr);
}
if (this.rtcs != null) {
this.rtcs.setHost(localAddr); this.rtcs.setHost(localAddr);
} }
if (this.rtsp != null) {
this.rtsp.setHost(localAddr); this.rtsp.setHost(localAddr);
}
if (this.rtsps != null) { if (this.rtsps != null) {
this.rtsps.setHost(localAddr); this.rtsps.setHost(localAddr);
} }
if (this.rtmp != null) {
this.rtmp.setHost(localAddr); this.rtmp.setHost(localAddr);
}
if (this.rtmps != null) { if (this.rtmps != null) {
this.rtmps.setHost(localAddr); this.rtmps.setHost(localAddr);
} }
} }

View File

@ -386,8 +386,7 @@ public class InviteRequestProcessor extends SIPRequestProcessorParent implements
return; return;
} }
SendRtpItem sendRtpItem = zlmrtpServerFactory.createSendRtpItem(mediaServerItem, addressStr, port, ssrc, requesterId, SendRtpItem sendRtpItem = zlmrtpServerFactory.createSendRtpItem(mediaServerItem, addressStr, port, ssrc, requesterId,
device.getDeviceId(), channelId, device.getDeviceId(), channelId, mediaTransmissionTCP, platform.isRtcp());
mediaTransmissionTCP, platform.isRtcp());
if (tcpActive != null) { if (tcpActive != null) {
sendRtpItem.setTcpActive(tcpActive); sendRtpItem.setTcpActive(tcpActive);
@ -582,8 +581,7 @@ public class InviteRequestProcessor extends SIPRequestProcessorParent implements
if (streamReady) { if (streamReady) {
// 自平台内容 // 自平台内容
SendRtpItem sendRtpItem = zlmrtpServerFactory.createSendRtpItem(mediaServerItem, addressStr, port, ssrc, requesterId, SendRtpItem sendRtpItem = zlmrtpServerFactory.createSendRtpItem(mediaServerItem, addressStr, port, ssrc, requesterId,
gbStream.getApp(), gbStream.getStream(), channelId, gbStream.getApp(), gbStream.getStream(), channelId, mediaTransmissionTCP, platform.isRtcp());
mediaTransmissionTCP, platform.isRtcp());
if (sendRtpItem == null) { if (sendRtpItem == null) {
logger.warn("服务器端口资源不足"); logger.warn("服务器端口资源不足");
@ -622,8 +620,7 @@ public class InviteRequestProcessor extends SIPRequestProcessorParent implements
if (streamReady) { if (streamReady) {
// 自平台内容 // 自平台内容
SendRtpItem sendRtpItem = zlmrtpServerFactory.createSendRtpItem(mediaServerItem, addressStr, port, ssrc, requesterId, SendRtpItem sendRtpItem = zlmrtpServerFactory.createSendRtpItem(mediaServerItem, addressStr, port, ssrc, requesterId,
gbStream.getApp(), gbStream.getStream(), channelId, gbStream.getApp(), gbStream.getStream(), channelId, mediaTransmissionTCP, platform.isRtcp());
mediaTransmissionTCP, platform.isRtcp());
if (sendRtpItem == null) { if (sendRtpItem == null) {
logger.warn("服务器端口资源不足"); logger.warn("服务器端口资源不足");
@ -802,7 +799,7 @@ public class InviteRequestProcessor extends SIPRequestProcessorParent implements
// 发送redis消息 // 发送redis消息
redisGbPlayMsgListener.sendMsg(streamPushItem.getServerId(), streamPushItem.getMediaServerId(), redisGbPlayMsgListener.sendMsg(streamPushItem.getServerId(), streamPushItem.getMediaServerId(),
streamPushItem.getApp(), streamPushItem.getStream(), addressStr, port, ssrc, requesterId, streamPushItem.getApp(), streamPushItem.getStream(), addressStr, port, ssrc, requesterId,
channelId, mediaTransmissionTCP, platform.isRtcp(), null, responseSendItemMsg -> { channelId, mediaTransmissionTCP, platform.isRtcp(),null, responseSendItemMsg -> {
SendRtpItem sendRtpItem = responseSendItemMsg.getSendRtpItem(); SendRtpItem sendRtpItem = responseSendItemMsg.getSendRtpItem();
if (sendRtpItem == null || responseSendItemMsg.getMediaServerItem() == null) { if (sendRtpItem == null || responseSendItemMsg.getMediaServerItem() == null) {
logger.warn("服务器端口资源不足"); logger.warn("服务器端口资源不足");

View File

@ -50,91 +50,91 @@
更多地址<i class="el-icon-arrow-down el-icon--right"></i> 更多地址<i class="el-icon-arrow-down el-icon--right"></i>
</el-button> </el-button>
<el-dropdown-menu slot="dropdown" > <el-dropdown-menu slot="dropdown" >
<el-dropdown-item :command="streamInfo.flv.url"> <el-dropdown-item v-if="streamInfo.flv" :command="streamInfo.flv.url">
<el-tag >FLV:</el-tag> <el-tag >FLV:</el-tag>
<span>{{ streamInfo.flv.url }}</span> <span>{{ streamInfo.flv.url }}</span>
</el-dropdown-item> </el-dropdown-item>
<el-dropdown-item :command="streamInfo.https_flv.url"> <el-dropdown-item v-if="streamInfo.https_flv" :command="streamInfo.https_flv.url">
<el-tag >FLV(https):</el-tag> <el-tag >FLV(https):</el-tag>
<span>{{ streamInfo.https_flv.url }}</span> <span>{{ streamInfo.https_flv.url }}</span>
</el-dropdown-item> </el-dropdown-item>
<el-dropdown-item :command="streamInfo.ws_flv.url"> <el-dropdown-item v-if="streamInfo.ws_flv" :command="streamInfo.ws_flv.url">
<el-tag >FLV(ws):</el-tag> <el-tag >FLV(ws):</el-tag>
<span >{{ streamInfo.ws_flv.url }}</span> <span >{{ streamInfo.ws_flv.url }}</span>
</el-dropdown-item> </el-dropdown-item>
<el-dropdown-item :command="streamInfo.wss_flv.url"> <el-dropdown-item v-if="streamInfo.wss_flv" :command="streamInfo.wss_flv.url">
<el-tag >FLV(wss):</el-tag> <el-tag >FLV(wss):</el-tag>
<span>{{ streamInfo.wss_flv.url }}</span> <span>{{ streamInfo.wss_flv.url }}</span>
</el-dropdown-item> </el-dropdown-item>
<el-dropdown-item :command="streamInfo.fmp4.url"> <el-dropdown-item v-if="streamInfo.fmp4" :command="streamInfo.fmp4.url">
<el-tag >FMP4:</el-tag> <el-tag >FMP4:</el-tag>
<span>{{ streamInfo.fmp4.url }}</span> <span>{{ streamInfo.fmp4.url }}</span>
</el-dropdown-item> </el-dropdown-item>
<el-dropdown-item :command="streamInfo.https_fmp4.url"> <el-dropdown-item v-if="streamInfo.https_fmp4" :command="streamInfo.https_fmp4.url">
<el-tag >FMP4(https):</el-tag> <el-tag >FMP4(https):</el-tag>
<span>{{ streamInfo.https_fmp4.url }}</span> <span>{{ streamInfo.https_fmp4.url }}</span>
</el-dropdown-item> </el-dropdown-item>
<el-dropdown-item :command="streamInfo.ws_fmp4.url"> <el-dropdown-item v-if="streamInfo.ws_fmp4" :command="streamInfo.ws_fmp4.url">
<el-tag >FMP4(ws):</el-tag> <el-tag >FMP4(ws):</el-tag>
<span>{{ streamInfo.ws_fmp4.url }}</span> <span>{{ streamInfo.ws_fmp4.url }}</span>
</el-dropdown-item> </el-dropdown-item>
<el-dropdown-item :command="streamInfo.wss_fmp4.url"> <el-dropdown-item v-if="streamInfo.wss_fmp4" :command="streamInfo.wss_fmp4.url">
<el-tag >FMP4(wss):</el-tag> <el-tag >FMP4(wss):</el-tag>
<span>{{ streamInfo.wss_fmp4.url }}</span> <span>{{ streamInfo.wss_fmp4.url }}</span>
</el-dropdown-item> </el-dropdown-item>
<el-dropdown-item :command="streamInfo.hls.url"> <el-dropdown-item v-if="streamInfo.hls" :command="streamInfo.hls.url">
<el-tag>HLS:</el-tag> <el-tag>HLS:</el-tag>
<span>{{ streamInfo.hls.url }}</span> <span>{{ streamInfo.hls.url }}</span>
</el-dropdown-item> </el-dropdown-item>
<el-dropdown-item :command="streamInfo.https_hls.url"> <el-dropdown-item v-if="streamInfo.https_hls" :command="streamInfo.https_hls.url">
<el-tag >HLS(https):</el-tag> <el-tag >HLS(https):</el-tag>
<span>{{ streamInfo.https_hls.url }}</span> <span>{{ streamInfo.https_hls.url }}</span>
</el-dropdown-item> </el-dropdown-item>
<el-dropdown-item :command="streamInfo.ws_hls.url"> <el-dropdown-item v-if="streamInfo.ws_hls" :command="streamInfo.ws_hls.url">
<el-tag >HLS(ws):</el-tag> <el-tag >HLS(ws):</el-tag>
<span>{{ streamInfo.ws_hls.url }}</span> <span>{{ streamInfo.ws_hls.url }}</span>
</el-dropdown-item> </el-dropdown-item>
<el-dropdown-item :command="streamInfo.wss_hls.url"> <el-dropdown-item v-if="streamInfo.wss_hls" :command="streamInfo.wss_hls.url">
<el-tag >HLS(wss):</el-tag> <el-tag >HLS(wss):</el-tag>
<span>{{ streamInfo.wss_hls.url }}</span> <span>{{ streamInfo.wss_hls.url }}</span>
</el-dropdown-item> </el-dropdown-item>
<el-dropdown-item :command="streamInfo.ts.url"> <el-dropdown-item v-if="streamInfo.ts" :command="streamInfo.ts.url">
<el-tag>TS:</el-tag> <el-tag>TS:</el-tag>
<span>{{ streamInfo.ts.url }}</span> <span>{{ streamInfo.ts.url }}</span>
</el-dropdown-item> </el-dropdown-item>
<el-dropdown-item :command="streamInfo.https_ts.url"> <el-dropdown-item v-if="streamInfo.https_ts" :command="streamInfo.https_ts.url">
<el-tag>TS(https):</el-tag> <el-tag>TS(https):</el-tag>
<span>{{ streamInfo.https_ts.url }}</span> <span>{{ streamInfo.https_ts.url }}</span>
</el-dropdown-item> </el-dropdown-item>
<el-dropdown-item :command="streamInfo.ws_ts.url"> <el-dropdown-item v-if="streamInfo.ws_ts" :command="streamInfo.ws_ts.url">
<el-tag>TS(ws):</el-tag> <el-tag>TS(ws):</el-tag>
<span>{{ streamInfo.ws_ts.url }}</span> <span>{{ streamInfo.ws_ts.url }}</span>
</el-dropdown-item> </el-dropdown-item>
<el-dropdown-item :command="streamInfo.wss_ts.url"> <el-dropdown-item v-if="streamInfo.wss_ts" :command="streamInfo.wss_ts.url">
<el-tag>TS(wss):</el-tag> <el-tag>TS(wss):</el-tag>
<span>{{ streamInfo.wss_ts.url }}</span> <span>{{ streamInfo.wss_ts.url }}</span>
</el-dropdown-item> </el-dropdown-item>
<el-dropdown-item :command="streamInfo.rtc.url"> <el-dropdown-item v-if="streamInfo.rtc" :command="streamInfo.rtc.url">
<el-tag >RTC:</el-tag> <el-tag >RTC:</el-tag>
<span>{{ streamInfo.rtc.url }}</span> <span>{{ streamInfo.rtc.url }}</span>
</el-dropdown-item> </el-dropdown-item>
<el-dropdown-item :command="streamInfo.rtcs.url"> <el-dropdown-item v-if="streamInfo.rtcs" :command="streamInfo.rtcs.url">
<el-tag >RTCS:</el-tag> <el-tag >RTCS:</el-tag>
<span>{{ streamInfo.rtcs }}</span> <span>{{ streamInfo.rtcs }}</span>
</el-dropdown-item> </el-dropdown-item>
<el-dropdown-item :command="streamInfo.rtmp.url"> <el-dropdown-item v-if="streamInfo.rtmp" :command="streamInfo.rtmp.url">
<el-tag >RTMP:</el-tag> <el-tag >RTMP:</el-tag>
<span>{{ streamInfo.rtmp.url }}</span> <span>{{ streamInfo.rtmp.url }}</span>
</el-dropdown-item> </el-dropdown-item>
<el-dropdown-item :command="streamInfo.rtmps.url"> <el-dropdown-item v-if="streamInfo.rtmps" :command="streamInfo.rtmps.url">
<el-tag >RTMPS:</el-tag> <el-tag >RTMPS:</el-tag>
<span>{{ streamInfo.rtmps.url }}</span> <span>{{ streamInfo.rtmps.url }}</span>
</el-dropdown-item> </el-dropdown-item>
<el-dropdown-item :command="streamInfo.rtsp.url"> <el-dropdown-item v-if="streamInfo.rtsp" :command="streamInfo.rtsp.url">
<el-tag >RTSP:</el-tag> <el-tag >RTSP:</el-tag>
<span>{{ streamInfo.rtsp.url }}</span> <span>{{ streamInfo.rtsp.url }}</span>
</el-dropdown-item> </el-dropdown-item>
<el-dropdown-item :command="streamInfo.rtsps.url"> <el-dropdown-item v-if="streamInfo.rtsps" :command="streamInfo.rtsps.url">
<el-tag >RTSPS:</el-tag> <el-tag >RTSPS:</el-tag>
<span>{{ streamInfo.rtsps.url }}</span> <span>{{ streamInfo.rtsps.url }}</span>
</el-dropdown-item> </el-dropdown-item>