Commit e05d0aa0a96747c1ccaf89d7fbf7445a45836445
1 parent
0e38e743
修复ssrc变化时端口变化的问题
Showing
8 changed files
with
25 additions
and
14 deletions
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/NotifyRequestProcessor.java
| ... | ... | @@ -315,7 +315,7 @@ public class NotifyRequestProcessor extends SIPRequestProcessorParent implements |
| 315 | 315 | |
| 316 | 316 | Device device = redisCatchStorage.getDevice(deviceId); |
| 317 | 317 | if (device == null || device.getOnline() == 0) { |
| 318 | - logger.warn("[收到 目录订阅]:{}, 但是设备已经离线", (device != null ? device.getDeviceId():"" )); | |
| 318 | + logger.warn("[收到目录订阅]:{}, 但是设备已经离线", (device != null ? device.getDeviceId():"" )); | |
| 319 | 319 | return; |
| 320 | 320 | } |
| 321 | 321 | Element rootElement = getRootElement(evt, device.getCharset()); |
| ... | ... | @@ -336,14 +336,14 @@ public class NotifyRequestProcessor extends SIPRequestProcessorParent implements |
| 336 | 336 | Element eventElement = itemDevice.element("Event"); |
| 337 | 337 | String event; |
| 338 | 338 | if (eventElement == null) { |
| 339 | - logger.warn("[收到 目录订阅]:{}, 但是Event为空, 设为默认值 ADD", (device != null ? device.getDeviceId():"" )); | |
| 339 | + logger.warn("[收到目录订阅]:{}, 但是Event为空, 设为默认值 ADD", (device != null ? device.getDeviceId():"" )); | |
| 340 | 340 | event = CatalogEvent.ADD; |
| 341 | 341 | }else { |
| 342 | 342 | event = eventElement.getText().toUpperCase(); |
| 343 | 343 | } |
| 344 | 344 | DeviceChannel channel = XmlUtil.channelContentHander(itemDevice, device, event); |
| 345 | 345 | channel.setDeviceId(device.getDeviceId()); |
| 346 | - logger.info("[收到 目录订阅]:{}/{}", device.getDeviceId(), channel.getChannelId()); | |
| 346 | + logger.info("[收到目录订阅]:{}/{}", device.getDeviceId(), channel.getChannelId()); | |
| 347 | 347 | switch (event) { |
| 348 | 348 | case CatalogEvent.ON: |
| 349 | 349 | // 上线 | ... | ... |
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/query/cmd/DeviceInfoQueryMessageHandler.java
| ... | ... | @@ -44,7 +44,7 @@ public class DeviceInfoQueryMessageHandler extends SIPRequestProcessorParent imp |
| 44 | 44 | |
| 45 | 45 | @Override |
| 46 | 46 | public void handForPlatform(RequestEvent evt, ParentPlatform parentPlatform, Element rootElement) { |
| 47 | - logger.info("接收到DeviceInfo查询消息"); | |
| 47 | + logger.info("[DeviceInfo查询]消息"); | |
| 48 | 48 | FromHeader fromHeader = (FromHeader) evt.getRequest().getHeader(FromHeader.NAME); |
| 49 | 49 | try { |
| 50 | 50 | // 回复200 OK | ... | ... |
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/response/impl/RegisterResponseProcessor.java
| ... | ... | @@ -26,7 +26,7 @@ import javax.sip.message.Response; |
| 26 | 26 | @Component |
| 27 | 27 | public class RegisterResponseProcessor extends SIPResponseProcessorAbstract { |
| 28 | 28 | |
| 29 | - private Logger logger = LoggerFactory.getLogger(RegisterResponseProcessor.class); | |
| 29 | + private final Logger logger = LoggerFactory.getLogger(RegisterResponseProcessor.class); | |
| 30 | 30 | private final String method = "REGISTER"; |
| 31 | 31 | |
| 32 | 32 | @Autowired |
| ... | ... | @@ -69,11 +69,11 @@ public class RegisterResponseProcessor extends SIPResponseProcessorAbstract { |
| 69 | 69 | |
| 70 | 70 | ParentPlatformCatch parentPlatformCatch = redisCatchStorage.queryPlatformCatchInfo(platformGBId); |
| 71 | 71 | if (parentPlatformCatch == null) { |
| 72 | - logger.warn(String.format("收到 %s 的注册/注销%S请求, 但是平台缓存信息未查询到!!!", platformGBId, response.getStatusCode())); | |
| 72 | + logger.warn(String.format("[收到注册/注销%S请求]平台:%s,但是平台缓存信息未查询到!!!", response.getStatusCode(),platformGBId)); | |
| 73 | 73 | return; |
| 74 | 74 | } |
| 75 | 75 | String action = parentPlatformCatch.getParentPlatform().getExpires().equals("0") ? "注销" : "注册"; |
| 76 | - logger.info(String.format("收到 %s %s的%S响应", platformGBId, action, response.getStatusCode() )); | |
| 76 | + logger.info(String.format("[%s %S响应]%s ", action, response.getStatusCode(), platformGBId )); | |
| 77 | 77 | ParentPlatform parentPlatform = parentPlatformCatch.getParentPlatform(); |
| 78 | 78 | if (parentPlatform == null) { |
| 79 | 79 | logger.warn(String.format("收到 %s %s的%S请求, 但是平台信息未查询到!!!", platformGBId, action, response.getStatusCode())); | ... | ... |
src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRTPServerFactory.java
| ... | ... | @@ -87,7 +87,7 @@ public class ZLMRTPServerFactory { |
| 87 | 87 | return result; |
| 88 | 88 | } |
| 89 | 89 | |
| 90 | - public int createRTPServer(MediaServerItem mediaServerItem, String streamId, int ssrc) { | |
| 90 | + public int createRTPServer(MediaServerItem mediaServerItem, String streamId, int ssrc, Integer port) { | |
| 91 | 91 | int result = -1; |
| 92 | 92 | // 查询此rtp server 是否已经存在 |
| 93 | 93 | JSONObject rtpInfo = zlmresTfulUtils.getRtpInfo(mediaServerItem, streamId); |
| ... | ... | @@ -105,7 +105,11 @@ public class ZLMRTPServerFactory { |
| 105 | 105 | param.put("enable_tcp", 1); |
| 106 | 106 | param.put("stream_id", streamId); |
| 107 | 107 | // 推流端口设置0则使用随机端口 |
| 108 | - param.put("port", 0); | |
| 108 | + if (port == null) { | |
| 109 | + param.put("port", 0); | |
| 110 | + }else { | |
| 111 | + param.put("port", port); | |
| 112 | + } | |
| 109 | 113 | param.put("ssrc", ssrc); |
| 110 | 114 | JSONObject openRtpServerResultJson = zlmresTfulUtils.openRtpServer(mediaServerItem, param); |
| 111 | 115 | ... | ... |
src/main/java/com/genersoft/iot/vmp/service/IMediaServerService.java
| ... | ... | @@ -48,6 +48,8 @@ public interface IMediaServerService { |
| 48 | 48 | |
| 49 | 49 | SSRCInfo openRTPServer(MediaServerItem mediaServerItem, String streamId, String ssrc, boolean ssrcCheck, boolean isPlayback); |
| 50 | 50 | |
| 51 | + SSRCInfo openRTPServer(MediaServerItem mediaServerItem, String streamId, String ssrc, boolean ssrcCheck, boolean isPlayback, Integer port); | |
| 52 | + | |
| 51 | 53 | void closeRTPServer(String deviceId, String channelId, String ssrc); |
| 52 | 54 | |
| 53 | 55 | void clearRTPServer(MediaServerItem mediaServerItem); | ... | ... |
src/main/java/com/genersoft/iot/vmp/service/impl/MediaServerServiceImpl.java
| ... | ... | @@ -121,7 +121,7 @@ public class MediaServerServiceImpl implements IMediaServerService { |
| 121 | 121 | } |
| 122 | 122 | |
| 123 | 123 | @Override |
| 124 | - public SSRCInfo openRTPServer(MediaServerItem mediaServerItem, String streamId, String presetSsrc, boolean ssrcCheck, boolean isPlayback) { | |
| 124 | + public SSRCInfo openRTPServer(MediaServerItem mediaServerItem, String streamId, String presetSsrc, boolean ssrcCheck, boolean isPlayback, Integer port) { | |
| 125 | 125 | if (mediaServerItem == null || mediaServerItem.getId() == null) { |
| 126 | 126 | return null; |
| 127 | 127 | } |
| ... | ... | @@ -149,7 +149,7 @@ public class MediaServerServiceImpl implements IMediaServerService { |
| 149 | 149 | } |
| 150 | 150 | int rtpServerPort = mediaServerItem.getRtpProxyPort(); |
| 151 | 151 | if (mediaServerItem.isRtpEnable()) { |
| 152 | - rtpServerPort = zlmrtpServerFactory.createRTPServer(mediaServerItem, streamId, ssrcCheck?Integer.parseInt(ssrc):0); | |
| 152 | + rtpServerPort = zlmrtpServerFactory.createRTPServer(mediaServerItem, streamId, ssrcCheck?Integer.parseInt(ssrc):0, port); | |
| 153 | 153 | } |
| 154 | 154 | redisUtil.set(key, mediaServerItem); |
| 155 | 155 | return new SSRCInfo(rtpServerPort, ssrc, streamId); |
| ... | ... | @@ -157,6 +157,11 @@ public class MediaServerServiceImpl implements IMediaServerService { |
| 157 | 157 | } |
| 158 | 158 | |
| 159 | 159 | @Override |
| 160 | + public SSRCInfo openRTPServer(MediaServerItem mediaServerItem, String streamId, String ssrc, boolean ssrcCheck, boolean isPlayback) { | |
| 161 | + return openRTPServer(mediaServerItem, streamId, ssrc, ssrcCheck, isPlayback, null); | |
| 162 | + } | |
| 163 | + | |
| 164 | + @Override | |
| 160 | 165 | public void closeRTPServer(String deviceId, String channelId, String stream) { |
| 161 | 166 | String mediaServerId = streamSession.getMediaServerId(deviceId, channelId, stream); |
| 162 | 167 | String ssrc = streamSession.getSSRC(deviceId, channelId, stream); | ... | ... |
src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java
| ... | ... | @@ -323,7 +323,7 @@ public class PlayServiceImpl implements IPlayService { |
| 323 | 323 | // 关闭rtp server |
| 324 | 324 | mediaServerService.closeRTPServer(device.getDeviceId(), channelId, finalSsrcInfo.getStream()); |
| 325 | 325 | // 重新开启ssrc server |
| 326 | - mediaServerService.openRTPServer(mediaServerItem, finalSsrcInfo.getStream(), ssrcInResponse, device.isSsrcCheck(), false); | |
| 326 | + mediaServerService.openRTPServer(mediaServerItem, finalSsrcInfo.getStream(), ssrcInResponse, device.isSsrcCheck(), false, finalSsrcInfo.getPort()); | |
| 327 | 327 | |
| 328 | 328 | } |
| 329 | 329 | } | ... | ... |
src/main/java/com/genersoft/iot/vmp/service/impl/RedisStreamMsgListener.java
| ... | ... | @@ -46,7 +46,7 @@ public class RedisStreamMsgListener implements MessageListener { |
| 46 | 46 | |
| 47 | 47 | JSONObject steamMsgJson = JSON.parseObject(message.getBody(), JSONObject.class); |
| 48 | 48 | if (steamMsgJson == null) { |
| 49 | - logger.warn("[收到 redis 流变化]消息解析失败"); | |
| 49 | + logger.warn("[收到redis 流变化]消息解析失败"); | |
| 50 | 50 | return; |
| 51 | 51 | } |
| 52 | 52 | String serverId = steamMsgJson.getString("serverId"); |
| ... | ... | @@ -55,7 +55,7 @@ public class RedisStreamMsgListener implements MessageListener { |
| 55 | 55 | // 自己发送的消息忽略即可 |
| 56 | 56 | return; |
| 57 | 57 | } |
| 58 | - logger.info("[收到 redis 流变化]: {}", new String(message.getBody())); | |
| 58 | + logger.info("[收到redis 流变化]: {}", new String(message.getBody())); | |
| 59 | 59 | String app = steamMsgJson.getString("app"); |
| 60 | 60 | String stream = steamMsgJson.getString("stream"); |
| 61 | 61 | boolean register = steamMsgJson.getBoolean("register"); | ... | ... |