From e6819b2a15f73f42d05ae9518fe6ae04cdcff500 Mon Sep 17 00:00:00 2001 From: shikong <919411476@qq.com> Date: Thu, 11 Jan 2024 11:33:58 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20gb28181-docking-platform?= =?UTF-8?q?=20=E4=BE=9D=E8=B5=96=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wvp/api/gb28181/Gb28181Controller.java | 7 +++ .../gb28181/wvp/config/ProxySipConfig.java | 5 +- .../gb28181/Gb28181DownloadService.java | 36 +++++++-------- .../wvp/service/gb28181/RealtimeManager.java | 7 +-- .../wvp/service/record/RecordInfoService.java | 28 +++++++++++ .../wvp/service/record/dto/RecordInfoDTO.java | 46 +++++++++++++++++++ .../record/dto/RecordInfoDTOConvertor.java | 14 ++++++ .../request/request/ByeRequestProcessor.java | 4 +- .../wvp/sip/response/SipResponseBuilder.java | 2 +- .../wvp/sip/subscribe/ByeSubscribe.java | 5 ++ .../wvp/sip/subscribe/CatalogSubscribe.java | 5 ++ .../gb28181/wvp/Gb28181WvpProxyStarter.java | 1 + pom.xml | 2 +- 13 files changed, 135 insertions(+), 27 deletions(-) create mode 100644 gb28181-wvp-proxy-service/src/main/java/cn/skcks/docking/gb28181/wvp/service/record/RecordInfoService.java create mode 100644 gb28181-wvp-proxy-service/src/main/java/cn/skcks/docking/gb28181/wvp/service/record/dto/RecordInfoDTO.java create mode 100644 gb28181-wvp-proxy-service/src/main/java/cn/skcks/docking/gb28181/wvp/service/record/dto/RecordInfoDTOConvertor.java diff --git a/gb28181-wvp-proxy-api/src/main/java/cn/skcks/docking/gb28181/wvp/api/gb28181/Gb28181Controller.java b/gb28181-wvp-proxy-api/src/main/java/cn/skcks/docking/gb28181/wvp/api/gb28181/Gb28181Controller.java index 16cd2e2..d557678 100644 --- a/gb28181-wvp-proxy-api/src/main/java/cn/skcks/docking/gb28181/wvp/api/gb28181/Gb28181Controller.java +++ b/gb28181-wvp-proxy-api/src/main/java/cn/skcks/docking/gb28181/wvp/api/gb28181/Gb28181Controller.java @@ -2,7 +2,9 @@ package cn.skcks.docking.gb28181.wvp.api.gb28181; import cn.skcks.docking.gb28181.annotation.web.JsonMapping; import cn.skcks.docking.gb28181.annotation.web.methods.GetJson; +import cn.skcks.docking.gb28181.annotation.web.methods.PostJson; import cn.skcks.docking.gb28181.common.json.JsonResponse; +import cn.skcks.docking.gb28181.core.sip.message.processor.message.types.recordinfo.query.dto.RecordInfoRequestDTO; import cn.skcks.docking.gb28181.wvp.config.SwaggerConfig; import cn.skcks.docking.gb28181.wvp.service.catalog.CatalogService; import cn.skcks.docking.gb28181.wvp.service.device.control.DeviceControlService; @@ -49,4 +51,9 @@ public class Gb28181Controller { deviceControlService.sendRecordControl(deviceCode, cmd); return JsonResponse.success(null); } + + @PostJson("/recordInfo") + public JsonResponse recordInfo(RecordInfoRequestDTO dto){ + return JsonResponse.success(null); + } } diff --git a/gb28181-wvp-proxy-service/src/main/java/cn/skcks/docking/gb28181/wvp/config/ProxySipConfig.java b/gb28181-wvp-proxy-service/src/main/java/cn/skcks/docking/gb28181/wvp/config/ProxySipConfig.java index 7584986..99e2bb8 100644 --- a/gb28181-wvp-proxy-service/src/main/java/cn/skcks/docking/gb28181/wvp/config/ProxySipConfig.java +++ b/gb28181-wvp-proxy-service/src/main/java/cn/skcks/docking/gb28181/wvp/config/ProxySipConfig.java @@ -1,7 +1,8 @@ package cn.skcks.docking.gb28181.wvp.config; import cn.skcks.docking.gb28181.config.sip.SipConfig; -import cn.skcks.docking.gb28181.core.sip.gb28181.sdp.StreamMode; +import cn.skcks.docking.gb28181.sdp.media.MediaStreamMode; + import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Bean; @@ -30,7 +31,7 @@ public class ProxySipConfig { private String transport = ListeningPoint.UDP; - private StreamMode streamMode = StreamMode.TCP_PASSIVE; + private MediaStreamMode streamMode = MediaStreamMode.TCP_PASSIVE; /** * 某些特殊情况下 使用 视频回放点播 代替 下载 diff --git a/gb28181-wvp-proxy-service/src/main/java/cn/skcks/docking/gb28181/wvp/service/gb28181/Gb28181DownloadService.java b/gb28181-wvp-proxy-service/src/main/java/cn/skcks/docking/gb28181/wvp/service/gb28181/Gb28181DownloadService.java index cf69422..b9b8e9b 100644 --- a/gb28181-wvp-proxy-service/src/main/java/cn/skcks/docking/gb28181/wvp/service/gb28181/Gb28181DownloadService.java +++ b/gb28181-wvp-proxy-service/src/main/java/cn/skcks/docking/gb28181/wvp/service/gb28181/Gb28181DownloadService.java @@ -12,9 +12,6 @@ import cn.skcks.docking.gb28181.common.json.JsonUtils; import cn.skcks.docking.gb28181.common.redis.RedisUtil; import cn.skcks.docking.gb28181.core.sip.gb28181.cache.CacheUtil; import cn.skcks.docking.gb28181.core.sip.gb28181.constant.GB28181Constant; -import cn.skcks.docking.gb28181.core.sip.gb28181.sdp.GB28181Description; -import cn.skcks.docking.gb28181.core.sip.gb28181.sdp.MediaSdpHelper; -import cn.skcks.docking.gb28181.core.sip.gb28181.sdp.StreamMode; import cn.skcks.docking.gb28181.core.sip.message.processor.MessageProcessor; import cn.skcks.docking.gb28181.core.sip.message.subscribe.GenericSubscribe; import cn.skcks.docking.gb28181.core.sip.utils.SipUtil; @@ -25,6 +22,9 @@ import cn.skcks.docking.gb28181.media.dto.rtp.OpenRtpServer; import cn.skcks.docking.gb28181.media.dto.rtp.OpenRtpServerResp; import cn.skcks.docking.gb28181.media.dto.status.ResponseStatus; import cn.skcks.docking.gb28181.media.proxy.ZlmMediaService; +import cn.skcks.docking.gb28181.sdp.GB28181Description; +import cn.skcks.docking.gb28181.sdp.GB28181SDPBuilder; +import cn.skcks.docking.gb28181.sdp.media.MediaStreamMode; import cn.skcks.docking.gb28181.service.ssrc.SsrcService; import cn.skcks.docking.gb28181.wvp.config.ProxySipConfig; import cn.skcks.docking.gb28181.wvp.config.WvpProxyConfig; @@ -244,7 +244,7 @@ public class Gb28181DownloadService { return result; } - String existUrl = RedisUtil.StringOps.get(CacheUtil.getKey(MediaSdpHelper.Action.PLAY.getAction(), deviceCode)); + String existUrl = RedisUtil.StringOps.get(CacheUtil.getKey(GB28181SDPBuilder.Action.PLAY.getAction(), deviceCode)); if(Optional.ofNullable(existUrl).isPresent()){ result.setResult(JsonResponse.success(existUrl)); return result; @@ -259,7 +259,7 @@ public class Gb28181DownloadService { log.info("获取媒体信息 {}", videoInfo); // 原始链接转换为前端可用的链接 - RedisUtil.StringOps.set(CacheUtil.getKey(MediaSdpHelper.Action.PLAY.getAction(), videoInfo.getCallId()), JsonUtils.toJson(videoInfo)); + RedisUtil.StringOps.set(CacheUtil.getKey(GB28181SDPBuilder.Action.PLAY.getAction(), videoInfo.getCallId()), JsonUtils.toJson(videoInfo)); String url = StringUtils.isNotBlank(proxySipConfig.getProxyMediaUrl()) ? StringUtils.replace(videoInfo.getUrl(), zlmMediaConfig.getUrl(), proxySipConfig.getProxyMediaUrl()): videoInfo.getUrl(); @@ -359,9 +359,9 @@ public class Gb28181DownloadService { WvpProxyDevice device = deviceByGbDeviceIdAndChannel.get(); WvpProxyDocking docking = deviceByGbDeviceId.get(); - String streamId = MediaSdpHelper.getStreamId(gbDeviceId, channel, IdUtil.getSnowflakeNextIdStr()); - int isTcp = proxySipConfig.getStreamMode() == StreamMode.UDP ? 0 : 1; - StreamMode streamMode = proxySipConfig.getStreamMode(); + String streamId = GB28181SDPBuilder.getStreamId(gbDeviceId, channel, IdUtil.getSnowflakeNextIdStr()); + int isTcp = proxySipConfig.getStreamMode() == MediaStreamMode.UDP ? 0 : 1; + MediaStreamMode streamMode = proxySipConfig.getStreamMode(); String ip = zlmMediaConfig.getIp(); int port = openRtpServer(streamId, isTcp); if(port <= 0){ @@ -370,7 +370,7 @@ public class Gb28181DownloadService { return result; } String ssrc = ssrcService.getPlaySsrc(); - GB28181Description gb28181Description = MediaSdpHelper.play(gbDeviceId, channel, Connection.IP4, ip, port, ssrc, streamMode); + GB28181Description gb28181Description = GB28181SDPBuilder.Receiver.play(gbDeviceId, channel, Connection.IP4, ip, port, ssrc, streamMode); sender.sendRequest(inviteRequest(docking, device, gb28181Description, ssrc, streamId, result)); return result; } @@ -440,9 +440,9 @@ public class Gb28181DownloadService { ZoneId zoneId = ZoneId.of(GB28181Constant.TIME_ZONE); long start = LocalDateTimeUtil.of(startTime.toInstant(), zoneId).atZone(zoneId).toEpochSecond(); long end = LocalDateTimeUtil.of(endTime.toInstant(), zoneId).atZone(zoneId).toEpochSecond(); - String streamId = MediaSdpHelper.getStreamId(gbDeviceId, channel, String.valueOf(start), String.valueOf(end), IdUtil.getSnowflakeNextIdStr()); - int isTcp = proxySipConfig.getStreamMode() == StreamMode.UDP ? 0 : 1; - StreamMode streamMode = proxySipConfig.getStreamMode(); + String streamId = GB28181SDPBuilder.getStreamId(gbDeviceId, channel, String.valueOf(start), String.valueOf(end), IdUtil.getSnowflakeNextIdStr()); + int isTcp = proxySipConfig.getStreamMode() == MediaStreamMode.UDP ? 0 : 1; + MediaStreamMode streamMode = proxySipConfig.getStreamMode(); String ip = zlmMediaConfig.getIp(); int port = openRtpServer(streamId, isTcp); if(port <= 0){ @@ -455,15 +455,15 @@ public class Gb28181DownloadService { timeField.setStartTime(start); timeField.setStopTime(end); TimeDescription timeDescription = SdpFactory.getInstance().createTimeDescription(timeField); - MediaSdpHelper.Action action = MediaSdpHelper.Action.DOWNLOAD; + GB28181SDPBuilder.Action action = GB28181SDPBuilder.Action.DOWNLOAD; if(proxySipConfig.isUsePlaybackToDownload()){ - action = MediaSdpHelper.Action.PLAY_BACK; + action = GB28181SDPBuilder.Action.PLAY_BACK; } - GB28181Description gb28181Description = MediaSdpHelper.build(action, gbDeviceId, channel, Connection.IP4, ip, port, ssrc, streamMode, timeDescription); + GB28181Description gb28181Description = GB28181SDPBuilder.Receiver.build(action, gbDeviceId, channel, Connection.IP4, ip, port, ssrc, streamMode, timeDescription); gb28181Description.setSessionName(SdpFactory.getInstance().createSessionName(action.getAction())); gb28181Description.setTimeDescriptions(new Vector<>(){{add(timeDescription);}}); MediaDescriptionImpl media = (MediaDescriptionImpl) gb28181Description.getMediaDescriptions(true).get(0); - if(proxySipConfig.getStreamMode() != StreamMode.UDP){ + if(proxySipConfig.getStreamMode() != MediaStreamMode.UDP){ media.getMedia().setProtocol("RTP/AVP/TCP"); } if(!proxySipConfig.isUsePlaybackToDownload()){ @@ -477,7 +477,7 @@ public class Gb28181DownloadService { } @SneakyThrows - public SipSender.SendRequest inviteRequest(WvpProxyDocking docking, WvpProxyDevice device, GB28181Description description, MediaSdpHelper.Action action, String ssrc, String streamId, CompletableFuture result, long time) { + public SipSender.SendRequest inviteRequest(WvpProxyDocking docking, WvpProxyDevice device, GB28181Description description, GB28181SDPBuilder.Action action, String ssrc, String streamId, CompletableFuture result, long time) { String cacheKey = CacheUtil.getKey(docking.getGbDeviceId(), device.getGbDeviceChannelId()); String existCallId = RedisUtil.StringOps.get(cacheKey); @@ -581,7 +581,7 @@ public class Gb28181DownloadService { String ip = request.getLocalAddress().getHostAddress(); if(time <= 0) { String callId = request.getCallId().getCallId(); - String infoKey = CacheUtil.getKey(MediaSdpHelper.Action.PLAY.getAction(), callId); + String infoKey = CacheUtil.getKey(GB28181SDPBuilder.Action.PLAY.getAction(), callId); VideoInfo parse = JsonUtils.parse(RedisUtil.StringOps.get(infoKey), VideoInfo.class); Optional.ofNullable(parse).ifPresent((info)->{ if(info.getCallId().equalsIgnoreCase(callId)){ diff --git a/gb28181-wvp-proxy-service/src/main/java/cn/skcks/docking/gb28181/wvp/service/gb28181/RealtimeManager.java b/gb28181-wvp-proxy-service/src/main/java/cn/skcks/docking/gb28181/wvp/service/gb28181/RealtimeManager.java index 84d3d9c..0562006 100644 --- a/gb28181-wvp-proxy-service/src/main/java/cn/skcks/docking/gb28181/wvp/service/gb28181/RealtimeManager.java +++ b/gb28181-wvp-proxy-service/src/main/java/cn/skcks/docking/gb28181/wvp/service/gb28181/RealtimeManager.java @@ -3,10 +3,11 @@ package cn.skcks.docking.gb28181.wvp.service.gb28181; import cn.skcks.docking.gb28181.common.json.JsonUtils; import cn.skcks.docking.gb28181.common.redis.RedisUtil; import cn.skcks.docking.gb28181.core.sip.gb28181.cache.CacheUtil; -import cn.skcks.docking.gb28181.core.sip.gb28181.sdp.MediaSdpHelper; + import cn.skcks.docking.gb28181.core.sip.utils.SipUtil; import cn.skcks.docking.gb28181.media.dto.rtp.CloseRtpServer; import cn.skcks.docking.gb28181.media.proxy.ZlmMediaService; +import cn.skcks.docking.gb28181.sdp.GB28181SDPBuilder; import cn.skcks.docking.gb28181.wvp.orm.mybatis.dynamic.model.WvpProxyDevice; import cn.skcks.docking.gb28181.wvp.orm.mybatis.dynamic.model.WvpProxyDocking; import cn.skcks.docking.gb28181.wvp.service.device.DeviceService; @@ -36,7 +37,7 @@ public class RealtimeManager { } public void addPlaying(String deviceCode, Gb28181DownloadService.VideoInfo videoInfo) { - RedisUtil.StringOps.set(CacheUtil.getKey(MediaSdpHelper.Action.PLAY.getAction(), deviceCode), videoInfo.getUrl()); + RedisUtil.StringOps.set(CacheUtil.getKey(GB28181SDPBuilder.Action.PLAY.getAction(), deviceCode), videoInfo.getUrl()); ScheduledFuture schedule = playing.get(deviceCode); if(schedule != null){ @@ -80,7 +81,7 @@ public class RealtimeManager { */ private void close(String deviceCode, Gb28181DownloadService.VideoInfo videoInfo){ RedisUtil.KeyOps.delete(getRealtimeKey(deviceCode)); - RedisUtil.KeyOps.delete(CacheUtil.getKey(MediaSdpHelper.Action.PLAY.getAction(), deviceCode)); + RedisUtil.KeyOps.delete(CacheUtil.getKey(GB28181SDPBuilder.Action.PLAY.getAction(), deviceCode)); WvpProxyDevice device = deviceService.getDeviceByDeviceCode(deviceCode).orElse(null); if(device == null){ diff --git a/gb28181-wvp-proxy-service/src/main/java/cn/skcks/docking/gb28181/wvp/service/record/RecordInfoService.java b/gb28181-wvp-proxy-service/src/main/java/cn/skcks/docking/gb28181/wvp/service/record/RecordInfoService.java new file mode 100644 index 0000000..02b5837 --- /dev/null +++ b/gb28181-wvp-proxy-service/src/main/java/cn/skcks/docking/gb28181/wvp/service/record/RecordInfoService.java @@ -0,0 +1,28 @@ +package cn.skcks.docking.gb28181.wvp.service.record; + +import cn.skcks.docking.gb28181.core.sip.message.processor.message.types.recordinfo.query.dto.RecordInfoRequestDTO; +import cn.skcks.docking.gb28181.wvp.service.device.DeviceService; +import cn.skcks.docking.gb28181.wvp.service.docking.DockingService; +import cn.skcks.docking.gb28181.wvp.sip.sender.SipSender; +import cn.skcks.docking.gb28181.wvp.sip.subscribe.SipSubscribe; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.util.concurrent.Executors; +import java.util.concurrent.ScheduledExecutorService; + +@Slf4j +@Service +@RequiredArgsConstructor +public class RecordInfoService { + private final SipSender sipSender; + private final SipSubscribe sipSubscribe; + private final ScheduledExecutorService scheduledExecutorService = Executors.newSingleThreadScheduledExecutor(); + private final DockingService dockingService; + private final DeviceService deviceService; + + public void requestRecordInfo(String deviceCode, RecordInfoRequestDTO dto){ + + } +} diff --git a/gb28181-wvp-proxy-service/src/main/java/cn/skcks/docking/gb28181/wvp/service/record/dto/RecordInfoDTO.java b/gb28181-wvp-proxy-service/src/main/java/cn/skcks/docking/gb28181/wvp/service/record/dto/RecordInfoDTO.java new file mode 100644 index 0000000..a996bdf --- /dev/null +++ b/gb28181-wvp-proxy-service/src/main/java/cn/skcks/docking/gb28181/wvp/service/record/dto/RecordInfoDTO.java @@ -0,0 +1,46 @@ +package cn.skcks.docking.gb28181.wvp.service.record.dto; + +import cn.hutool.core.date.DatePattern; +import cn.skcks.docking.gb28181.constant.GB28181Constant; +import cn.skcks.docking.gb28181.core.sip.gb28181.constant.CmdType; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + +public class RecordInfoDTO { + private String cmdType = CmdType.RECORD_INFO; + + /** + * 命令序列号(必选) + */ + private String sn; + + /** + * 目标设备的设备编码(必选) + */ + private String deviceId; + + @DateTimeFormat(pattern= DatePattern.NORM_DATETIME_PATTERN) + @JsonFormat(pattern = GB28181Constant.DATETIME_FORMAT, timezone = GB28181Constant.TIME_ZONE) + private Date startTime; + + @DateTimeFormat(pattern= DatePattern.NORM_DATETIME_PATTERN) + @JsonFormat(pattern = GB28181Constant.DATETIME_FORMAT, timezone = GB28181Constant.TIME_ZONE) + private Date endTime; + + private String filePath; + + private String address; + + + private Integer Secrecy = 0; + + + private String type = "all"; + + + private String recorderId; + + private Integer IndistinctQuery; +} diff --git a/gb28181-wvp-proxy-service/src/main/java/cn/skcks/docking/gb28181/wvp/service/record/dto/RecordInfoDTOConvertor.java b/gb28181-wvp-proxy-service/src/main/java/cn/skcks/docking/gb28181/wvp/service/record/dto/RecordInfoDTOConvertor.java new file mode 100644 index 0000000..16a2d26 --- /dev/null +++ b/gb28181-wvp-proxy-service/src/main/java/cn/skcks/docking/gb28181/wvp/service/record/dto/RecordInfoDTOConvertor.java @@ -0,0 +1,14 @@ +package cn.skcks.docking.gb28181.wvp.service.record.dto; + +import cn.skcks.docking.gb28181.core.sip.message.processor.message.types.recordinfo.query.dto.RecordInfoRequestDTO; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +@Mapper +public interface RecordInfoDTOConvertor { + RecordInfoDTOConvertor INSTANCE = Mappers.getMapper(RecordInfoDTOConvertor.class); + + RecordInfoDTO convert(RecordInfoRequestDTO dto); + + RecordInfoRequestDTO convert(RecordInfoDTO dto); +} diff --git a/gb28181-wvp-proxy-service/src/main/java/cn/skcks/docking/gb28181/wvp/sip/message/bye/request/request/ByeRequestProcessor.java b/gb28181-wvp-proxy-service/src/main/java/cn/skcks/docking/gb28181/wvp/sip/message/bye/request/request/ByeRequestProcessor.java index d350c01..bd16537 100644 --- a/gb28181-wvp-proxy-service/src/main/java/cn/skcks/docking/gb28181/wvp/sip/message/bye/request/request/ByeRequestProcessor.java +++ b/gb28181-wvp-proxy-service/src/main/java/cn/skcks/docking/gb28181/wvp/sip/message/bye/request/request/ByeRequestProcessor.java @@ -2,10 +2,10 @@ package cn.skcks.docking.gb28181.wvp.sip.message.bye.request.request; import cn.skcks.docking.gb28181.common.redis.RedisUtil; import cn.skcks.docking.gb28181.core.sip.gb28181.cache.CacheUtil; -import cn.skcks.docking.gb28181.core.sip.gb28181.sdp.MediaSdpHelper; import cn.skcks.docking.gb28181.core.sip.listener.SipListener; import cn.skcks.docking.gb28181.core.sip.message.processor.MessageProcessor; import cn.skcks.docking.gb28181.core.sip.message.subscribe.GenericSubscribe; +import cn.skcks.docking.gb28181.sdp.GB28181SDPBuilder; import cn.skcks.docking.gb28181.wvp.sip.response.SipResponseBuilder; import cn.skcks.docking.gb28181.wvp.sip.sender.SipSender; import cn.skcks.docking.gb28181.wvp.sip.subscribe.SipSubscribe; @@ -50,7 +50,7 @@ public class ByeRequestProcessor implements MessageProcessor { .ifPresentOrElse( publisher -> publisher.submit(request), () -> { - RedisUtil.KeyOps.delete(CacheUtil.getKey(MediaSdpHelper.Action.PLAY.getAction(), callId)); + RedisUtil.KeyOps.delete(CacheUtil.getKey(GB28181SDPBuilder.Action.PLAY.getAction(), callId)); sender.sendResponse(ip, transport, ((provider, ip1, port) -> SipResponseBuilder.response(request, Response.OK, "OK"))); }); diff --git a/gb28181-wvp-proxy-service/src/main/java/cn/skcks/docking/gb28181/wvp/sip/response/SipResponseBuilder.java b/gb28181-wvp-proxy-service/src/main/java/cn/skcks/docking/gb28181/wvp/sip/response/SipResponseBuilder.java index 62f01c2..34b1fe6 100644 --- a/gb28181-wvp-proxy-service/src/main/java/cn/skcks/docking/gb28181/wvp/sip/response/SipResponseBuilder.java +++ b/gb28181-wvp-proxy-service/src/main/java/cn/skcks/docking/gb28181/wvp/sip/response/SipResponseBuilder.java @@ -1,9 +1,9 @@ package cn.skcks.docking.gb28181.wvp.sip.response; import cn.skcks.docking.gb28181.core.sip.gb28181.constant.GB28181Constant; -import cn.skcks.docking.gb28181.core.sip.gb28181.sdp.GB28181Description; import cn.skcks.docking.gb28181.core.sip.message.MessageHelper; import cn.skcks.docking.gb28181.core.sip.utils.SipUtil; +import cn.skcks.docking.gb28181.sdp.GB28181Description; import gov.nist.javax.sip.message.MessageFactoryImpl; import gov.nist.javax.sip.message.SIPRequest; import gov.nist.javax.sip.message.SIPResponse; diff --git a/gb28181-wvp-proxy-service/src/main/java/cn/skcks/docking/gb28181/wvp/sip/subscribe/ByeSubscribe.java b/gb28181-wvp-proxy-service/src/main/java/cn/skcks/docking/gb28181/wvp/sip/subscribe/ByeSubscribe.java index 967dcbe..21aca94 100644 --- a/gb28181-wvp-proxy-service/src/main/java/cn/skcks/docking/gb28181/wvp/sip/subscribe/ByeSubscribe.java +++ b/gb28181-wvp-proxy-service/src/main/java/cn/skcks/docking/gb28181/wvp/sip/subscribe/ByeSubscribe.java @@ -36,4 +36,9 @@ public class ByeSubscribe implements GenericSubscribe { public void delPublisher(String key) { Helper.delPublisher(publishers, key); } + + @Override + public void complete(String key) { + delPublisher(key); + } } diff --git a/gb28181-wvp-proxy-service/src/main/java/cn/skcks/docking/gb28181/wvp/sip/subscribe/CatalogSubscribe.java b/gb28181-wvp-proxy-service/src/main/java/cn/skcks/docking/gb28181/wvp/sip/subscribe/CatalogSubscribe.java index 4f6a1eb..7da0fc4 100644 --- a/gb28181-wvp-proxy-service/src/main/java/cn/skcks/docking/gb28181/wvp/sip/subscribe/CatalogSubscribe.java +++ b/gb28181-wvp-proxy-service/src/main/java/cn/skcks/docking/gb28181/wvp/sip/subscribe/CatalogSubscribe.java @@ -36,4 +36,9 @@ public class CatalogSubscribe implements GenericSubscribe { public void delPublisher(String key) { Helper.delPublisher(publishers, key); } + + @Override + public void complete(String key) { + delPublisher(key); + } } diff --git a/gb28181-wvp-proxy-starter/src/main/java/cn/skcks/docking/gb28181/wvp/Gb28181WvpProxyStarter.java b/gb28181-wvp-proxy-starter/src/main/java/cn/skcks/docking/gb28181/wvp/Gb28181WvpProxyStarter.java index a817fea..4a52ae8 100644 --- a/gb28181-wvp-proxy-starter/src/main/java/cn/skcks/docking/gb28181/wvp/Gb28181WvpProxyStarter.java +++ b/gb28181-wvp-proxy-starter/src/main/java/cn/skcks/docking/gb28181/wvp/Gb28181WvpProxyStarter.java @@ -34,6 +34,7 @@ excludeFilters = { "cn.skcks.docking.gb28181.service.record.*", "cn.skcks.docking.gb28181.core.sip.message.request.*", "cn.skcks.docking.gb28181.service.catalog.*", + "cn.skcks.docking.gb28181.service.notify.*" }) }) @EnableAsync diff --git a/pom.xml b/pom.xml index f59f210..1563918 100644 --- a/pom.xml +++ b/pom.xml @@ -57,7 +57,7 @@ 1.4.13 - 0.0.1-SNAPSHOT + 0.1.0-SNAPSHOT