diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommanderFroPlatform.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommanderFroPlatform.java index d77bdb8cc..f6a151a43 100755 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommanderFroPlatform.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommanderFroPlatform.java @@ -558,7 +558,7 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform { .append("Catalog\r\n") .append("" + SipUtils.getNewSn() + "\r\n") .append("" + parentPlatform.getDeviceGBId() + "\r\n") - .append(""+ channels.size() +"\r\n") + .append(""+ sumNum +"\r\n") .append("\r\n"); if (channels.size() > 0) { for (CommonGbChannel channel : channels) { diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/InviteStreamServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/InviteStreamServiceImpl.java index 752d06319..faaefab6b 100755 --- a/src/main/java/com/genersoft/iot/vmp/service/impl/InviteStreamServiceImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/service/impl/InviteStreamServiceImpl.java @@ -117,7 +117,7 @@ public class InviteStreamServiceImpl implements IInviteStreamService { + ":*"; List scanResult = RedisUtil.scan(redisTemplate, key); if (scanResult.size() != 1) { - return null; + logger.warn("[获取InviteInfo] 发现 key: {}存在多条", key); } return (InviteInfo) redisTemplate.opsForValue().get(scanResult.get(0)); diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/MediaServerServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/MediaServerServiceImpl.java index 2cefab8d2..1ef0e219d 100755 --- a/src/main/java/com/genersoft/iot/vmp/service/impl/MediaServerServiceImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/service/impl/MediaServerServiceImpl.java @@ -702,6 +702,7 @@ public class MediaServerServiceImpl implements IMediaServerService { ssrcFactory.initMediaServerSSRC(mediaServerItem.getId(), null); String key = VideoManagerConstants.MEDIA_SERVER_PREFIX + userSetting.getServerId() + "_" + mediaServerItem.getId(); redisTemplate.opsForValue().set(key, mediaServerItem); + resetOnlineServerItem(mediaServerItem); clearRTPServer(mediaServerItem); } final String zlmKeepaliveKey = zlmKeepaliveKeyPrefix + mediaServerItem.getId(); diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/PlatformServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/PlatformServiceImpl.java index 4a293eb67..d95ef027b 100755 --- a/src/main/java/com/genersoft/iot/vmp/service/impl/PlatformServiceImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/service/impl/PlatformServiceImpl.java @@ -262,6 +262,7 @@ public class PlatformServiceImpl implements IPlatformService { } if (parentPlatform.isAutoPushChannel()) { if (subscribeHolder.getCatalogSubscribe(parentPlatform.getId()) == null) { + logger.info("[国标级联]:{}, 添加自动通道推送模拟订阅信息", parentPlatform.getServerGBId()); addSimulatedSubscribeInfo(parentPlatform); } }else { @@ -331,9 +332,16 @@ public class PlatformServiceImpl implements IPlatformService { // 清除心跳任务 dynamicTask.stop(keepaliveTaskKey); } - // 停止目录订阅回复 - logger.info("[平台离线] {}, 停止订阅回复", parentPlatform.getServerGBId()); - subscribeHolder.removeAllSubscribe(parentPlatform.getId()); + // 停止订阅回复 + SubscribeInfo catalogSubscribe = subscribeHolder.getCatalogSubscribe(parentPlatform.getId()); + if (catalogSubscribe != null) { + if (catalogSubscribe.getExpires() > 0) { + logger.info("[平台离线] {}, 停止目录订阅回复", parentPlatform.getServerGBId()); + subscribeHolder.removeCatalogSubscribe(parentPlatform.getId()); + } + } + logger.info("[平台离线] {}, 停止移动位置订阅回复", parentPlatform.getServerGBId()); + subscribeHolder.removeMobilePositionSubscribe(parentPlatform.getId()); // 发起定时自动重新注册 if (!stopRegister) { // 设置为60秒自动尝试重新注册 diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java index d7e604b22..7acd77f2e 100755 --- a/src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java @@ -981,7 +981,9 @@ public class PlayServiceImpl implements IPlayService { throw new ServiceException("mediaServer不存在"); } // zlm 暂停RTP超时检查 - JSONObject jsonObject = zlmresTfulUtils.pauseRtpCheck(mediaServerItem, streamId); + // 使用zlm中的流ID + String ssrc = Long.toHexString(Long.parseLong(ssrcTransaction.getSsrc())).toUpperCase(); + JSONObject jsonObject = zlmresTfulUtils.pauseRtpCheck(mediaServerItem, ssrc); if (jsonObject == null || jsonObject.getInteger("code") != 0) { logger.warn("[暂停流] 暂停RTP接收失败: {}", jsonObject ); throw new ServiceException("暂停RTP接收失败"); @@ -1006,7 +1008,9 @@ public class PlayServiceImpl implements IPlayService { } // zlm 暂停RTP超时检查 - JSONObject jsonObject = zlmresTfulUtils.resumeRtpCheck(mediaServerItem, streamId); + // 使用zlm中的流ID + String ssrc = Long.toHexString(Long.parseLong(ssrcTransaction.getSsrc())).toUpperCase(); + JSONObject jsonObject = zlmresTfulUtils.resumeRtpCheck(mediaServerItem, ssrc); if (jsonObject == null || jsonObject.getInteger("code") != 0) { logger.info("[暂停RTP超时检查] 失败:" + jsonObject); throw new ServiceException("继续RTP接收失败");