src/main/java/com/genersoft/iot/vmp/conf/SipPlatformRunner.java
@@ -3,7 +3,6 @@ import com.genersoft.iot.vmp.gb28181.bean.ParentPlatform; import com.genersoft.iot.vmp.gb28181.bean.ParentPlatformCatch; import com.genersoft.iot.vmp.gb28181.event.EventPublisher; import com.genersoft.iot.vmp.gb28181.transmit.cmd.ISIPCommanderForPlatform; import com.genersoft.iot.vmp.storager.IRedisCatchStorage; import com.genersoft.iot.vmp.storager.IVideoManagerStorager; import org.springframework.beans.factory.annotation.Autowired; src/main/java/com/genersoft/iot/vmp/gb28181/event/offline/KeepaliveTimeoutListenerForPlatform.java
@@ -1,19 +1,13 @@ package com.genersoft.iot.vmp.gb28181.event.offline; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.data.redis.connection.Message; import org.springframework.data.redis.connection.MessageListener; import org.springframework.data.redis.listener.KeyExpirationEventMessageListener; import org.springframework.data.redis.listener.RedisMessageListenerContainer; import org.springframework.stereotype.Component; import com.genersoft.iot.vmp.common.VideoManagerConstants; import com.genersoft.iot.vmp.gb28181.event.EventPublisher; import java.nio.charset.StandardCharsets; /** * @Description:设备心跳超时监听,借助redis过期特性,进行监听,监听到说明设备心跳超时,发送离线事件 src/main/java/com/genersoft/iot/vmp/gb28181/event/platformKeepaliveExpire/PlatformKeepaliveExpireEvent.java
@@ -7,6 +7,11 @@ */ public class PlatformKeepaliveExpireEvent extends ApplicationEvent { /** * Add default serial version ID */ private static final long serialVersionUID = 1L; private String platformGbID; public PlatformKeepaliveExpireEvent(Object source) { src/main/java/com/genersoft/iot/vmp/gb28181/event/platformKeepaliveExpire/PlatformKeepaliveExpireEventLister.java
@@ -2,7 +2,6 @@ import com.genersoft.iot.vmp.gb28181.bean.ParentPlatform; import com.genersoft.iot.vmp.gb28181.bean.ParentPlatformCatch; import com.genersoft.iot.vmp.gb28181.bean.PlatformRegister; import com.genersoft.iot.vmp.gb28181.event.EventPublisher; import com.genersoft.iot.vmp.gb28181.event.SipSubscribe; import com.genersoft.iot.vmp.gb28181.transmit.cmd.ISIPCommanderForPlatform; @@ -52,14 +51,14 @@ } ParentPlatform parentPlatform = storager.queryParentPlatById(event.getPlatformGbID()); ParentPlatformCatch parentPlatformCatch = redisCatchStorage.queryPlatformCatchInfo(event.getPlatformGbID()); parentPlatformCatch.setParentPlatform(parentPlatform); if (parentPlatformCatch == null) { return; } if (parentPlatform == null) { logger.debug("平台心跳到期事件事件触发,但平台已经删除!!! 平台国标ID:" + event.getPlatformGbID()); return; } if (parentPlatformCatch == null) { return; } parentPlatformCatch.setParentPlatform(parentPlatform); // 发送心跳 if (parentPlatformCatch.getKeepAliveReply() >= 3) { // 有3次未收到心跳回复, 设置平台状态为离线, 开始重新注册 src/main/java/com/genersoft/iot/vmp/gb28181/event/platformNotRegister/PlatformNotRegisterEvent.java
@@ -1,10 +1,14 @@ package com.genersoft.iot.vmp.gb28181.event.platformNotRegister; import com.genersoft.iot.vmp.gb28181.bean.ParentPlatform; import org.springframework.context.ApplicationEvent; public class PlatformNotRegisterEvent extends ApplicationEvent { /** * Add default serial version ID */ private static final long serialVersionUID = 1L; private String platformGbID; public PlatformNotRegisterEvent(Object source) { src/main/java/com/genersoft/iot/vmp/gb28181/event/platformNotRegister/PlatformNotRegisterEventLister.java
@@ -1,15 +1,11 @@ package com.genersoft.iot.vmp.gb28181.event.platformNotRegister; import com.genersoft.iot.vmp.gb28181.bean.ParentPlatform; import com.genersoft.iot.vmp.gb28181.event.online.OnlineEvent; import com.genersoft.iot.vmp.gb28181.event.online.OnlineEventListener; import com.genersoft.iot.vmp.gb28181.transmit.cmd.impl.SIPCommanderFroPlatform; import com.genersoft.iot.vmp.storager.IVideoManagerStorager; import com.genersoft.iot.vmp.utils.redis.RedisUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationEvent; import org.springframework.context.ApplicationListener; import org.springframework.stereotype.Component; @@ -27,11 +23,12 @@ @Autowired private IVideoManagerStorager storager; @Autowired private SIPCommanderFroPlatform sipCommanderFroPlatform; @Autowired private RedisUtil redis; // @Autowired // private RedisUtil redis; @Override public void onApplicationEvent(PlatformNotRegisterEvent event) { src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/ISIPCommanderForPlatform.java
@@ -5,8 +5,6 @@ import com.genersoft.iot.vmp.gb28181.event.SipSubscribe; import javax.sip.header.WWWAuthenticateHeader; import java.nio.channels.Channel; import java.util.List; public interface ISIPCommanderForPlatform { src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/SIPRequestHeaderPlarformProvider.java
@@ -1,10 +1,7 @@ package com.genersoft.iot.vmp.gb28181.transmit.cmd; import com.genersoft.iot.vmp.conf.SipConfig; import com.genersoft.iot.vmp.gb28181.bean.Device; import com.genersoft.iot.vmp.gb28181.bean.Host; import com.genersoft.iot.vmp.gb28181.bean.ParentPlatform; import com.genersoft.iot.vmp.gb28181.event.SipSubscribe; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Component; @@ -16,10 +13,8 @@ import javax.sip.header.*; import javax.sip.message.Request; import javax.validation.constraints.NotNull; import java.nio.channels.Channel; import java.text.ParseException; import java.util.ArrayList; import java.util.List; import java.util.UUID; /** src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/SIPRequestHeaderProvider.java
@@ -2,7 +2,6 @@ import java.text.ParseException; import java.util.ArrayList; import java.util.UUID; import javax.sip.InvalidArgumentException; import javax.sip.PeerUnavailableException; @@ -12,17 +11,13 @@ import javax.sip.address.SipURI; import javax.sip.header.*; import javax.sip.message.Request; import javax.validation.constraints.NotNull; import com.genersoft.iot.vmp.gb28181.bean.ParentPlatform; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Component; import com.genersoft.iot.vmp.conf.SipConfig; import com.genersoft.iot.vmp.gb28181.bean.Device; import com.genersoft.iot.vmp.gb28181.bean.Host; import org.springframework.util.DigestUtils; /** * @Description:摄像头命令request创造器 TODO 冗余代码太多待优化 src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommanderFroPlatform.java
@@ -1,17 +1,17 @@ package com.genersoft.iot.vmp.gb28181.transmit.cmd.impl; import com.genersoft.iot.vmp.conf.SipConfig; import com.genersoft.iot.vmp.gb28181.bean.Device; //import com.genersoft.iot.vmp.conf.SipConfig; //import com.genersoft.iot.vmp.gb28181.bean.Device; import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel; import com.genersoft.iot.vmp.gb28181.bean.ParentPlatform; import com.genersoft.iot.vmp.gb28181.bean.ParentPlatformCatch; import com.genersoft.iot.vmp.gb28181.event.SipSubscribe; import com.genersoft.iot.vmp.gb28181.session.VideoStreamSessionManager; //import com.genersoft.iot.vmp.gb28181.session.VideoStreamSessionManager; import com.genersoft.iot.vmp.gb28181.transmit.cmd.ISIPCommanderForPlatform; import com.genersoft.iot.vmp.gb28181.transmit.cmd.SIPRequestHeaderPlarformProvider; import com.genersoft.iot.vmp.gb28181.transmit.cmd.SIPRequestHeaderProvider; //import com.genersoft.iot.vmp.gb28181.transmit.cmd.SIPRequestHeaderProvider; import com.genersoft.iot.vmp.storager.IRedisCatchStorage; import com.genersoft.iot.vmp.storager.IVideoManagerStorager; //import com.genersoft.iot.vmp.storager.IVideoManagerStorager; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Value; @@ -22,28 +22,26 @@ import javax.sip.header.CallIdHeader; import javax.sip.header.WWWAuthenticateHeader; import javax.sip.message.Request; import java.nio.channels.Channel; import java.text.ParseException; import java.util.List; import java.util.UUID; @Component public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform { @Autowired private SipConfig sipConfig; // @Autowired // private SipConfig sipConfig; @Autowired private SIPRequestHeaderProvider headerProvider; // @Autowired // private SIPRequestHeaderProvider headerProvider; @Autowired private SIPRequestHeaderPlarformProvider headerProviderPlarformProvider; @Autowired private VideoStreamSessionManager streamSession; // @Autowired // private VideoStreamSessionManager streamSession; @Autowired private IVideoManagerStorager storager; // @Autowired // private IVideoManagerStorager storager; @Autowired private IRedisCatchStorage redisCatchStorage; src/main/java/com/genersoft/iot/vmp/gb28181/transmit/response/impl/RegisterResponseProcessor.java
@@ -9,24 +9,15 @@ import com.genersoft.iot.vmp.gb28181.transmit.response.ISIPResponseProcessor; import com.genersoft.iot.vmp.storager.IRedisCatchStorage; import com.genersoft.iot.vmp.storager.IVideoManagerStorager; import gov.nist.core.Host; import gov.nist.javax.sip.address.AddressImpl; import gov.nist.javax.sip.address.SipUri; import gov.nist.javax.sip.header.To; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import javax.sip.ResponseEvent; import javax.sip.address.Address; import javax.sip.address.URI; import javax.sip.header.CallIdHeader; import javax.sip.header.ExpiresHeader; import javax.sip.header.ToHeader; import javax.sip.header.WWWAuthenticateHeader; import javax.sip.message.Response; import java.util.UUID; /** * @Description:Register响应处理器 src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java
@@ -1,19 +1,13 @@ package com.genersoft.iot.vmp.media.zlm; import java.math.BigInteger; import java.text.DecimalFormat; import java.util.ArrayList; import java.util.List; import java.util.UUID; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.genersoft.iot.vmp.common.StreamInfo; import com.genersoft.iot.vmp.conf.MediaServerConfig; import com.genersoft.iot.vmp.gb28181.bean.Device; import com.genersoft.iot.vmp.storager.IRedisCatchStorage; import com.genersoft.iot.vmp.storager.IVideoManagerStorager; import com.genersoft.iot.vmp.utils.IpUtil; import com.genersoft.iot.vmp.vmanager.service.IPlayService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -57,8 +51,8 @@ @Autowired private IRedisCatchStorage redisCatchStorage; @Autowired private ZLMRESTfulUtils zlmresTfulUtils; // @Autowired // private ZLMRESTfulUtils zlmresTfulUtils; @Autowired private ZLMHttpHookSubscribe subscribe; @@ -217,8 +211,8 @@ logger.debug("ZLM HOOK on_shell_login API调用,参数:" + json.toString()); } // TODO 如果是带有rtpstream则开启按需拉流 String app = json.getString("app"); String stream = json.getString("stream"); // String app = json.getString("app"); // String stream = json.getString("stream"); ZLMHttpHookSubscribe.Event subscribe = this.subscribe.getSubscribe(ZLMHttpHookSubscribe.HookType.on_publish, json); if (subscribe != null) subscribe.response(json); src/main/java/com/genersoft/iot/vmp/storager/IVideoManagerStorager.java
@@ -1,24 +1,20 @@ package com.genersoft.iot.vmp.storager; import java.util.List; import java.util.Map; import com.genersoft.iot.vmp.common.StreamInfo; import com.genersoft.iot.vmp.gb28181.bean.Device; import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel; import com.genersoft.iot.vmp.gb28181.bean.ParentPlatform; import com.genersoft.iot.vmp.vmanager.platform.bean.ChannelReduce; import com.genersoft.iot.vmp.gb28181.bean.MobilePosition; import com.github.pagehelper.PageInfo; import gov.nist.javax.sip.stack.NioTcpMessageProcessor; import javax.swing.event.ChangeEvent; /** * @Description:视频设备数据存储接口 * @author: swwheihei * @date: 2020年5月6日 下午2:14:31 */ @SuppressWarnings("rawtypes") public interface IVideoManagerStorager { /** src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceChannelMapper.java
@@ -1,7 +1,6 @@ package com.genersoft.iot.vmp.storager.dao; import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel; import com.genersoft.iot.vmp.gb28181.bean.ParentPlatform; import com.genersoft.iot.vmp.vmanager.platform.bean.ChannelReduce; import org.apache.ibatis.annotations.*; import org.springframework.stereotype.Repository; src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceMapper.java
@@ -1,7 +1,6 @@ package com.genersoft.iot.vmp.storager.dao; import com.genersoft.iot.vmp.gb28181.bean.Device; import com.genersoft.iot.vmp.gb28181.bean.ParentPlatform; import org.apache.ibatis.annotations.*; import org.springframework.stereotype.Repository; src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStoragerImpl.java
@@ -27,6 +27,7 @@ * @author: swwheihei * @date: 2020年5月6日 下午2:31:42 */ @SuppressWarnings("rawtypes") @Component public class VideoManagerStoragerImpl implements IVideoManagerStorager { src/main/java/com/genersoft/iot/vmp/vmanager/platform/PlatformController.java
@@ -1,6 +1,5 @@ package com.genersoft.iot.vmp.vmanager.platform; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.genersoft.iot.vmp.gb28181.bean.ParentPlatform; import com.genersoft.iot.vmp.gb28181.transmit.cmd.ISIPCommanderForPlatform; @@ -17,10 +16,6 @@ import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.*; import com.genersoft.iot.vmp.conf.SipConfig; import java.util.List; import java.util.Map; @CrossOrigin @RestController src/main/java/com/genersoft/iot/vmp/vmanager/play/PlayController.java
@@ -1,6 +1,5 @@ package com.genersoft.iot.vmp.vmanager.play; import com.alibaba.fastjson.JSON; import com.genersoft.iot.vmp.common.StreamInfo; import com.genersoft.iot.vmp.conf.MediaServerConfig; import com.genersoft.iot.vmp.gb28181.transmit.callback.DeferredResultHolder; @@ -22,12 +21,10 @@ import org.springframework.web.bind.annotation.RestController; import com.alibaba.fastjson.JSONObject; import com.genersoft.iot.vmp.gb28181.bean.Device; import com.genersoft.iot.vmp.gb28181.transmit.cmd.impl.SIPCommander; import com.genersoft.iot.vmp.storager.IVideoManagerStorager; import org.springframework.web.context.request.async.DeferredResult; import javax.sip.message.Response; import java.util.UUID; @CrossOrigin src/main/java/com/genersoft/iot/vmp/vmanager/service/impl/PlayServiceImpl.java
@@ -14,7 +14,6 @@ import com.genersoft.iot.vmp.media.zlm.ZLMRESTfulUtils; import com.genersoft.iot.vmp.storager.IRedisCatchStorage; import com.genersoft.iot.vmp.storager.IVideoManagerStorager; import com.genersoft.iot.vmp.vmanager.play.PlayController; import com.genersoft.iot.vmp.vmanager.play.bean.PlayResult; import com.genersoft.iot.vmp.vmanager.service.IPlayService; import org.slf4j.Logger; @@ -25,7 +24,6 @@ import org.springframework.web.context.request.async.DeferredResult; import javax.sip.message.Response; import java.text.DecimalFormat; import java.util.UUID; @Service