更新 gb28181-docking-platform 依赖版本
This commit is contained in:
parent
e36befe7ef
commit
e6819b2a15
@ -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.JsonMapping;
|
||||||
import cn.skcks.docking.gb28181.annotation.web.methods.GetJson;
|
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.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.config.SwaggerConfig;
|
||||||
import cn.skcks.docking.gb28181.wvp.service.catalog.CatalogService;
|
import cn.skcks.docking.gb28181.wvp.service.catalog.CatalogService;
|
||||||
import cn.skcks.docking.gb28181.wvp.service.device.control.DeviceControlService;
|
import cn.skcks.docking.gb28181.wvp.service.device.control.DeviceControlService;
|
||||||
@ -49,4 +51,9 @@ public class Gb28181Controller {
|
|||||||
deviceControlService.sendRecordControl(deviceCode, cmd);
|
deviceControlService.sendRecordControl(deviceCode, cmd);
|
||||||
return JsonResponse.success(null);
|
return JsonResponse.success(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostJson("/recordInfo")
|
||||||
|
public JsonResponse<Void> recordInfo(RecordInfoRequestDTO dto){
|
||||||
|
return JsonResponse.success(null);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
package cn.skcks.docking.gb28181.wvp.config;
|
package cn.skcks.docking.gb28181.wvp.config;
|
||||||
|
|
||||||
import cn.skcks.docking.gb28181.config.sip.SipConfig;
|
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 lombok.Data;
|
||||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
@ -30,7 +31,7 @@ public class ProxySipConfig {
|
|||||||
|
|
||||||
private String transport = ListeningPoint.UDP;
|
private String transport = ListeningPoint.UDP;
|
||||||
|
|
||||||
private StreamMode streamMode = StreamMode.TCP_PASSIVE;
|
private MediaStreamMode streamMode = MediaStreamMode.TCP_PASSIVE;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 某些特殊情况下 使用 视频回放点播 代替 下载
|
* 某些特殊情况下 使用 视频回放点播 代替 下载
|
||||||
|
@ -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.common.redis.RedisUtil;
|
||||||
import cn.skcks.docking.gb28181.core.sip.gb28181.cache.CacheUtil;
|
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.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.processor.MessageProcessor;
|
||||||
import cn.skcks.docking.gb28181.core.sip.message.subscribe.GenericSubscribe;
|
import cn.skcks.docking.gb28181.core.sip.message.subscribe.GenericSubscribe;
|
||||||
import cn.skcks.docking.gb28181.core.sip.utils.SipUtil;
|
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.rtp.OpenRtpServerResp;
|
||||||
import cn.skcks.docking.gb28181.media.dto.status.ResponseStatus;
|
import cn.skcks.docking.gb28181.media.dto.status.ResponseStatus;
|
||||||
import cn.skcks.docking.gb28181.media.proxy.ZlmMediaService;
|
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.service.ssrc.SsrcService;
|
||||||
import cn.skcks.docking.gb28181.wvp.config.ProxySipConfig;
|
import cn.skcks.docking.gb28181.wvp.config.ProxySipConfig;
|
||||||
import cn.skcks.docking.gb28181.wvp.config.WvpProxyConfig;
|
import cn.skcks.docking.gb28181.wvp.config.WvpProxyConfig;
|
||||||
@ -244,7 +244,7 @@ public class Gb28181DownloadService {
|
|||||||
return result;
|
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()){
|
if(Optional.ofNullable(existUrl).isPresent()){
|
||||||
result.setResult(JsonResponse.success(existUrl));
|
result.setResult(JsonResponse.success(existUrl));
|
||||||
return result;
|
return result;
|
||||||
@ -259,7 +259,7 @@ public class Gb28181DownloadService {
|
|||||||
log.info("获取媒体信息 {}", videoInfo);
|
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()) ?
|
String url = StringUtils.isNotBlank(proxySipConfig.getProxyMediaUrl()) ?
|
||||||
StringUtils.replace(videoInfo.getUrl(), zlmMediaConfig.getUrl(), proxySipConfig.getProxyMediaUrl()):
|
StringUtils.replace(videoInfo.getUrl(), zlmMediaConfig.getUrl(), proxySipConfig.getProxyMediaUrl()):
|
||||||
videoInfo.getUrl();
|
videoInfo.getUrl();
|
||||||
@ -359,9 +359,9 @@ public class Gb28181DownloadService {
|
|||||||
WvpProxyDevice device = deviceByGbDeviceIdAndChannel.get();
|
WvpProxyDevice device = deviceByGbDeviceIdAndChannel.get();
|
||||||
WvpProxyDocking docking = deviceByGbDeviceId.get();
|
WvpProxyDocking docking = deviceByGbDeviceId.get();
|
||||||
|
|
||||||
String streamId = MediaSdpHelper.getStreamId(gbDeviceId, channel, IdUtil.getSnowflakeNextIdStr());
|
String streamId = GB28181SDPBuilder.getStreamId(gbDeviceId, channel, IdUtil.getSnowflakeNextIdStr());
|
||||||
int isTcp = proxySipConfig.getStreamMode() == StreamMode.UDP ? 0 : 1;
|
int isTcp = proxySipConfig.getStreamMode() == MediaStreamMode.UDP ? 0 : 1;
|
||||||
StreamMode streamMode = proxySipConfig.getStreamMode();
|
MediaStreamMode streamMode = proxySipConfig.getStreamMode();
|
||||||
String ip = zlmMediaConfig.getIp();
|
String ip = zlmMediaConfig.getIp();
|
||||||
int port = openRtpServer(streamId, isTcp);
|
int port = openRtpServer(streamId, isTcp);
|
||||||
if(port <= 0){
|
if(port <= 0){
|
||||||
@ -370,7 +370,7 @@ public class Gb28181DownloadService {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
String ssrc = ssrcService.getPlaySsrc();
|
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));
|
sender.sendRequest(inviteRequest(docking, device, gb28181Description, ssrc, streamId, result));
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@ -440,9 +440,9 @@ public class Gb28181DownloadService {
|
|||||||
ZoneId zoneId = ZoneId.of(GB28181Constant.TIME_ZONE);
|
ZoneId zoneId = ZoneId.of(GB28181Constant.TIME_ZONE);
|
||||||
long start = LocalDateTimeUtil.of(startTime.toInstant(), zoneId).atZone(zoneId).toEpochSecond();
|
long start = LocalDateTimeUtil.of(startTime.toInstant(), zoneId).atZone(zoneId).toEpochSecond();
|
||||||
long end = LocalDateTimeUtil.of(endTime.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());
|
String streamId = GB28181SDPBuilder.getStreamId(gbDeviceId, channel, String.valueOf(start), String.valueOf(end), IdUtil.getSnowflakeNextIdStr());
|
||||||
int isTcp = proxySipConfig.getStreamMode() == StreamMode.UDP ? 0 : 1;
|
int isTcp = proxySipConfig.getStreamMode() == MediaStreamMode.UDP ? 0 : 1;
|
||||||
StreamMode streamMode = proxySipConfig.getStreamMode();
|
MediaStreamMode streamMode = proxySipConfig.getStreamMode();
|
||||||
String ip = zlmMediaConfig.getIp();
|
String ip = zlmMediaConfig.getIp();
|
||||||
int port = openRtpServer(streamId, isTcp);
|
int port = openRtpServer(streamId, isTcp);
|
||||||
if(port <= 0){
|
if(port <= 0){
|
||||||
@ -455,15 +455,15 @@ public class Gb28181DownloadService {
|
|||||||
timeField.setStartTime(start);
|
timeField.setStartTime(start);
|
||||||
timeField.setStopTime(end);
|
timeField.setStopTime(end);
|
||||||
TimeDescription timeDescription = SdpFactory.getInstance().createTimeDescription(timeField);
|
TimeDescription timeDescription = SdpFactory.getInstance().createTimeDescription(timeField);
|
||||||
MediaSdpHelper.Action action = MediaSdpHelper.Action.DOWNLOAD;
|
GB28181SDPBuilder.Action action = GB28181SDPBuilder.Action.DOWNLOAD;
|
||||||
if(proxySipConfig.isUsePlaybackToDownload()){
|
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.setSessionName(SdpFactory.getInstance().createSessionName(action.getAction()));
|
||||||
gb28181Description.setTimeDescriptions(new Vector<>(){{add(timeDescription);}});
|
gb28181Description.setTimeDescriptions(new Vector<>(){{add(timeDescription);}});
|
||||||
MediaDescriptionImpl media = (MediaDescriptionImpl) gb28181Description.getMediaDescriptions(true).get(0);
|
MediaDescriptionImpl media = (MediaDescriptionImpl) gb28181Description.getMediaDescriptions(true).get(0);
|
||||||
if(proxySipConfig.getStreamMode() != StreamMode.UDP){
|
if(proxySipConfig.getStreamMode() != MediaStreamMode.UDP){
|
||||||
media.getMedia().setProtocol("RTP/AVP/TCP");
|
media.getMedia().setProtocol("RTP/AVP/TCP");
|
||||||
}
|
}
|
||||||
if(!proxySipConfig.isUsePlaybackToDownload()){
|
if(!proxySipConfig.isUsePlaybackToDownload()){
|
||||||
@ -477,7 +477,7 @@ public class Gb28181DownloadService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@SneakyThrows
|
@SneakyThrows
|
||||||
public SipSender.SendRequest inviteRequest(WvpProxyDocking docking, WvpProxyDevice device, GB28181Description description, MediaSdpHelper.Action action, String ssrc, String streamId, CompletableFuture<VideoInfo> result, long time) {
|
public SipSender.SendRequest inviteRequest(WvpProxyDocking docking, WvpProxyDevice device, GB28181Description description, GB28181SDPBuilder.Action action, String ssrc, String streamId, CompletableFuture<VideoInfo> result, long time) {
|
||||||
String cacheKey = CacheUtil.getKey(docking.getGbDeviceId(), device.getGbDeviceChannelId());
|
String cacheKey = CacheUtil.getKey(docking.getGbDeviceId(), device.getGbDeviceChannelId());
|
||||||
String existCallId = RedisUtil.StringOps.get(cacheKey);
|
String existCallId = RedisUtil.StringOps.get(cacheKey);
|
||||||
|
|
||||||
@ -581,7 +581,7 @@ public class Gb28181DownloadService {
|
|||||||
String ip = request.getLocalAddress().getHostAddress();
|
String ip = request.getLocalAddress().getHostAddress();
|
||||||
if(time <= 0) {
|
if(time <= 0) {
|
||||||
String callId = request.getCallId().getCallId();
|
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);
|
VideoInfo parse = JsonUtils.parse(RedisUtil.StringOps.get(infoKey), VideoInfo.class);
|
||||||
Optional.ofNullable(parse).ifPresent((info)->{
|
Optional.ofNullable(parse).ifPresent((info)->{
|
||||||
if(info.getCallId().equalsIgnoreCase(callId)){
|
if(info.getCallId().equalsIgnoreCase(callId)){
|
||||||
|
@ -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.json.JsonUtils;
|
||||||
import cn.skcks.docking.gb28181.common.redis.RedisUtil;
|
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.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.core.sip.utils.SipUtil;
|
||||||
import cn.skcks.docking.gb28181.media.dto.rtp.CloseRtpServer;
|
import cn.skcks.docking.gb28181.media.dto.rtp.CloseRtpServer;
|
||||||
import cn.skcks.docking.gb28181.media.proxy.ZlmMediaService;
|
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.WvpProxyDevice;
|
||||||
import cn.skcks.docking.gb28181.wvp.orm.mybatis.dynamic.model.WvpProxyDocking;
|
import cn.skcks.docking.gb28181.wvp.orm.mybatis.dynamic.model.WvpProxyDocking;
|
||||||
import cn.skcks.docking.gb28181.wvp.service.device.DeviceService;
|
import cn.skcks.docking.gb28181.wvp.service.device.DeviceService;
|
||||||
@ -36,7 +37,7 @@ public class RealtimeManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void addPlaying(String deviceCode, Gb28181DownloadService.VideoInfo videoInfo) {
|
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);
|
ScheduledFuture<?> schedule = playing.get(deviceCode);
|
||||||
if(schedule != null){
|
if(schedule != null){
|
||||||
@ -80,7 +81,7 @@ public class RealtimeManager {
|
|||||||
*/
|
*/
|
||||||
private void close(String deviceCode, Gb28181DownloadService.VideoInfo videoInfo){
|
private void close(String deviceCode, Gb28181DownloadService.VideoInfo videoInfo){
|
||||||
RedisUtil.KeyOps.delete(getRealtimeKey(deviceCode));
|
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);
|
WvpProxyDevice device = deviceService.getDeviceByDeviceCode(deviceCode).orElse(null);
|
||||||
if(device == null){
|
if(device == null){
|
||||||
|
@ -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){
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
@ -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;
|
||||||
|
}
|
@ -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);
|
||||||
|
}
|
@ -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.common.redis.RedisUtil;
|
||||||
import cn.skcks.docking.gb28181.core.sip.gb28181.cache.CacheUtil;
|
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.listener.SipListener;
|
||||||
import cn.skcks.docking.gb28181.core.sip.message.processor.MessageProcessor;
|
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.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.response.SipResponseBuilder;
|
||||||
import cn.skcks.docking.gb28181.wvp.sip.sender.SipSender;
|
import cn.skcks.docking.gb28181.wvp.sip.sender.SipSender;
|
||||||
import cn.skcks.docking.gb28181.wvp.sip.subscribe.SipSubscribe;
|
import cn.skcks.docking.gb28181.wvp.sip.subscribe.SipSubscribe;
|
||||||
@ -50,7 +50,7 @@ public class ByeRequestProcessor implements MessageProcessor {
|
|||||||
.ifPresentOrElse(
|
.ifPresentOrElse(
|
||||||
publisher -> publisher.submit(request),
|
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) ->
|
sender.sendResponse(ip, transport, ((provider, ip1, port) ->
|
||||||
SipResponseBuilder.response(request, Response.OK, "OK")));
|
SipResponseBuilder.response(request, Response.OK, "OK")));
|
||||||
});
|
});
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
package cn.skcks.docking.gb28181.wvp.sip.response;
|
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.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.message.MessageHelper;
|
||||||
import cn.skcks.docking.gb28181.core.sip.utils.SipUtil;
|
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.MessageFactoryImpl;
|
||||||
import gov.nist.javax.sip.message.SIPRequest;
|
import gov.nist.javax.sip.message.SIPRequest;
|
||||||
import gov.nist.javax.sip.message.SIPResponse;
|
import gov.nist.javax.sip.message.SIPResponse;
|
||||||
|
@ -36,4 +36,9 @@ public class ByeSubscribe implements GenericSubscribe<SIPRequest> {
|
|||||||
public void delPublisher(String key) {
|
public void delPublisher(String key) {
|
||||||
Helper.delPublisher(publishers, key);
|
Helper.delPublisher(publishers, key);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void complete(String key) {
|
||||||
|
delPublisher(key);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -36,4 +36,9 @@ public class CatalogSubscribe implements GenericSubscribe<SIPRequest> {
|
|||||||
public void delPublisher(String key) {
|
public void delPublisher(String key) {
|
||||||
Helper.delPublisher(publishers, key);
|
Helper.delPublisher(publishers, key);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void complete(String key) {
|
||||||
|
delPublisher(key);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -34,6 +34,7 @@ excludeFilters = {
|
|||||||
"cn.skcks.docking.gb28181.service.record.*",
|
"cn.skcks.docking.gb28181.service.record.*",
|
||||||
"cn.skcks.docking.gb28181.core.sip.message.request.*",
|
"cn.skcks.docking.gb28181.core.sip.message.request.*",
|
||||||
"cn.skcks.docking.gb28181.service.catalog.*",
|
"cn.skcks.docking.gb28181.service.catalog.*",
|
||||||
|
"cn.skcks.docking.gb28181.service.notify.*"
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
@EnableAsync
|
@EnableAsync
|
||||||
|
2
pom.xml
2
pom.xml
@ -57,7 +57,7 @@
|
|||||||
<!-- <docker.registry.password>XXX</docker.registry.password>-->
|
<!-- <docker.registry.password>XXX</docker.registry.password>-->
|
||||||
<docker.maven.plugin.version>1.4.13</docker.maven.plugin.version>
|
<docker.maven.plugin.version>1.4.13</docker.maven.plugin.version>
|
||||||
|
|
||||||
<gb28181.docking.version>0.0.1-SNAPSHOT</gb28181.docking.version>
|
<gb28181.docking.version>0.1.0-SNAPSHOT</gb28181.docking.version>
|
||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
<profiles>
|
<profiles>
|
||||||
|
Loading…
Reference in New Issue
Block a user