Commit 381c3bdc2079ece5147cf4cee004e9071edadf7a
1 parent
2bc28422
修复国标点播下级平台,ssrc更新的时单端口错误更新rtpserver的问题
Showing
2 changed files
with
18 additions
and
30 deletions
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/InviteRequestProcessor.java
| @@ -349,7 +349,17 @@ public class InviteRequestProcessor extends SIPRequestProcessorParent implements | @@ -349,7 +349,17 @@ public class InviteRequestProcessor extends SIPRequestProcessorParent implements | ||
| 349 | }else { | 349 | }else { |
| 350 | ssrc = contentString.substring(ssrcIndex + 2, ssrcIndex + 12); | 350 | ssrc = contentString.substring(ssrcIndex + 2, ssrcIndex + 12); |
| 351 | } | 351 | } |
| 352 | - logger.info("[上级点播] 用户:{}, 通道:{}, 地址:{}:{}, ssrc:{}", username, channelId, addressStr, port, ssrc); | 352 | + String streamTypeStr = null; |
| 353 | + if (mediaTransmissionTCP) { | ||
| 354 | + if (tcpActive) { | ||
| 355 | + streamTypeStr = "TCP-ACTIVE"; | ||
| 356 | + }else { | ||
| 357 | + streamTypeStr = "TCP-PASSIVE"; | ||
| 358 | + } | ||
| 359 | + }else { | ||
| 360 | + streamTypeStr = "UDP"; | ||
| 361 | + } | ||
| 362 | + logger.info("[上级点播] 平台:{}, 通道:{}, 收流地址:{}:{},收流方式:{}, ssrc:{}", username, channelId, addressStr, port, streamTypeStr, ssrc); | ||
| 353 | SendRtpItem sendRtpItem = zlmrtpServerFactory.createSendRtpItem(mediaServerItem, addressStr, port, ssrc, requesterId, | 363 | SendRtpItem sendRtpItem = zlmrtpServerFactory.createSendRtpItem(mediaServerItem, addressStr, port, ssrc, requesterId, |
| 354 | device.getDeviceId(), channelId, mediaTransmissionTCP, platform.isRtcp()); | 364 | device.getDeviceId(), channelId, mediaTransmissionTCP, platform.isRtcp()); |
| 355 | 365 |
src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java
| @@ -326,9 +326,9 @@ public class PlayServiceImpl implements IPlayService { | @@ -326,9 +326,9 @@ public class PlayServiceImpl implements IPlayService { | ||
| 326 | logger.info("[点播消息] 收到invite 200, 发现下级自定义了ssrc: {}", ssrcInResponse); | 326 | logger.info("[点播消息] 收到invite 200, 发现下级自定义了ssrc: {}", ssrcInResponse); |
| 327 | if (!mediaServerItem.isRtpEnable() || device.isSsrcCheck()) { | 327 | if (!mediaServerItem.isRtpEnable() || device.isSsrcCheck()) { |
| 328 | logger.info("[点播消息] SSRC修正 {}->{}", ssrcInfo.getSsrc(), ssrcInResponse); | 328 | logger.info("[点播消息] SSRC修正 {}->{}", ssrcInfo.getSsrc(), ssrcInResponse); |
| 329 | - | ||
| 330 | if (!ssrcFactory.checkSsrc(mediaServerItem.getId(),ssrcInResponse)) { | 329 | if (!ssrcFactory.checkSsrc(mediaServerItem.getId(),ssrcInResponse)) { |
| 331 | // ssrc 不可用 | 330 | // ssrc 不可用 |
| 331 | + logger.info("[点播消息] SSRC修正时发现ssrc不可使用 {}->{}", ssrcInfo.getSsrc(), ssrcInResponse); | ||
| 332 | // 释放ssrc | 332 | // 释放ssrc |
| 333 | ssrcFactory.releaseSsrc(mediaServerItem.getId(), ssrcInfo.getSsrc()); | 333 | ssrcFactory.releaseSsrc(mediaServerItem.getId(), ssrcInfo.getSsrc()); |
| 334 | streamSession.remove(device.getDeviceId(), channelId, ssrcInfo.getStream()); | 334 | streamSession.remove(device.getDeviceId(), channelId, ssrcInfo.getStream()); |
| @@ -337,8 +337,7 @@ public class PlayServiceImpl implements IPlayService { | @@ -337,8 +337,7 @@ public class PlayServiceImpl implements IPlayService { | ||
| 337 | errorEvent.response(event); | 337 | errorEvent.response(event); |
| 338 | return; | 338 | return; |
| 339 | } | 339 | } |
| 340 | - | ||
| 341 | - // 单端口模式streamId也有变化,需要重新设置监听 | 340 | + // 单端口模式streamId也有变化,重新设置监听即可 |
| 342 | if (!mediaServerItem.isRtpEnable()) { | 341 | if (!mediaServerItem.isRtpEnable()) { |
| 343 | // 添加订阅 | 342 | // 添加订阅 |
| 344 | HookSubscribeForStreamChange hookSubscribe = HookSubscribeFactory.on_stream_changed("rtp", ssrcInfo.getStream(), true, "rtsp", mediaServerItem.getId()); | 343 | HookSubscribeForStreamChange hookSubscribe = HookSubscribeFactory.on_stream_changed("rtp", ssrcInfo.getStream(), true, "rtsp", mediaServerItem.getId()); |
| @@ -351,8 +350,11 @@ public class PlayServiceImpl implements IPlayService { | @@ -351,8 +350,11 @@ public class PlayServiceImpl implements IPlayService { | ||
| 351 | onPublishHandlerForPlay(mediaServerItemInUse, response, device.getDeviceId(), channelId); | 350 | onPublishHandlerForPlay(mediaServerItemInUse, response, device.getDeviceId(), channelId); |
| 352 | hookEvent.response(mediaServerItemInUse, response); | 351 | hookEvent.response(mediaServerItemInUse, response); |
| 353 | }); | 352 | }); |
| 353 | + return; | ||
| 354 | } | 354 | } |
| 355 | 355 | ||
| 356 | + | ||
| 357 | + // 更新ssrc | ||
| 356 | Boolean result = mediaServerService.updateRtpServerSSRC(mediaServerItem, ssrcInfo.getStream(), ssrcInResponse); | 358 | Boolean result = mediaServerService.updateRtpServerSSRC(mediaServerItem, ssrcInfo.getStream(), ssrcInResponse); |
| 357 | if (!result) { | 359 | if (!result) { |
| 358 | try { | 360 | try { |
| @@ -372,32 +374,8 @@ public class PlayServiceImpl implements IPlayService { | @@ -372,32 +374,8 @@ public class PlayServiceImpl implements IPlayService { | ||
| 372 | event.statusCode = 500; | 374 | event.statusCode = 500; |
| 373 | errorEvent.response(event); | 375 | errorEvent.response(event); |
| 374 | } | 376 | } |
| 375 | -// // 关闭rtp server | ||
| 376 | -// mediaServerService.closeRTPServer(mediaServerItem, ssrcInfo.getStream(), result->{ | ||
| 377 | -// if (result) { | ||
| 378 | -// // 重新开启ssrc server | ||
| 379 | -// mediaServerService.openRTPServer(mediaServerItem, ssrcInfo.getStream(), ssrcInResponse, device.isSsrcCheck(), false, ssrcInfo.getPort(), true, device.getStreamModeForParam()); | ||
| 380 | -// }else { | ||
| 381 | -// try { | ||
| 382 | -// logger.warn("[停止点播] {}/{}", device.getDeviceId(), channelId); | ||
| 383 | -// cmder.streamByeCmd(device, channelId, ssrcInfo.getStream(), null, null); | ||
| 384 | -// } catch (InvalidArgumentException | SipException | ParseException | SsrcTransactionNotFoundException e) { | ||
| 385 | -// logger.error("[命令发送失败] 停止点播, 发送BYE: {}", e.getMessage()); | ||
| 386 | -// throw new ControllerException(ErrorCode.ERROR100.getCode(), "命令发送失败: " + e.getMessage()); | ||
| 387 | -// } | ||
| 388 | -// | ||
| 389 | -// dynamicTask.stop(timeOutTaskKey); | ||
| 390 | -// // 释放ssrc | ||
| 391 | -// mediaServerService.releaseSsrc(mediaServerItem.getId(), ssrcInfo.getSsrc()); | ||
| 392 | -// | ||
| 393 | -// streamSession.remove(device.getDeviceId(), channelId, ssrcInfo.getStream()); | ||
| 394 | -// event.msg = "下级自定义了ssrc,重新设置收流信息失败"; | ||
| 395 | -// event.statusCode = 500; | ||
| 396 | -// errorEvent.response(event); | ||
| 397 | -// } | ||
| 398 | -// }); | ||
| 399 | - | ||
| 400 | - | 377 | + }else { |
| 378 | + logger.info("[点播消息] 收到invite 200, 下级自定义了ssrc, 但是当前模式无需修正"); | ||
| 401 | } | 379 | } |
| 402 | } | 380 | } |
| 403 | }, (event) -> { | 381 | }, (event) -> { |