|
|
@@ -73,12 +73,20 @@ public class RedisPushStreamCloseResponseListener implements MessageListener {
|
|
|
MessageForPushChannel pushChannel = JSON.parseObject(message.getBody(), MessageForPushChannel.class);
|
|
|
StreamPushItem push = streamPushService.getPush(pushChannel.getApp(), pushChannel.getStream());
|
|
|
if (push != null) {
|
|
|
- if (redisCatchStorage.isChannelSendingRTP(push.getGbId())) {
|
|
|
- List<SendRtpItem> sendRtpItems = redisCatchStorage.querySendRTPServerByChnnelId(
|
|
|
- push.getGbId());
|
|
|
- if (sendRtpItems.size() > 0) {
|
|
|
- for (SendRtpItem sendRtpItem : sendRtpItems) {
|
|
|
- ParentPlatform parentPlatform = storager.queryParentPlatByServerGBId(sendRtpItem.getPlatformId());
|
|
|
+ List<SendRtpItem> sendRtpItems = redisCatchStorage.querySendRTPServerByChnnelId(
|
|
|
+ push.getGbId());
|
|
|
+ if (!sendRtpItems.isEmpty()) {
|
|
|
+ for (SendRtpItem sendRtpItem : sendRtpItems) {
|
|
|
+ ParentPlatform parentPlatform = storager.queryParentPlatByServerGBId(sendRtpItem.getPlatformId());
|
|
|
+ if (parentPlatform != null) {
|
|
|
+ redisCatchStorage.deleteSendRTPServer(sendRtpItem.getPlatformId(), sendRtpItem.getChannelId(), sendRtpItem.getCallId(), sendRtpItem.getStreamId());
|
|
|
+ try {
|
|
|
+ commanderFroPlatform.streamByeCmd(parentPlatform, sendRtpItem);
|
|
|
+ } catch (SipException | InvalidArgumentException | ParseException e) {
|
|
|
+ logger.error("[命令发送失败] 国标级联 发送BYE: {}", e.getMessage());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (push.isSelf()) {
|
|
|
// 停止向上级推流
|
|
|
String streamId = sendRtpItem.getStreamId();
|
|
|
Map<String, Object> param = new HashMap<>();
|
|
|
@@ -90,12 +98,6 @@ public class RedisPushStreamCloseResponseListener implements MessageListener {
|
|
|
MediaServerItem mediaInfo = mediaServerService.getOne(sendRtpItem.getMediaServerId());
|
|
|
redisCatchStorage.deleteSendRTPServer(sendRtpItem.getPlatformId(), sendRtpItem.getChannelId(), sendRtpItem.getCallId(), sendRtpItem.getStreamId());
|
|
|
zlmServerFactory.stopSendRtpStream(mediaInfo, param);
|
|
|
-
|
|
|
- try {
|
|
|
- commanderFroPlatform.streamByeCmd(parentPlatform, sendRtpItem);
|
|
|
- } catch (SipException | InvalidArgumentException | ParseException e) {
|
|
|
- logger.error("[命令发送失败] 国标级联 发送BYE: {}", e.getMessage());
|
|
|
- }
|
|
|
if (InviteStreamType.PUSH == sendRtpItem.getPlayType()) {
|
|
|
MessageForPushChannel messageForPushChannel = MessageForPushChannel.getInstance(0,
|
|
|
sendRtpItem.getApp(), sendRtpItem.getStreamId(), sendRtpItem.getChannelId(),
|