فهرست منبع

优化代码,升级版本号为2.7.1

648540858 1 سال پیش
والد
کامیت
54b878d2e1
22فایلهای تغییر یافته به همراه196 افزوده شده و 836 حذف شده
  1. 1 1
      pom.xml
  2. 25 53
      src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/AckRequestProcessor.java
  3. 3 3
      src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/InviteRequestProcessor.java
  4. 5 0
      src/main/java/com/genersoft/iot/vmp/media/service/IMediaNodeServerService.java
  5. 9 1
      src/main/java/com/genersoft/iot/vmp/media/service/IMediaServerService.java
  6. 50 0
      src/main/java/com/genersoft/iot/vmp/media/service/impl/MediaServerServiceImpl.java
  7. 1 1
      src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMMediaListManager.java
  8. 48 0
      src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMMediaNodeServerService.java
  9. 1 2
      src/main/java/com/genersoft/iot/vmp/service/IPlayService.java
  10. 1 1
      src/main/java/com/genersoft/iot/vmp/service/impl/PlatformServiceImpl.java
  11. 44 120
      src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java
  12. 1 1
      src/main/java/com/genersoft/iot/vmp/service/impl/StreamProxyServiceImpl.java
  13. 1 1
      src/main/java/com/genersoft/iot/vmp/service/redisMsg/RedisGbPlayMsgListener.java
  14. 1 1
      src/main/java/com/genersoft/iot/vmp/vmanager/ps/PsController.java
  15. 1 1
      src/main/java/com/genersoft/iot/vmp/vmanager/rtp/RtpController.java
  16. 1 1
      src/main/resources/application.yml
  17. 1 0
      数据库/abl/初始化-mysql-2.7.0.sql
  18. 1 0
      数据库/abl/初始化-postgresql-kingbase-2.7.0.sql
  19. 0 0
      数据库/2.7.1/更新-mysql-2.7.0.sql
  20. 1 1
      数据库/abl/更新-mysql-2.7.0.sql
  21. 0 324
      数据库/初始化-mysql.sql
  22. 0 324
      数据库/初始化-postgresql-kingbase.sql

+ 1 - 1
pom.xml

@@ -11,7 +11,7 @@
 
 
     <groupId>com.genersoft</groupId>
     <groupId>com.genersoft</groupId>
     <artifactId>wvp-pro</artifactId>
     <artifactId>wvp-pro</artifactId>
-    <version>2.7.0</version>
+    <version>2.7.1</version>
     <name>web video platform</name>
     <name>web video platform</name>
     <description>国标28181视频平台</description>
     <description>国标28181视频平台</description>
     <packaging>${project.packaging}</packaging>
     <packaging>${project.packaging}</packaging>

+ 25 - 53
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/AckRequestProcessor.java

@@ -3,6 +3,9 @@ package com.genersoft.iot.vmp.gb28181.transmit.event.request.impl;
 import com.alibaba.fastjson2.JSONObject;
 import com.alibaba.fastjson2.JSONObject;
 import com.genersoft.iot.vmp.conf.DynamicTask;
 import com.genersoft.iot.vmp.conf.DynamicTask;
 import com.genersoft.iot.vmp.conf.UserSetting;
 import com.genersoft.iot.vmp.conf.UserSetting;
+import com.genersoft.iot.vmp.conf.exception.ControllerException;
+import com.genersoft.iot.vmp.conf.exception.SsrcTransactionNotFoundException;
+import com.genersoft.iot.vmp.gb28181.bean.AudioBroadcastCatch;
 import com.genersoft.iot.vmp.gb28181.bean.Device;
 import com.genersoft.iot.vmp.gb28181.bean.Device;
 import com.genersoft.iot.vmp.gb28181.bean.ParentPlatform;
 import com.genersoft.iot.vmp.gb28181.bean.ParentPlatform;
 import com.genersoft.iot.vmp.gb28181.bean.SendRtpItem;
 import com.genersoft.iot.vmp.gb28181.bean.SendRtpItem;
@@ -25,12 +28,15 @@ import org.springframework.beans.factory.InitializingBean;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 import org.springframework.stereotype.Component;
 
 
+import javax.sip.InvalidArgumentException;
 import javax.sip.RequestEvent;
 import javax.sip.RequestEvent;
+import javax.sip.SipException;
 import javax.sip.address.SipURI;
 import javax.sip.address.SipURI;
 import javax.sip.header.CallIdHeader;
 import javax.sip.header.CallIdHeader;
 import javax.sip.header.FromHeader;
 import javax.sip.header.FromHeader;
 import javax.sip.header.HeaderAddress;
 import javax.sip.header.HeaderAddress;
 import javax.sip.header.ToHeader;
 import javax.sip.header.ToHeader;
+import java.text.ParseException;
 import java.util.HashMap;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Map;
 
 
@@ -115,19 +121,24 @@ public class AckRequestProcessor extends SIPRequestProcessorParent implements In
 		ParentPlatform parentPlatform = storager.queryParentPlatByServerGBId(fromUserId);
 		ParentPlatform parentPlatform = storager.queryParentPlatByServerGBId(fromUserId);
 
 
 		if (parentPlatform != null) {
 		if (parentPlatform != null) {
-			Map<String, Object> param = getSendRtpParam(sendRtpItem);
 			if (!userSetting.getServerId().equals(sendRtpItem.getServerId())) {
 			if (!userSetting.getServerId().equals(sendRtpItem.getServerId())) {
 				RequestPushStreamMsg requestPushStreamMsg = RequestPushStreamMsg.getInstance(
 				RequestPushStreamMsg requestPushStreamMsg = RequestPushStreamMsg.getInstance(
 						sendRtpItem.getMediaServerId(), sendRtpItem.getApp(), sendRtpItem.getStream(),
 						sendRtpItem.getMediaServerId(), sendRtpItem.getApp(), sendRtpItem.getStream(),
 						sendRtpItem.getIp(), sendRtpItem.getPort(), sendRtpItem.getSsrc(), sendRtpItem.isTcp(),
 						sendRtpItem.getIp(), sendRtpItem.getPort(), sendRtpItem.getSsrc(), sendRtpItem.isTcp(),
 						sendRtpItem.getLocalPort(), sendRtpItem.getPt(), sendRtpItem.isUsePs(), sendRtpItem.isOnlyAudio());
 						sendRtpItem.getLocalPort(), sendRtpItem.getPt(), sendRtpItem.isUsePs(), sendRtpItem.isOnlyAudio());
 				redisGbPlayMsgListener.sendMsgForStartSendRtpStream(sendRtpItem.getServerId(), requestPushStreamMsg, json -> {
 				redisGbPlayMsgListener.sendMsgForStartSendRtpStream(sendRtpItem.getServerId(), requestPushStreamMsg, json -> {
-					playService.startSendRtpStreamHand(sendRtpItem, parentPlatform, json, param, callIdHeader);
+					playService.startSendRtpStreamFailHand(sendRtpItem, parentPlatform, callIdHeader);
 				});
 				});
 			} else {
 			} else {
-				JSONObject startSendRtpStreamResult = sendRtp(sendRtpItem, mediaInfo, param);
-				if (startSendRtpStreamResult != null) {
-					playService.startSendRtpStreamHand(sendRtpItem, parentPlatform, startSendRtpStreamResult, param, callIdHeader);
+				try {
+					if (sendRtpItem.isTcpActive()) {
+						mediaServerService.startSendRtpPassive(mediaInfo, parentPlatform, sendRtpItem, null);
+					} else {
+						mediaServerService.startSendRtpStream(mediaInfo, parentPlatform, sendRtpItem);
+					}
+				}catch (ControllerException e) {
+					logger.error("RTP推流失败: {}", e.getMessage());
+					playService.startSendRtpStreamFailHand(sendRtpItem, parentPlatform, callIdHeader);
 				}
 				}
 			}
 			}
 		}else {
 		}else {
@@ -144,56 +155,17 @@ public class AckRequestProcessor extends SIPRequestProcessorParent implements In
 				logger.warn("[收到ACK]:来自{},目标为({})的推流信息为找到流体服务[{}]信息",fromUserId, toUserId, sendRtpItem.getMediaServerId());
 				logger.warn("[收到ACK]:来自{},目标为({})的推流信息为找到流体服务[{}]信息",fromUserId, toUserId, sendRtpItem.getMediaServerId());
 				return;
 				return;
 			}
 			}
-			Map<String, Object> param = getSendRtpParam(sendRtpItem);
-			JSONObject startSendRtpStreamResult = sendRtp(sendRtpItem, mediaInfo, param);
-			if (startSendRtpStreamResult != null) {
-				playService.startSendRtpStreamHand(sendRtpItem, device, startSendRtpStreamResult, param, callIdHeader);
-			}
-		}
-	}
-
-	private Map<String, Object> getSendRtpParam(SendRtpItem sendRtpItem) {
-		String isUdp = sendRtpItem.isTcp() ? "0" : "1";
-		Map<String, Object> param = new HashMap<>(12);
-		param.put("vhost","__defaultVhost__");
-		param.put("app",sendRtpItem.getApp());
-		param.put("stream",sendRtpItem.getStream());
-		param.put("ssrc", sendRtpItem.getSsrc());
-		param.put("dst_url",sendRtpItem.getIp());
-		param.put("dst_port", sendRtpItem.getPort());
-		param.put("src_port", sendRtpItem.getLocalPort());
-		param.put("pt", sendRtpItem.getPt());
-		param.put("use_ps", sendRtpItem.isUsePs() ? "1" : "0");
-		param.put("only_audio", sendRtpItem.isOnlyAudio() ? "1" : "0");
-		param.put("is_udp", isUdp);
-		if (!sendRtpItem.isTcp()) {
-			// udp模式下开启rtcp保活
-			param.put("udp_rtcp_timeout", sendRtpItem.isRtcp()? "1":"0");
-		}
-		return param;
-	}
-
-	private JSONObject sendRtp(SendRtpItem sendRtpItem, MediaServer mediaInfo, Map<String, Object> param){
-		JSONObject startSendRtpStreamResult = null;
-		if (sendRtpItem.getLocalPort() != 0) {
-			if (sendRtpItem.isTcpActive()) {
-				startSendRtpStreamResult = zlmServerFactory.startSendRtpPassive(mediaInfo, param);
-			}else {
-				param.put("dst_url", sendRtpItem.getIp());
-				param.put("dst_port", sendRtpItem.getPort());
-				startSendRtpStreamResult = zlmServerFactory.startSendRtpStream(mediaInfo, param);
-			}
-		}else {
-			if (sendRtpItem.isTcpActive()) {
-				startSendRtpStreamResult = zlmServerFactory.startSendRtpPassive(mediaInfo, param);
-			}else {
-				param.put("dst_url", sendRtpItem.getIp());
-				param.put("dst_port", sendRtpItem.getPort());
-				startSendRtpStreamResult = zlmServerFactory.startSendRtpStream(mediaInfo, param);
+			try {
+				if (sendRtpItem.isTcpActive()) {
+					mediaServerService.startSendRtpPassive(mediaInfo, null, sendRtpItem, null);
+				} else {
+					mediaServerService.startSendRtpStream(mediaInfo, null, sendRtpItem);
+				}
+			}catch (ControllerException e) {
+				logger.error("RTP推流失败: {}", e.getMessage());
+				playService.startSendRtpStreamFailHand(sendRtpItem, null, callIdHeader);
 			}
 			}
 		}
 		}
-		return startSendRtpStreamResult;
-
 	}
 	}
 
 
 }
 }

+ 3 - 3
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/InviteRequestProcessor.java

@@ -641,7 +641,7 @@ public class InviteRequestProcessor extends SIPRequestProcessorParent implements
                             CallIdHeader callIdHeader, MediaServer mediaServerItem,
                             CallIdHeader callIdHeader, MediaServer mediaServerItem,
                             int port, Boolean tcpActive, boolean mediaTransmissionTCP,
                             int port, Boolean tcpActive, boolean mediaTransmissionTCP,
                             String channelId, String addressStr, String ssrc, String requesterId) {
                             String channelId, String addressStr, String ssrc, String requesterId) {
-            Boolean streamReady = zlmServerFactory.isStreamReady(mediaServerItem, gbStream.getApp(), gbStream.getStream());
+            Boolean streamReady = mediaServerService.isStreamReady(mediaServerItem, gbStream.getApp(), gbStream.getStream());
             if (streamReady != null && streamReady) {
             if (streamReady != null && streamReady) {
                 // 自平台内容
                 // 自平台内容
                 SendRtpItem sendRtpItem = zlmServerFactory.createSendRtpItem(mediaServerItem, addressStr, port, ssrc, requesterId,
                 SendRtpItem sendRtpItem = zlmServerFactory.createSendRtpItem(mediaServerItem, addressStr, port, ssrc, requesterId,
@@ -681,7 +681,7 @@ public class InviteRequestProcessor extends SIPRequestProcessorParent implements
                             String channelId, String addressStr, String ssrc, String requesterId) {
                             String channelId, String addressStr, String ssrc, String requesterId) {
         // 推流
         // 推流
         if (streamPushItem.isSelf()) {
         if (streamPushItem.isSelf()) {
-            Boolean streamReady = zlmServerFactory.isStreamReady(mediaServerItem, gbStream.getApp(), gbStream.getStream());
+            Boolean streamReady = mediaServerService.isStreamReady(mediaServerItem, gbStream.getApp(), gbStream.getStream());
             if (streamReady != null && streamReady) {
             if (streamReady != null && streamReady) {
                 // 自平台内容
                 // 自平台内容
                 SendRtpItem sendRtpItem = zlmServerFactory.createSendRtpItem(mediaServerItem, addressStr, port, ssrc, requesterId,
                 SendRtpItem sendRtpItem = zlmServerFactory.createSendRtpItem(mediaServerItem, addressStr, port, ssrc, requesterId,
@@ -1108,7 +1108,7 @@ public class InviteRequestProcessor extends SIPRequestProcessorParent implements
 
 
                 redisCatchStorage.updateSendRTPSever(sendRtpItem);
                 redisCatchStorage.updateSendRTPSever(sendRtpItem);
 
 
-                Boolean streamReady = zlmServerFactory.isStreamReady(mediaServerItem, broadcastCatch.getApp(), broadcastCatch.getStream());
+                Boolean streamReady = mediaServerService.isStreamReady(mediaServerItem, broadcastCatch.getApp(), broadcastCatch.getStream());
                 if (streamReady) {
                 if (streamReady) {
                     sendOk(device, sendRtpItem, sdp, request, mediaServerItem, mediaTransmissionTCP, gb28181Sdp.getSsrc());
                     sendOk(device, sendRtpItem, sdp, request, mediaServerItem, mediaTransmissionTCP, gb28181Sdp.getSsrc());
                 } else {
                 } else {

+ 5 - 0
src/main/java/com/genersoft/iot/vmp/media/service/IMediaNodeServerService.java

@@ -2,6 +2,7 @@ package com.genersoft.iot.vmp.media.service;
 
 
 import com.genersoft.iot.vmp.common.CommonCallback;
 import com.genersoft.iot.vmp.common.CommonCallback;
 import com.genersoft.iot.vmp.common.StreamInfo;
 import com.genersoft.iot.vmp.common.StreamInfo;
+import com.genersoft.iot.vmp.gb28181.bean.SendRtpItem;
 import com.genersoft.iot.vmp.media.bean.MediaInfo;
 import com.genersoft.iot.vmp.media.bean.MediaInfo;
 import com.genersoft.iot.vmp.media.bean.MediaServer;
 import com.genersoft.iot.vmp.media.bean.MediaServer;
 import com.genersoft.iot.vmp.vmanager.bean.WVPResult;
 import com.genersoft.iot.vmp.vmanager.bean.WVPResult;
@@ -53,4 +54,8 @@ public interface IMediaNodeServerService {
     Boolean delStreamProxy(MediaServer mediaServer, String streamKey);
     Boolean delStreamProxy(MediaServer mediaServer, String streamKey);
 
 
     Map<String, String> getFFmpegCMDs(MediaServer mediaServer);
     Map<String, String> getFFmpegCMDs(MediaServer mediaServer);
+
+    void startSendRtpPassive(MediaServer mediaServer, SendRtpItem sendRtpItem, Integer timeout);
+
+    void startSendRtpStream(MediaServer mediaServer, SendRtpItem sendRtpItem);
 }
 }

+ 9 - 1
src/main/java/com/genersoft/iot/vmp/media/service/IMediaServerService.java

@@ -2,6 +2,8 @@ package com.genersoft.iot.vmp.media.service;
 
 
 import com.genersoft.iot.vmp.common.CommonCallback;
 import com.genersoft.iot.vmp.common.CommonCallback;
 import com.genersoft.iot.vmp.common.StreamInfo;
 import com.genersoft.iot.vmp.common.StreamInfo;
+import com.genersoft.iot.vmp.gb28181.bean.ParentPlatform;
+import com.genersoft.iot.vmp.gb28181.bean.SendRtpItem;
 import com.genersoft.iot.vmp.media.bean.MediaInfo;
 import com.genersoft.iot.vmp.media.bean.MediaInfo;
 import com.genersoft.iot.vmp.media.bean.MediaServer;
 import com.genersoft.iot.vmp.media.bean.MediaServer;
 import com.genersoft.iot.vmp.service.bean.MediaServerLoad;
 import com.genersoft.iot.vmp.service.bean.MediaServerLoad;
@@ -133,5 +135,11 @@ public interface IMediaServerService {
      * @param stream
      * @param stream
      * @return
      * @return
      */
      */
-    StreamInfo getStreamInfoByAppAndStream(MediaServer mediaServerItem, String app, String stream, MediaInfo mediaInfo, String addr, String callId, boolean isPlay);
+    StreamInfo getStreamInfoByAppAndStream(MediaServer mediaServer, String app, String stream, MediaInfo mediaInfo, String addr, String callId, boolean isPlay);
+
+    Boolean isStreamReady(MediaServer mediaServer, String rtp, String streamId);
+
+    void startSendRtpPassive(MediaServer mediaServer, ParentPlatform platform, SendRtpItem sendRtpItem, Integer timeout);
+
+    void startSendRtpStream(MediaServer mediaServer, ParentPlatform platform, SendRtpItem sendRtpItem);
 }
 }

+ 50 - 0
src/main/java/com/genersoft/iot/vmp/media/service/impl/MediaServerServiceImpl.java

@@ -7,6 +7,9 @@ import com.genersoft.iot.vmp.common.VideoManagerConstants;
 import com.genersoft.iot.vmp.conf.MediaConfig;
 import com.genersoft.iot.vmp.conf.MediaConfig;
 import com.genersoft.iot.vmp.conf.UserSetting;
 import com.genersoft.iot.vmp.conf.UserSetting;
 import com.genersoft.iot.vmp.conf.exception.ControllerException;
 import com.genersoft.iot.vmp.conf.exception.ControllerException;
+import com.genersoft.iot.vmp.gb28181.bean.InviteStreamType;
+import com.genersoft.iot.vmp.gb28181.bean.ParentPlatform;
+import com.genersoft.iot.vmp.gb28181.bean.SendRtpItem;
 import com.genersoft.iot.vmp.gb28181.session.SSRCFactory;
 import com.genersoft.iot.vmp.gb28181.session.SSRCFactory;
 import com.genersoft.iot.vmp.media.bean.MediaInfo;
 import com.genersoft.iot.vmp.media.bean.MediaInfo;
 import com.genersoft.iot.vmp.media.event.media.MediaArrivalEvent;
 import com.genersoft.iot.vmp.media.event.media.MediaArrivalEvent;
@@ -19,6 +22,7 @@ import com.genersoft.iot.vmp.media.bean.MediaServer;
 import com.genersoft.iot.vmp.media.zlm.dto.StreamAuthorityInfo;
 import com.genersoft.iot.vmp.media.zlm.dto.StreamAuthorityInfo;
 import com.genersoft.iot.vmp.service.IInviteStreamService;
 import com.genersoft.iot.vmp.service.IInviteStreamService;
 import com.genersoft.iot.vmp.service.bean.MediaServerLoad;
 import com.genersoft.iot.vmp.service.bean.MediaServerLoad;
+import com.genersoft.iot.vmp.service.bean.MessageForPushChannel;
 import com.genersoft.iot.vmp.service.bean.SSRCInfo;
 import com.genersoft.iot.vmp.service.bean.SSRCInfo;
 import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
 import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
 import com.genersoft.iot.vmp.storager.dao.MediaServerMapper;
 import com.genersoft.iot.vmp.storager.dao.MediaServerMapper;
@@ -784,4 +788,50 @@ public class MediaServerServiceImpl implements IMediaServerService {
         streamInfoResult.setMediaInfo(mediaInfo);
         streamInfoResult.setMediaInfo(mediaInfo);
         return streamInfoResult;
         return streamInfoResult;
     }
     }
+
+    @Override
+    public Boolean isStreamReady(MediaServer mediaServer, String rtp, String streamId) {
+        IMediaNodeServerService mediaNodeServerService = nodeServerServiceMap.get(mediaServer.getType());
+        if (mediaNodeServerService == null) {
+            logger.info("[isStreamReady] 失败, mediaServer的类型: {},未找到对应的实现类", mediaServer.getType());
+            return false;
+        }
+        MediaInfo mediaInfo = mediaNodeServerService.getMediaInfo(mediaServer, rtp, streamId);
+        return mediaInfo != null;
+    }
+
+    @Override
+    public void startSendRtpPassive(MediaServer mediaServer, ParentPlatform platform, SendRtpItem sendRtpItem, Integer timeout) {
+        IMediaNodeServerService mediaNodeServerService = nodeServerServiceMap.get(mediaServer.getType());
+        if (mediaNodeServerService == null) {
+            logger.info("[startSendRtpPassive] 失败, mediaServer的类型: {},未找到对应的实现类", mediaServer.getType());
+            throw new ControllerException(ErrorCode.ERROR100.getCode(), "未找到mediaServer对应的实现类");
+        }
+        mediaNodeServerService.startSendRtpPassive(mediaServer, sendRtpItem, timeout);
+        sendPlatformStartPlayMsg(platform, sendRtpItem);
+    }
+
+    @Override
+    public void startSendRtpStream(MediaServer mediaServer, ParentPlatform platform, SendRtpItem sendRtpItem) {
+        IMediaNodeServerService mediaNodeServerService = nodeServerServiceMap.get(mediaServer.getType());
+        if (mediaNodeServerService == null) {
+            logger.info("[startSendRtpStream] 失败, mediaServer的类型: {},未找到对应的实现类", mediaServer.getType());
+            throw new ControllerException(ErrorCode.ERROR100.getCode(), "未找到mediaServer对应的实现类");
+        }
+        logger.info("[开始推流] rtp/{}, 目标={}:{},SSRC={}, RTCP={}", sendRtpItem.getStream(),
+                sendRtpItem.getIp(), sendRtpItem.getPort(), sendRtpItem.getSsrc(), sendRtpItem.isRtcp());
+        mediaNodeServerService.startSendRtpStream(mediaServer, sendRtpItem);
+        sendPlatformStartPlayMsg(platform, sendRtpItem);
+
+    }
+
+    private void sendPlatformStartPlayMsg(ParentPlatform platform, SendRtpItem sendRtpItem) {
+        if (sendRtpItem.getPlayType() == InviteStreamType.PUSH && platform  != null) {
+            MessageForPushChannel messageForPushChannel = MessageForPushChannel.getInstance(0, sendRtpItem.getApp(), sendRtpItem.getStream(),
+                    sendRtpItem.getChannelId(), platform.getServerGBId(), platform.getName(), userSetting.getServerId(),
+                    sendRtpItem.getMediaServerId());
+            messageForPushChannel.setPlatFormIndex(platform.getId());
+            redisCatchStorage.sendPlatformStartPlayMsg(messageForPushChannel);
+        }
+    }
 }
 }

+ 1 - 1
src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMMediaListManager.java

@@ -92,7 +92,7 @@ public class ZLMMediaListManager {
     public void sendStreamEvent(String app, String stream, String mediaServerId) {
     public void sendStreamEvent(String app, String stream, String mediaServerId) {
         MediaServer mediaServerItem = mediaServerService.getOne(mediaServerId);
         MediaServer mediaServerItem = mediaServerService.getOne(mediaServerId);
         // 查看推流状态
         // 查看推流状态
-        Boolean streamReady = zlmServerFactory.isStreamReady(mediaServerItem, app, stream);
+        Boolean streamReady = mediaServerService.isStreamReady(mediaServerItem, app, stream);
         if (streamReady != null && streamReady) {
         if (streamReady != null && streamReady) {
             ChannelOnlineEvent channelOnlineEventLister = getChannelOnlineEventLister(app, stream);
             ChannelOnlineEvent channelOnlineEventLister = getChannelOnlineEventLister(app, stream);
             if (channelOnlineEventLister != null)  {
             if (channelOnlineEventLister != null)  {

+ 48 - 0
src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMMediaNodeServerService.java

@@ -6,6 +6,7 @@ import com.alibaba.fastjson2.JSONObject;
 import com.genersoft.iot.vmp.common.CommonCallback;
 import com.genersoft.iot.vmp.common.CommonCallback;
 import com.genersoft.iot.vmp.common.StreamInfo;
 import com.genersoft.iot.vmp.common.StreamInfo;
 import com.genersoft.iot.vmp.conf.exception.ControllerException;
 import com.genersoft.iot.vmp.conf.exception.ControllerException;
+import com.genersoft.iot.vmp.gb28181.bean.SendRtpItem;
 import com.genersoft.iot.vmp.media.bean.MediaInfo;
 import com.genersoft.iot.vmp.media.bean.MediaInfo;
 import com.genersoft.iot.vmp.media.service.IMediaNodeServerService;
 import com.genersoft.iot.vmp.media.service.IMediaNodeServerService;
 import com.genersoft.iot.vmp.media.bean.MediaServer;
 import com.genersoft.iot.vmp.media.bean.MediaServer;
@@ -298,4 +299,51 @@ public class ZLMMediaNodeServerService implements IMediaNodeServerService {
         }
         }
         return result;
         return result;
     }
     }
+
+    @Override
+    public void startSendRtpPassive(MediaServer mediaServer, SendRtpItem sendRtpItem, Integer timeout) {
+        Map<String, Object> param = new HashMap<>(12);
+        param.put("vhost","__defaultVhost__");
+        param.put("app", sendRtpItem.getApp());
+        param.put("stream", sendRtpItem.getStream());
+        param.put("ssrc", sendRtpItem.getSsrc());
+        param.put("src_port", sendRtpItem.getLocalPort());
+        param.put("pt", sendRtpItem.getPt());
+        param.put("use_ps", sendRtpItem.isUsePs() ? "1" : "0");
+        param.put("only_audio", sendRtpItem.isOnlyAudio() ? "1" : "0");
+        param.put("is_udp", sendRtpItem.isTcp() ? "0" : "1");
+        param.put("recv_stream_id", sendRtpItem.getReceiveStream());
+        if (timeout  != null) {
+            param.put("close_delay_ms", timeout);
+        }
+
+        JSONObject jsonObject = zlmServerFactory.startSendRtpPassive(mediaServer, param, null);
+        if (jsonObject == null || jsonObject.getInteger("code") != 0 ) {
+            throw new ControllerException(jsonObject.getInteger("code"), jsonObject.getString("msg"));
+        }
+    }
+
+    @Override
+    public void startSendRtpStream(MediaServer mediaServer, SendRtpItem sendRtpItem) {
+        Map<String, Object> param = new HashMap<>(12);
+        param.put("vhost", "__defaultVhost__");
+        param.put("app", sendRtpItem.getApp());
+        param.put("stream", sendRtpItem.getStream());
+        param.put("ssrc", sendRtpItem.getSsrc());
+        param.put("src_port", sendRtpItem.getLocalPort());
+        param.put("pt", sendRtpItem.getPt());
+        param.put("use_ps", sendRtpItem.isUsePs() ? "1" : "0");
+        param.put("only_audio", sendRtpItem.isOnlyAudio() ? "1" : "0");
+        param.put("is_udp", sendRtpItem.isTcp() ? "0" : "1");
+        if (!sendRtpItem.isTcp()) {
+            // udp模式下开启rtcp保活
+            param.put("udp_rtcp_timeout", sendRtpItem.isRtcp() ? "1" : "0");
+        }
+        param.put("dst_url", sendRtpItem.getIp());
+        param.put("dst_port", sendRtpItem.getPort());
+        JSONObject jsonObject = zlmServerFactory.startSendRtpStream(mediaServer, param);
+        if (jsonObject == null || jsonObject.getInteger("code") != 0 ) {
+            throw new ControllerException(jsonObject.getInteger("code"), jsonObject.getString("msg"));
+        }
+    }
 }
 }

+ 1 - 2
src/main/java/com/genersoft/iot/vmp/service/IPlayService.java

@@ -59,8 +59,7 @@ public interface IPlayService {
 
 
     void startPushStream(SendRtpItem sendRtpItem, SIPResponse sipResponse, ParentPlatform platform, CallIdHeader callIdHeader);
     void startPushStream(SendRtpItem sendRtpItem, SIPResponse sipResponse, ParentPlatform platform, CallIdHeader callIdHeader);
 
 
-    void startSendRtpStreamHand(SendRtpItem sendRtpItem, Object correlationInfo,
-                                JSONObject jsonObject, Map<String, Object> param, CallIdHeader callIdHeader);
+    void startSendRtpStreamFailHand(SendRtpItem sendRtpItem,ParentPlatform platform, CallIdHeader callIdHeader);
 
 
     void talkCmd(Device device, String channelId, MediaServer mediaServerItem, String stream, AudioBroadcastEvent event);
     void talkCmd(Device device, String channelId, MediaServer mediaServerItem, String stream, AudioBroadcastEvent event);
 
 

+ 1 - 1
src/main/java/com/genersoft/iot/vmp/service/impl/PlatformServiceImpl.java

@@ -512,7 +512,7 @@ public class PlatformServiceImpl implements IPlatformService {
             // 如果zlm不存在这个流,则删除数据即可
             // 如果zlm不存在这个流,则删除数据即可
             MediaServer mediaServerItemForStreamInfo = mediaServerService.getOne(inviteInfoForOld.getStreamInfo().getMediaServerId());
             MediaServer mediaServerItemForStreamInfo = mediaServerService.getOne(inviteInfoForOld.getStreamInfo().getMediaServerId());
             if (mediaServerItemForStreamInfo != null) {
             if (mediaServerItemForStreamInfo != null) {
-                Boolean ready = zlmServerFactory.isStreamReady(mediaServerItemForStreamInfo, inviteInfoForOld.getStreamInfo().getApp(), inviteInfoForOld.getStreamInfo().getStream());
+                Boolean ready = mediaServerService.isStreamReady(mediaServerItemForStreamInfo, inviteInfoForOld.getStreamInfo().getApp(), inviteInfoForOld.getStreamInfo().getStream());
                 if (!ready) {
                 if (!ready) {
                     // 错误存在于redis中的数据
                     // 错误存在于redis中的数据
                     inviteStreamService.removeInviteInfo(inviteInfoForOld);
                     inviteStreamService.removeInviteInfo(inviteInfoForOld);

+ 44 - 120
src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java

@@ -84,9 +84,6 @@ public class PlayServiceImpl implements IPlayService {
     @Autowired
     @Autowired
     private IRedisCatchStorage redisCatchStorage;
     private IRedisCatchStorage redisCatchStorage;
 
 
-    @Autowired
-    private ZLMServerFactory zlmServerFactory;
-
     @Autowired
     @Autowired
     private IInviteStreamService inviteStreamService;
     private IInviteStreamService inviteStreamService;
 
 
@@ -302,8 +299,7 @@ public class PlayServiceImpl implements IPlayService {
                 }
                 }
                 String mediaServerId = streamInfo.getMediaServerId();
                 String mediaServerId = streamInfo.getMediaServerId();
                 MediaServer mediaInfo = mediaServerService.getOne(mediaServerId);
                 MediaServer mediaInfo = mediaServerService.getOne(mediaServerId);
-
-                Boolean ready = zlmServerFactory.isStreamReady(mediaInfo, "rtp", streamId);
+                Boolean ready = mediaServerService.isStreamReady(mediaInfo, "rtp", streamId);
                 if (ready != null && ready) {
                 if (ready != null && ready) {
                     callback.run(InviteErrorCode.SUCCESS.getCode(), InviteErrorCode.SUCCESS.getMsg(), streamInfo);
                     callback.run(InviteErrorCode.SUCCESS.getCode(), InviteErrorCode.SUCCESS.getMsg(), streamInfo);
                     inviteStreamService.call(InviteSessionType.PLAY, device.getDeviceId(), channelId, null,
                     inviteStreamService.call(InviteSessionType.PLAY, device.getDeviceId(), channelId, null,
@@ -391,28 +387,15 @@ public class PlayServiceImpl implements IPlayService {
             }
             }
         }, userSetting.getPlayTimeout());
         }, userSetting.getPlayTimeout());
 
 
-        Map<String, Object> param = new HashMap<>(12);
-        param.put("vhost","__defaultVhost__");
-        param.put("app", sendRtpItem.getApp());
-        param.put("stream", sendRtpItem.getStream());
-        param.put("ssrc", sendRtpItem.getSsrc());
-        param.put("src_port", sendRtpItem.getLocalPort());
-        param.put("pt", sendRtpItem.getPt());
-        param.put("use_ps", sendRtpItem.isUsePs() ? "1" : "0");
-        param.put("only_audio", sendRtpItem.isOnlyAudio() ? "1" : "0");
-        param.put("is_udp", sendRtpItem.isTcp() ? "0" : "1");
-        param.put("recv_stream_id", sendRtpItem.getReceiveStream());
-        param.put("close_delay_ms", userSetting.getPlayTimeout() * 1000);
-
-        zlmServerFactory.startSendRtpPassive(mediaServerItem, param, jsonObject -> {
-            if (jsonObject == null || jsonObject.getInteger("code") != 0 ) {
-                mediaServerService.releaseSsrc(mediaServerItem.getId(), sendRtpItem.getSsrc());
-                logger.info("[语音对讲]失败 deviceId: {}, channelId: {}", device.getDeviceId(), channelId);
-                audioEvent.call("失败, " + jsonObject.getString("msg"));
-                // 查看是否已经建立了通道,存在则发送bye
-                stopTalk(device, channelId);
-            }
-        });
+        try {
+            mediaServerService.startSendRtpPassive(mediaServerItem, null, sendRtpItem, userSetting.getPlayTimeout() * 1000);
+        }catch (ControllerException e) {
+            mediaServerService.releaseSsrc(mediaServerItem.getId(), sendRtpItem.getSsrc());
+            logger.info("[语音对讲]失败 deviceId: {}, channelId: {}", device.getDeviceId(), channelId);
+            audioEvent.call("失败, " + e.getMessage());
+            // 查看是否已经建立了通道,存在则发送bye
+            stopTalk(device, channelId);
+        }
 
 
 
 
         // 查看设备是否已经在推流
         // 查看设备是否已经在推流
@@ -1238,7 +1221,7 @@ public class PlayServiceImpl implements IPlayService {
             SendRtpItem sendRtpItem = redisCatchStorage.querySendRTPServer(device.getDeviceId(), channelId, null, null);
             SendRtpItem sendRtpItem = redisCatchStorage.querySendRTPServer(device.getDeviceId(), channelId, null, null);
             if (sendRtpItem != null && sendRtpItem.isOnlyAudio()) {
             if (sendRtpItem != null && sendRtpItem.isOnlyAudio()) {
                 // 查询流是否存在,不存在则认为是异常状态
                 // 查询流是否存在,不存在则认为是异常状态
-                Boolean streamReady = zlmServerFactory.isStreamReady(mediaServerItem, sendRtpItem.getApp(), sendRtpItem.getStream());
+                Boolean streamReady = mediaServerService.isStreamReady(mediaServerItem, sendRtpItem.getApp(), sendRtpItem.getStream());
                 if (streamReady) {
                 if (streamReady) {
                     logger.warn("语音广播已经开启: {}", channelId);
                     logger.warn("语音广播已经开启: {}", channelId);
                     event.call("语音广播已经开启");
                     event.call("语音广播已经开启");
@@ -1248,18 +1231,6 @@ public class PlayServiceImpl implements IPlayService {
                 }
                 }
             }
             }
         }
         }
-//        SendRtpItem sendRtpItem = redisCatchStorage.querySendRTPServer(device.getDeviceId(), channelId, null, null);
-//        if (sendRtpItem != null) {
-//            MediaServerItem mediaServer = mediaServerService.getOne(sendRtpItem.getMediaServerId());
-//            Boolean streamReady = zlmServerFactory.isStreamReady(mediaServer, sendRtpItem.getApp(), sendRtpItem.getStream());
-//            if (streamReady) {
-//                logger.warn("[语音对讲] 进行中: {}", channelId);
-//                event.call("语音对讲进行中");
-//                return false;
-//            } else {
-//                stopTalk(device, channelId);
-//            }
-//        }
 
 
         // 发送通知
         // 发送通知
         cmder.audioBroadcastCmd(device, channelId, eventResultForOk -> {
         cmder.audioBroadcastCmd(device, channelId, eventResultForOk -> {
@@ -1291,7 +1262,7 @@ public class PlayServiceImpl implements IPlayService {
             if (sendRtpItem != null && sendRtpItem.isOnlyAudio()) {
             if (sendRtpItem != null && sendRtpItem.isOnlyAudio()) {
                 // 查询流是否存在,不存在则认为是异常状态
                 // 查询流是否存在,不存在则认为是异常状态
                 MediaServer mediaServerServiceOne = mediaServerService.getOne(sendRtpItem.getMediaServerId());
                 MediaServer mediaServerServiceOne = mediaServerService.getOne(sendRtpItem.getMediaServerId());
-                Boolean streamReady = zlmServerFactory.isStreamReady(mediaServerServiceOne, sendRtpItem.getApp(), sendRtpItem.getStream());
+                Boolean streamReady = mediaServerService.isStreamReady(mediaServerServiceOne, sendRtpItem.getApp(), sendRtpItem.getStream());
                 if (streamReady) {
                 if (streamReady) {
                     logger.warn("语音广播通道使用中: {}", channelId);
                     logger.warn("语音广播通道使用中: {}", channelId);
                     return true;
                     return true;
@@ -1447,24 +1418,7 @@ public class PlayServiceImpl implements IPlayService {
     @Override
     @Override
     public void startPushStream(SendRtpItem sendRtpItem, SIPResponse sipResponse, ParentPlatform platform, CallIdHeader callIdHeader) {
     public void startPushStream(SendRtpItem sendRtpItem, SIPResponse sipResponse, ParentPlatform platform, CallIdHeader callIdHeader) {
         // 开始发流
         // 开始发流
-        String is_Udp = sendRtpItem.isTcp() ? "0" : "1";
         MediaServer mediaInfo = mediaServerService.getOne(sendRtpItem.getMediaServerId());
         MediaServer mediaInfo = mediaServerService.getOne(sendRtpItem.getMediaServerId());
-        logger.info("[开始推流] rtp/{}, 目标={}:{},SSRC={}, RTCP={}", sendRtpItem.getStream(),
-                sendRtpItem.getIp(), sendRtpItem.getPort(), sendRtpItem.getSsrc(), sendRtpItem.isRtcp());
-        Map<String, Object> param = new HashMap<>(12);
-        param.put("vhost", "__defaultVhost__");
-        param.put("app", sendRtpItem.getApp());
-        param.put("stream", sendRtpItem.getStream());
-        param.put("ssrc", sendRtpItem.getSsrc());
-        param.put("src_port", sendRtpItem.getLocalPort());
-        param.put("pt", sendRtpItem.getPt());
-        param.put("use_ps", sendRtpItem.isUsePs() ? "1" : "0");
-        param.put("only_audio", sendRtpItem.isOnlyAudio() ? "1" : "0");
-        param.put("is_udp", is_Udp);
-        if (!sendRtpItem.isTcp()) {
-            // udp模式下开启rtcp保活
-            param.put("udp_rtcp_timeout", sendRtpItem.isRtcp() ? "1" : "0");
-        }
 
 
         if (mediaInfo == null) {
         if (mediaInfo == null) {
             RequestPushStreamMsg requestPushStreamMsg = RequestPushStreamMsg.getInstance(
             RequestPushStreamMsg requestPushStreamMsg = RequestPushStreamMsg.getInstance(
@@ -1472,75 +1426,50 @@ public class PlayServiceImpl implements IPlayService {
                     sendRtpItem.getIp(), sendRtpItem.getPort(), sendRtpItem.getSsrc(), sendRtpItem.isTcp(),
                     sendRtpItem.getIp(), sendRtpItem.getPort(), sendRtpItem.getSsrc(), sendRtpItem.isTcp(),
                     sendRtpItem.getLocalPort(), sendRtpItem.getPt(), sendRtpItem.isUsePs(), sendRtpItem.isOnlyAudio());
                     sendRtpItem.getLocalPort(), sendRtpItem.getPt(), sendRtpItem.isUsePs(), sendRtpItem.isOnlyAudio());
             redisGbPlayMsgListener.sendMsgForStartSendRtpStream(sendRtpItem.getServerId(), requestPushStreamMsg, json -> {
             redisGbPlayMsgListener.sendMsgForStartSendRtpStream(sendRtpItem.getServerId(), requestPushStreamMsg, json -> {
-                startSendRtpStreamHand(sendRtpItem, platform, json, param, callIdHeader);
+                startSendRtpStreamFailHand(sendRtpItem, platform, callIdHeader);
             });
             });
         } else {
         } else {
-            // 如果是严格模式,需要关闭端口占用
-            JSONObject startSendRtpStreamResult = null;
-            if (sendRtpItem.getLocalPort() != 0) {
-                if (sendRtpItem.isTcpActive()) {
-                    startSendRtpStreamResult = zlmServerFactory.startSendRtpPassive(mediaInfo, param);
-                } else {
-                    param.put("dst_url", sendRtpItem.getIp());
-                    param.put("dst_port", sendRtpItem.getPort());
-                    startSendRtpStreamResult = zlmServerFactory.startSendRtpStream(mediaInfo, param);
-                }
-            } else {
+            try {
                 if (sendRtpItem.isTcpActive()) {
                 if (sendRtpItem.isTcpActive()) {
-                    startSendRtpStreamResult = zlmServerFactory.startSendRtpPassive(mediaInfo, param);
+                    mediaServerService.startSendRtpPassive(mediaInfo, platform, sendRtpItem, null);
                 } else {
                 } else {
-                    param.put("dst_url", sendRtpItem.getIp());
-                    param.put("dst_port", sendRtpItem.getPort());
-                    startSendRtpStreamResult = zlmServerFactory.startSendRtpStream(mediaInfo, param);
+                    mediaServerService.startSendRtpStream(mediaInfo, platform, sendRtpItem);
                 }
                 }
+            }catch (ControllerException e) {
+                logger.error("RTP推流失败: {}", e.getMessage());
+                startSendRtpStreamFailHand(sendRtpItem, platform, callIdHeader);
+                return;
             }
             }
-            if (startSendRtpStreamResult != null) {
-                startSendRtpStreamHand(sendRtpItem, platform, startSendRtpStreamResult, param, callIdHeader);
-            }
+
+            logger.info("RTP推流成功[ {}/{} ],{}, ", sendRtpItem.getApp(), sendRtpItem.getStream(),
+                    sendRtpItem.isTcpActive()?"被动发流": sendRtpItem.getIp() + ":" + sendRtpItem.getPort());
+
         }
         }
     }
     }
 
 
     @Override
     @Override
-    public void startSendRtpStreamHand(SendRtpItem sendRtpItem, Object correlationInfo,
-                                       JSONObject jsonObject, Map<String, Object> param, CallIdHeader callIdHeader) {
-        if (jsonObject == null) {
-            logger.error("RTP推流失败: 请检查ZLM服务");
-        } else if (jsonObject.getInteger("code") == 0) {
-            logger.info("调用ZLM推流接口, 结果: {}", jsonObject);
-            logger.info("RTP推流成功[ {}/{} ],{}->{}, ", param.get("app"), param.get("stream"), jsonObject.getString("local_port"),
-                    sendRtpItem.isTcpActive()?"被动发流": param.get("dst_url") + ":" + param.get("dst_port"));
-            if (sendRtpItem.getPlayType() == InviteStreamType.PUSH && correlationInfo instanceof ParentPlatform) {
-                ParentPlatform platform = (ParentPlatform)correlationInfo;
-                MessageForPushChannel messageForPushChannel = MessageForPushChannel.getInstance(0, sendRtpItem.getApp(), sendRtpItem.getStream(),
-                        sendRtpItem.getChannelId(), platform.getServerGBId(), platform.getName(), userSetting.getServerId(),
-                        sendRtpItem.getMediaServerId());
-                messageForPushChannel.setPlatFormIndex(platform.getId());
-                redisCatchStorage.sendPlatformStartPlayMsg(messageForPushChannel);
+    public void startSendRtpStreamFailHand(SendRtpItem sendRtpItem, ParentPlatform platform, CallIdHeader callIdHeader) {
+        if (sendRtpItem.isOnlyAudio()) {
+            Device device = deviceService.getDevice(sendRtpItem.getDeviceId());
+            AudioBroadcastCatch audioBroadcastCatch = audioBroadcastManager.get(sendRtpItem.getDeviceId(), sendRtpItem.getChannelId());
+            if (audioBroadcastCatch != null) {
+                try {
+                    cmder.streamByeCmd(device, sendRtpItem.getChannelId(), audioBroadcastCatch.getSipTransactionInfo(), null);
+                } catch (SipException | ParseException | InvalidArgumentException |
+                         SsrcTransactionNotFoundException exception) {
+                    logger.error("[命令发送失败] 停止语音对讲: {}", exception.getMessage());
+                }
             }
             }
         } else {
         } else {
-            logger.error("RTP推流失败: {}, 参数:{}", jsonObject.getString("msg"), JSONObject.toJSONString(param));
-            if (sendRtpItem.isOnlyAudio()) {
-                Device device = deviceService.getDevice(sendRtpItem.getDeviceId());
-                AudioBroadcastCatch audioBroadcastCatch = audioBroadcastManager.get(sendRtpItem.getDeviceId(), sendRtpItem.getChannelId());
-                if (audioBroadcastCatch != null) {
-                    try {
-                        cmder.streamByeCmd(device, sendRtpItem.getChannelId(), audioBroadcastCatch.getSipTransactionInfo(), null);
-                    } catch (SipException | ParseException | InvalidArgumentException |
-                             SsrcTransactionNotFoundException e) {
-                        logger.error("[命令发送失败] 停止语音对讲: {}", e.getMessage());
-                    }
-                }
-            } else {
+            if (platform != null) {
                 // 向上级平台
                 // 向上级平台
-                if (correlationInfo instanceof ParentPlatform) {
-                    try {
-                        ParentPlatform parentPlatform = (ParentPlatform)correlationInfo;
-                        commanderForPlatform.streamByeCmd(parentPlatform, callIdHeader.getCallId());
-                    } catch (SipException | InvalidArgumentException | ParseException e) {
-                        logger.error("[命令发送失败] 国标级联 发送BYE: {}", e.getMessage());
-                    }
+                try {
+                    commanderForPlatform.streamByeCmd(platform, callIdHeader.getCallId());
+                } catch (SipException | InvalidArgumentException | ParseException e) {
+                    logger.error("[命令发送失败] 国标级联 发送BYE: {}", e.getMessage());
                 }
                 }
             }
             }
+
         }
         }
     }
     }
 
 
@@ -1563,7 +1492,7 @@ public class PlayServiceImpl implements IPlayService {
             if (sendRtpItem != null && sendRtpItem.isOnlyAudio()) {
             if (sendRtpItem != null && sendRtpItem.isOnlyAudio()) {
                 // 查询流是否存在,不存在则认为是异常状态
                 // 查询流是否存在,不存在则认为是异常状态
                 MediaServer mediaServer = mediaServerService.getOne(sendRtpItem.getMediaServerId());
                 MediaServer mediaServer = mediaServerService.getOne(sendRtpItem.getMediaServerId());
-                Boolean streamReady = zlmServerFactory.isStreamReady(mediaServer, sendRtpItem.getApp(), sendRtpItem.getStream());
+                Boolean streamReady = mediaServerService.isStreamReady(mediaServer, sendRtpItem.getApp(), sendRtpItem.getStream());
                 if (streamReady) {
                 if (streamReady) {
                     logger.warn("[语音对讲] 正在语音广播,无法开启语音通话: {}", channelId);
                     logger.warn("[语音对讲] 正在语音广播,无法开启语音通话: {}", channelId);
                     event.call("正在语音广播");
                     event.call("正在语音广播");
@@ -1577,7 +1506,7 @@ public class PlayServiceImpl implements IPlayService {
         SendRtpItem sendRtpItem = redisCatchStorage.querySendRTPServer(device.getDeviceId(), channelId, stream, null);
         SendRtpItem sendRtpItem = redisCatchStorage.querySendRTPServer(device.getDeviceId(), channelId, stream, null);
         if (sendRtpItem != null) {
         if (sendRtpItem != null) {
             MediaServer mediaServer = mediaServerService.getOne(sendRtpItem.getMediaServerId());
             MediaServer mediaServer = mediaServerService.getOne(sendRtpItem.getMediaServerId());
-            Boolean streamReady = zlmServerFactory.isStreamReady(mediaServer, "rtp", sendRtpItem.getReceiveStream());
+            Boolean streamReady = mediaServerService.isStreamReady(mediaServer, "rtp", sendRtpItem.getReceiveStream());
             if (streamReady) {
             if (streamReady) {
                 logger.warn("[语音对讲] 进行中: {}", channelId);
                 logger.warn("[语音对讲] 进行中: {}", channelId);
                 event.call("语音对讲进行中");
                 event.call("语音对讲进行中");
@@ -1624,12 +1553,7 @@ public class PlayServiceImpl implements IPlayService {
         MediaServer mediaServer = mediaServerService.getOne(mediaServerId);
         MediaServer mediaServer = mediaServerService.getOne(mediaServerId);
 
 
         if (streamIsReady == null || streamIsReady) {
         if (streamIsReady == null || streamIsReady) {
-            Map<String, Object> param = new HashMap<>();
-            param.put("vhost", "__defaultVhost__");
-            param.put("app", sendRtpItem.getApp());
-            param.put("stream", sendRtpItem.getStream());
-            param.put("ssrc", sendRtpItem.getSsrc());
-            zlmServerFactory.stopSendRtpStream(mediaServer, param);
+            mediaServerService.stopSendRtp(mediaServer, sendRtpItem.getApp(), sendRtpItem.getStream(), sendRtpItem.getSsrc());
         }
         }
 
 
         ssrcFactory.releaseSsrc(mediaServerId, sendRtpItem.getSsrc());
         ssrcFactory.releaseSsrc(mediaServerId, sendRtpItem.getSsrc());

+ 1 - 1
src/main/java/com/genersoft/iot/vmp/service/impl/StreamProxyServiceImpl.java

@@ -349,7 +349,7 @@ public class StreamProxyServiceImpl implements IStreamProxyService {
         if (mediaServer == null) {
         if (mediaServer == null) {
             return null;
             return null;
         }
         }
-        if (zlmServerFactory.isStreamReady(mediaServer, param.getApp(), param.getStream())) {
+        if (mediaServerService.isStreamReady(mediaServer, param.getApp(), param.getStream())) {
             mediaServerService.closeStreams(mediaServer, param.getApp(), param.getStream());
             mediaServerService.closeStreams(mediaServer, param.getApp(), param.getStream());
         }
         }
         String msgResult;
         String msgResult;

+ 1 - 1
src/main/java/com/genersoft/iot/vmp/service/redisMsg/RedisGbPlayMsgListener.java

@@ -274,7 +274,7 @@ public class RedisGbPlayMsgListener implements MessageListener {
             return;
             return;
         }
         }
         // 确定流是否在线
         // 确定流是否在线
-        Boolean streamReady = zlmServerFactory.isStreamReady(mediaServerItem, content.getApp(), content.getStream());
+        Boolean streamReady = mediaServerService.isStreamReady(mediaServerItem, content.getApp(), content.getStream());
         if (streamReady != null && streamReady) {
         if (streamReady != null && streamReady) {
             logger.info("[回复推流信息]  {}/{}", content.getApp(), content.getStream());
             logger.info("[回复推流信息]  {}/{}", content.getApp(), content.getStream());
             responseSendItem(mediaServerItem, content, toId, serial);
             responseSendItem(mediaServerItem, content, toId, serial);

+ 1 - 1
src/main/java/com/genersoft/iot/vmp/vmanager/ps/PsController.java

@@ -224,7 +224,7 @@ public class PsController {
         param.put("src_port", sendInfo.getSendLocalPort());
         param.put("src_port", sendInfo.getSendLocalPort());
 
 
 
 
-        Boolean streamReady = zlmServerFactory.isStreamReady(mediaServerItem, app, stream);
+        Boolean streamReady = mediaServerService.isStreamReady(mediaServerItem, app, stream);
         if (streamReady) {
         if (streamReady) {
             JSONObject jsonObject = zlmServerFactory.startSendRtpStream(mediaServerItem, param);
             JSONObject jsonObject = zlmServerFactory.startSendRtpStream(mediaServerItem, param);
             if (jsonObject.getInteger("code") == 0) {
             if (jsonObject.getInteger("code") == 0) {

+ 1 - 1
src/main/java/com/genersoft/iot/vmp/vmanager/rtp/RtpController.java

@@ -275,7 +275,7 @@ public class RtpController {
             paramForVideo = null;
             paramForVideo = null;
         }
         }
 
 
-        Boolean streamReady = zlmServerFactory.isStreamReady(mediaServer, app, stream);
+        Boolean streamReady = mediaServerService.isStreamReady(mediaServer, app, stream);
         if (streamReady) {
         if (streamReady) {
             if (paramForVideo != null) {
             if (paramForVideo != null) {
                 JSONObject jsonObject = zlmServerFactory.startSendRtpStream(mediaServer, paramForVideo);
                 JSONObject jsonObject = zlmServerFactory.startSendRtpStream(mediaServer, paramForVideo);

+ 1 - 1
src/main/resources/application.yml

@@ -2,4 +2,4 @@ spring:
   application:
   application:
     name: wvp
     name: wvp
   profiles:
   profiles:
-    active: local
+    active: abl

+ 1 - 0
数据库/abl/初始化-mysql-2.7.0.sql

@@ -203,6 +203,7 @@ create table wvp_platform (
                               update_time character varying(50),
                               update_time character varying(50),
                               as_message_channel bool default false,
                               as_message_channel bool default false,
                               auto_push_channel bool default false,
                               auto_push_channel bool default false,
+                              send_stream_ip character varying(50),
                               constraint uk_platform_unique_server_gb_id unique (server_gb_id)
                               constraint uk_platform_unique_server_gb_id unique (server_gb_id)
 );
 );
 
 

+ 1 - 0
数据库/abl/初始化-postgresql-kingbase-2.7.0.sql

@@ -203,6 +203,7 @@ create table wvp_platform (
                               update_time character varying(50),
                               update_time character varying(50),
                               as_message_channel bool default false,
                               as_message_channel bool default false,
                               auto_push_channel bool default false,
                               auto_push_channel bool default false,
+                              send_stream_ip character varying(50),
                               constraint uk_platform_unique_server_gb_id unique (server_gb_id)
                               constraint uk_platform_unique_server_gb_id unique (server_gb_id)
 );
 );
 
 

数据库/abl/更新-postgresql-kingbase-2.7.0.sql → 数据库/2.7.1/更新-mysql-2.7.0.sql


+ 1 - 1
数据库/abl/更新-mysql-2.7.0.sql

@@ -8,4 +8,4 @@ alter table wvp_media_server
 alter table wvp_media_server
 alter table wvp_media_server
     add ws_flv_port integer;
     add ws_flv_port integer;
 alter table wvp_media_server
 alter table wvp_media_server
-    add ws_flv_ssl_port integer;
+    add ws_flv_ssl_port integer;

+ 0 - 324
数据库/初始化-mysql.sql

@@ -1,324 +0,0 @@
-/*建表*/
-create table wvp_device (
-                            id serial primary key ,
-                            device_id character varying(50) not null ,
-                            name character varying(255),
-                            manufacturer character varying(255),
-                            model character varying(255),
-                            firmware character varying(255),
-                            transport character varying(50),
-                            stream_mode character varying(50),
-                            on_line bool default false,
-                            register_time character varying(50),
-                            keepalive_time character varying(50),
-                            ip character varying(50),
-                            create_time character varying(50),
-                            update_time character varying(50),
-                            port integer,
-                            expires integer,
-                            subscribe_cycle_for_catalog integer DEFAULT 0,
-                            subscribe_cycle_for_mobile_position integer DEFAULT 0,
-                            mobile_position_submission_interval integer DEFAULT 5,
-                            subscribe_cycle_for_alarm integer DEFAULT 0,
-                            host_address character varying(50),
-                            charset character varying(50),
-                            ssrc_check bool default false,
-                            geo_coord_sys character varying(50),
-                            media_server_id character varying(50),
-                            custom_name character varying(255),
-                            sdp_ip character varying(50),
-                            local_ip character varying(50),
-                            password character varying(255),
-                            as_message_channel bool default false,
-                            keepalive_interval_time integer,
-                            switch_primary_sub_stream bool default false,
-                            broadcast_push_after_ack bool default false,
-                            constraint uk_device_device unique (device_id)
-);
-
-create table wvp_device_alarm (
-                                  id serial primary key ,
-                                  device_id character varying(50) not null,
-                                  channel_id character varying(50) not null,
-                                  alarm_priority character varying(50),
-                                  alarm_method character varying(50),
-                                  alarm_time character varying(50),
-                                  alarm_description character varying(255),
-                                  longitude double precision,
-                                  latitude double precision,
-                                  alarm_type character varying(50),
-                                  create_time character varying(50) not null
-);
-
-create table wvp_device_channel (
-                                    id serial primary key ,
-                                    channel_id character varying(50) not null,
-                                    name character varying(255),
-                                    custom_name character varying(255),
-                                    manufacture character varying(50),
-                                    model character varying(50),
-                                    owner character varying(50),
-                                    civil_code character varying(50),
-                                    block character varying(50),
-                                    address character varying(50),
-                                    parent_id character varying(50),
-                                    safety_way integer,
-                                    register_way integer,
-                                    cert_num character varying(50),
-                                    certifiable integer,
-                                    err_code integer,
-                                    end_time character varying(50),
-                                    secrecy character varying(50),
-                                    ip_address character varying(50),
-                                    port integer,
-                                    password character varying(255),
-                                    ptz_type integer,
-                                    custom_ptz_type integer,
-                                    status bool default false,
-                                    longitude double precision,
-                                    custom_longitude double precision,
-                                    latitude double precision,
-                                    custom_latitude double precision,
-                                    stream_id character varying(255),
-                                    device_id character varying(50) not null,
-                                    parental character varying(50),
-                                    has_audio bool default false,
-                                    create_time character varying(50) not null,
-                                    update_time character varying(50) not null,
-                                    sub_count integer,
-                                    longitude_gcj02 double precision,
-                                    latitude_gcj02 double precision,
-                                    longitude_wgs84 double precision,
-                                    latitude_wgs84 double precision,
-                                    business_group_id character varying(50),
-                                    gps_time character varying(50),
-                                    stream_identification character varying(50),
-                                    constraint uk_wvp_device_channel_unique_device_channel unique (device_id, channel_id)
-);
-
-create table wvp_device_mobile_position (
-                                            id serial primary key,
-                                            device_id character varying(50) not null,
-                                            channel_id character varying(50) not null,
-                                            device_name character varying(255),
-                                            time character varying(50),
-                                            longitude double precision,
-                                            latitude double precision,
-                                            altitude double precision,
-                                            speed double precision,
-                                            direction double precision,
-                                            report_source character varying(50),
-                                            longitude_gcj02 double precision,
-                                            latitude_gcj02 double precision,
-                                            longitude_wgs84 double precision,
-                                            latitude_wgs84 double precision,
-                                            create_time character varying(50)
-);
-
-create table wvp_gb_stream (
-                               gb_stream_id serial primary key,
-                               app character varying(255) not null,
-                               stream character varying(255) not null,
-                               gb_id character varying(50) not null,
-                               name character varying(255),
-                               longitude double precision,
-                               latitude double precision,
-                               stream_type character varying(50),
-                               media_server_id character varying(50),
-                               create_time character varying(50),
-                               constraint uk_gb_stream_unique_gb_id unique (gb_id),
-                               constraint uk_gb_stream_unique_app_stream unique (app, stream)
-);
-
-create table wvp_log (
-                         id serial primary key ,
-                         name character varying(50),
-                         type character varying(50),
-                         uri character varying(200),
-                         address character varying(50),
-                         result character varying(50),
-                         timing bigint,
-                         username character varying(50),
-                         create_time character varying(50)
-);
-
-create table wvp_media_server (
-                                  id character varying(255) primary key ,
-                                  ip character varying(50),
-                                  hook_ip character varying(50),
-                                  sdp_ip character varying(50),
-                                  stream_ip character varying(50),
-                                  http_port integer,
-                                  http_ssl_port integer,
-                                  rtmp_port integer,
-                                  rtmp_ssl_port integer,
-                                  rtp_proxy_port integer,
-                                  rtsp_port integer,
-                                  rtsp_ssl_port integer,
-                                  auto_config bool default false,
-                                  secret character varying(50),
-                                  rtp_enable bool default false,
-                                  rtp_port_range character varying(50),
-                                  send_rtp_port_range character varying(50),
-                                  record_assist_port integer,
-                                  default_server bool default false,
-                                  create_time character varying(50),
-                                  update_time character varying(50),
-                                  hook_alive_interval integer,
-                                  record_path character varying(255),
-                                  record_day integer default 7,
-                                  constraint uk_media_server_unique_ip_http_port unique (ip, http_port)
-);
-
-create table wvp_platform (
-                              id serial primary key ,
-                              enable bool default false,
-                              name character varying(255),
-                              server_gb_id character varying(50),
-                              server_gb_domain character varying(50),
-                              server_ip character varying(50),
-                              server_port integer,
-                              device_gb_id character varying(50),
-                              device_ip character varying(50),
-                              device_port character varying(50),
-                              username character varying(255),
-                              password character varying(50),
-                              expires character varying(50),
-                              keep_timeout character varying(50),
-                              transport character varying(50),
-                              character_set character varying(50),
-                              catalog_id character varying(50),
-                              ptz bool default false,
-                              rtcp bool default false,
-                              status bool default false,
-                              start_offline_push bool default false,
-                              administrative_division character varying(50),
-                              catalog_group integer,
-                              create_time character varying(50),
-                              update_time character varying(50),
-                              as_message_channel bool default false,
-                              auto_push_channel bool default false,
-                              constraint uk_platform_unique_server_gb_id unique (server_gb_id)
-);
-
-create table wvp_platform_catalog (
-                                      id character varying(50),
-                                      platform_id character varying(50),
-                                      name character varying(255),
-                                      parent_id character varying(50),
-                                      civil_code character varying(50),
-                                      business_group_id character varying(50),
-                                      constraint uk_platform_catalog_id_platform_id unique (id, platform_id)
-);
-
-create table wvp_platform_gb_channel (
-                                         id serial primary key ,
-                                         platform_id character varying(50),
-                                         catalog_id character varying(50),
-                                         device_channel_id integer,
-                                         constraint uk_platform_gb_channel_platform_id_catalog_id_device_channel_id unique (platform_id, catalog_id, device_channel_id)
-);
-
-create table wvp_platform_gb_stream (
-                                        id serial primary key,
-                                        platform_id character varying(50),
-                                        catalog_id character varying(50),
-                                        gb_stream_id integer,
-                                        constraint uk_platform_gb_stream_platform_id_catalog_id_gb_stream_id unique (platform_id, catalog_id, gb_stream_id)
-);
-
-create table wvp_stream_proxy (
-                                  id serial primary key,
-                                  type character varying(50),
-                                  app character varying(255),
-                                  stream character varying(255),
-                                  url character varying(255),
-                                  src_url character varying(255),
-                                  dst_url character varying(255),
-                                  timeout_ms integer,
-                                  ffmpeg_cmd_key character varying(255),
-                                  rtp_type character varying(50),
-                                  media_server_id character varying(50),
-                                  enable_audio bool default false,
-                                  enable_mp4 bool default false,
-                                  enable bool default false,
-                                  status boolean,
-                                  enable_remove_none_reader bool default false,
-                                  create_time character varying(50),
-                                  name character varying(255),
-                                  update_time character varying(50),
-                                  stream_key character varying(255),
-                                  enable_disable_none_reader bool default false,
-                                  constraint uk_stream_proxy_app_stream unique (app, stream)
-);
-
-create table wvp_stream_push (
-                                 id serial primary key,
-                                 app character varying(255),
-                                 stream character varying(255),
-                                 total_reader_count character varying(50),
-                                 origin_type integer,
-                                 origin_type_str character varying(50),
-                                 create_time character varying(50),
-                                 alive_second integer,
-                                 media_server_id character varying(50),
-                                 server_id character varying(50),
-                                 push_time character varying(50),
-                                 status bool default false,
-                                 update_time character varying(50),
-                                 push_ing bool default false,
-                                 self bool default false,
-                                 constraint uk_stream_push_app_stream unique (app, stream)
-);
-create table wvp_cloud_record (
-                                  id serial primary key,
-                                  app character varying(255),
-                                  stream character varying(255),
-                                  call_id character varying(255),
-                                  start_time bigint,
-                                  end_time bigint,
-                                  media_server_id character varying(50),
-                                  file_name character varying(255),
-                                  folder character varying(255),
-                                  file_path character varying(255),
-                                  collect bool default false,
-                                  file_size bigint,
-                                  time_len bigint,
-                                  constraint uk_stream_push_app_stream_path unique (app, stream, file_path)
-);
-
-create table wvp_user (
-                          id serial primary key,
-                          username character varying(255),
-                          password character varying(255),
-                          role_id integer,
-                          create_time character varying(50),
-                          update_time character varying(50),
-                          push_key character varying(50),
-                          constraint uk_user_username unique (username)
-);
-
-create table wvp_user_role (
-                               id serial primary key,
-                               name character varying(50),
-                               authority character varying(50),
-                               create_time character varying(50),
-                               update_time character varying(50)
-);
-create table wvp_resources_tree (
-                                    id serial primary key ,
-                                    is_catalog bool default true,
-                                    device_channel_id integer ,
-                                    gb_stream_id integer,
-                                    name character varying(255),
-                                    parentId integer,
-                                    path character varying(255)
-);
-
-
-/*初始数据*/
-INSERT INTO wvp_user VALUES (1, 'admin','21232f297a57a5a743894a0e4a801fc3',1,'2021-04-13 14:14:57','2021-04-13 14:14:57','3e80d1762a324d5b0ff636e0bd16f1e3');
-INSERT INTO wvp_user_role VALUES (1, 'admin','0','2021-04-13 14:14:57','2021-04-13 14:14:57');
-
-
-

+ 0 - 324
数据库/初始化-postgresql-kingbase.sql

@@ -1,324 +0,0 @@
-/*建表*/
-create table wvp_device (
-                            id serial primary key ,
-                            device_id character varying(50) not null ,
-                            name character varying(255),
-                            manufacturer character varying(255),
-                            model character varying(255),
-                            firmware character varying(255),
-                            transport character varying(50),
-                            stream_mode character varying(50),
-                            on_line bool default false,
-                            register_time character varying(50),
-                            keepalive_time character varying(50),
-                            ip character varying(50),
-                            create_time character varying(50),
-                            update_time character varying(50),
-                            port integer,
-                            expires integer,
-                            subscribe_cycle_for_catalog integer DEFAULT 0,
-                            subscribe_cycle_for_mobile_position integer DEFAULT 0,
-                            mobile_position_submission_interval integer DEFAULT 5,
-                            subscribe_cycle_for_alarm integer DEFAULT 0,
-                            host_address character varying(50),
-                            charset character varying(50),
-                            ssrc_check bool default false,
-                            geo_coord_sys character varying(50),
-                            media_server_id character varying(50),
-                            custom_name character varying(255),
-                            sdp_ip character varying(50),
-                            local_ip character varying(50),
-                            password character varying(255),
-                            as_message_channel bool default false,
-                            keepalive_interval_time integer,
-                            switch_primary_sub_stream bool default false,
-                            broadcast_push_after_ack bool default false,
-                            constraint uk_device_device unique (device_id)
-);
-
-create table wvp_device_alarm (
-                                  id serial primary key ,
-                                  device_id character varying(50) not null,
-                                  channel_id character varying(50) not null,
-                                  alarm_priority character varying(50),
-                                  alarm_method character varying(50),
-                                  alarm_time character varying(50),
-                                  alarm_description character varying(255),
-                                  longitude double precision,
-                                  latitude double precision,
-                                  alarm_type character varying(50),
-                                  create_time character varying(50) not null
-);
-
-create table wvp_device_channel (
-                                    id serial primary key ,
-                                    channel_id character varying(50) not null,
-                                    name character varying(255),
-                                    custom_name character varying(255),
-                                    manufacture character varying(50),
-                                    model character varying(50),
-                                    owner character varying(50),
-                                    civil_code character varying(50),
-                                    block character varying(50),
-                                    address character varying(50),
-                                    parent_id character varying(50),
-                                    safety_way integer,
-                                    register_way integer,
-                                    cert_num character varying(50),
-                                    certifiable integer,
-                                    err_code integer,
-                                    end_time character varying(50),
-                                    secrecy character varying(50),
-                                    ip_address character varying(50),
-                                    port integer,
-                                    password character varying(255),
-                                    ptz_type integer,
-                                    custom_ptz_type integer,
-                                    status bool default false,
-                                    longitude double precision,
-                                    custom_longitude double precision,
-                                    latitude double precision,
-                                    custom_latitude double precision,
-                                    stream_id character varying(255),
-                                    device_id character varying(50) not null,
-                                    parental character varying(50),
-                                    has_audio bool default false,
-                                    create_time character varying(50) not null,
-                                    update_time character varying(50) not null,
-                                    sub_count integer,
-                                    longitude_gcj02 double precision,
-                                    latitude_gcj02 double precision,
-                                    longitude_wgs84 double precision,
-                                    latitude_wgs84 double precision,
-                                    business_group_id character varying(50),
-                                    gps_time character varying(50),
-                                    stream_identification character varying(50),
-                                    constraint uk_wvp_device_channel_unique_device_channel unique (device_id, channel_id)
-);
-
-create table wvp_device_mobile_position (
-                                            id serial primary key,
-                                            device_id character varying(50) not null,
-                                            channel_id character varying(50) not null,
-                                            device_name character varying(255),
-                                            time character varying(50),
-                                            longitude double precision,
-                                            latitude double precision,
-                                            altitude double precision,
-                                            speed double precision,
-                                            direction double precision,
-                                            report_source character varying(50),
-                                            longitude_gcj02 double precision,
-                                            latitude_gcj02 double precision,
-                                            longitude_wgs84 double precision,
-                                            latitude_wgs84 double precision,
-                                            create_time character varying(50)
-);
-
-create table wvp_gb_stream (
-                               gb_stream_id serial primary key,
-                               app character varying(255) not null,
-                               stream character varying(255) not null,
-                               gb_id character varying(50) not null,
-                               name character varying(255),
-                               longitude double precision,
-                               latitude double precision,
-                               stream_type character varying(50),
-                               media_server_id character varying(50),
-                               create_time character varying(50),
-                               constraint uk_gb_stream_unique_gb_id unique (gb_id),
-                               constraint uk_gb_stream_unique_app_stream unique (app, stream)
-);
-
-create table wvp_log (
-                         id serial primary key ,
-                         name character varying(50),
-                         type character varying(50),
-                         uri character varying(200),
-                         address character varying(50),
-                         result character varying(50),
-                         timing bigint,
-                         username character varying(50),
-                         create_time character varying(50)
-);
-
-create table wvp_media_server (
-                                  id character varying(255) primary key ,
-                                  ip character varying(50),
-                                  hook_ip character varying(50),
-                                  sdp_ip character varying(50),
-                                  stream_ip character varying(50),
-                                  http_port integer,
-                                  http_ssl_port integer,
-                                  rtmp_port integer,
-                                  rtmp_ssl_port integer,
-                                  rtp_proxy_port integer,
-                                  rtsp_port integer,
-                                  rtsp_ssl_port integer,
-                                  auto_config bool default false,
-                                  secret character varying(50),
-                                  rtp_enable bool default false,
-                                  rtp_port_range character varying(50),
-                                  send_rtp_port_range character varying(50),
-                                  record_assist_port integer,
-                                  default_server bool default false,
-                                  create_time character varying(50),
-                                  update_time character varying(50),
-                                  hook_alive_interval integer,
-                                  record_path character varying(255),
-                                  record_day integer default 7,
-                                  constraint uk_media_server_unique_ip_http_port unique (ip, http_port)
-);
-
-create table wvp_platform (
-                              id serial primary key ,
-                              enable bool default false,
-                              name character varying(255),
-                              server_gb_id character varying(50),
-                              server_gb_domain character varying(50),
-                              server_ip character varying(50),
-                              server_port integer,
-                              device_gb_id character varying(50),
-                              device_ip character varying(50),
-                              device_port character varying(50),
-                              username character varying(255),
-                              password character varying(50),
-                              expires character varying(50),
-                              keep_timeout character varying(50),
-                              transport character varying(50),
-                              character_set character varying(50),
-                              catalog_id character varying(50),
-                              ptz bool default false,
-                              rtcp bool default false,
-                              status bool default false,
-                              start_offline_push bool default false,
-                              administrative_division character varying(50),
-                              catalog_group integer,
-                              create_time character varying(50),
-                              update_time character varying(50),
-                              as_message_channel bool default false,
-                              auto_push_channel bool default false,
-                              constraint uk_platform_unique_server_gb_id unique (server_gb_id)
-);
-
-create table wvp_platform_catalog (
-                                      id character varying(50),
-                                      platform_id character varying(50),
-                                      name character varying(255),
-                                      parent_id character varying(50),
-                                      civil_code character varying(50),
-                                      business_group_id character varying(50),
-                                      constraint uk_platform_catalog_id_platform_id unique (id, platform_id)
-);
-
-create table wvp_platform_gb_channel (
-                                         id serial primary key ,
-                                         platform_id character varying(50),
-                                         catalog_id character varying(50),
-                                         device_channel_id integer,
-                                         constraint uk_platform_gb_channel_platform_id_catalog_id_device_channel_id unique (platform_id, catalog_id, device_channel_id)
-);
-
-create table wvp_platform_gb_stream (
-                                        id serial primary key,
-                                        platform_id character varying(50),
-                                        catalog_id character varying(50),
-                                        gb_stream_id integer,
-                                        constraint uk_platform_gb_stream_platform_id_catalog_id_gb_stream_id unique (platform_id, catalog_id, gb_stream_id)
-);
-
-create table wvp_stream_proxy (
-                                  id serial primary key,
-                                  type character varying(50),
-                                  app character varying(255),
-                                  stream character varying(255),
-                                  url character varying(255),
-                                  src_url character varying(255),
-                                  dst_url character varying(255),
-                                  timeout_ms integer,
-                                  ffmpeg_cmd_key character varying(255),
-                                  rtp_type character varying(50),
-                                  media_server_id character varying(50),
-                                  enable_audio bool default false,
-                                  enable_mp4 bool default false,
-                                  enable bool default false,
-                                  status boolean,
-                                  enable_remove_none_reader bool default false,
-                                  create_time character varying(50),
-                                  name character varying(255),
-                                  update_time character varying(50),
-                                  stream_key character varying(255),
-                                  enable_disable_none_reader bool default false,
-                                  constraint uk_stream_proxy_app_stream unique (app, stream)
-);
-
-create table wvp_stream_push (
-                                 id serial primary key,
-                                 app character varying(255),
-                                 stream character varying(255),
-                                 total_reader_count character varying(50),
-                                 origin_type integer,
-                                 origin_type_str character varying(50),
-                                 create_time character varying(50),
-                                 alive_second integer,
-                                 media_server_id character varying(50),
-                                 server_id character varying(50),
-                                 push_time character varying(50),
-                                 status bool default false,
-                                 update_time character varying(50),
-                                 push_ing bool default false,
-                                 self bool default false,
-                                 constraint uk_stream_push_app_stream unique (app, stream)
-);
-create table wvp_cloud_record (
-                                  id serial primary key,
-                                  app character varying(255),
-                                  stream character varying(255),
-                                  call_id character varying(255),
-                                  start_time int8,
-                                  end_time int8,
-                                  media_server_id character varying(50),
-                                  file_name character varying(255),
-                                  folder character varying(255),
-                                  file_path character varying(255),
-                                  collect bool default false,
-                                  file_size int8,
-                                  time_len int8,
-                                  constraint uk_stream_push_app_stream_path unique (app, stream, file_path)
-);
-
-create table wvp_user (
-                          id serial primary key,
-                          username character varying(255),
-                          password character varying(255),
-                          role_id integer,
-                          create_time character varying(50),
-                          update_time character varying(50),
-                          push_key character varying(50),
-                          constraint uk_user_username unique (username)
-);
-
-create table wvp_user_role (
-                               id serial primary key,
-                               name character varying(50),
-                               authority character varying(50),
-                               create_time character varying(50),
-                               update_time character varying(50)
-);
-create table wvp_resources_tree (
-                                    id serial primary key ,
-                                    is_catalog bool default true,
-                                    device_channel_id integer ,
-                                    gb_stream_id integer,
-                                    name character varying(255),
-                                    parentId integer,
-                                    path character varying(255)
-);
-
-
-/*初始数据*/
-INSERT INTO wvp_user VALUES (1, 'admin','21232f297a57a5a743894a0e4a801fc3',1,'2021-04-13 14:14:57','2021-04-13 14:14:57','3e80d1762a324d5b0ff636e0bd16f1e3');
-INSERT INTO wvp_user_role VALUES (1, 'admin','0','2021-04-13 14:14:57','2021-04-13 14:14:57');
-
-
-