From c23932eb00edfa5f734b0d17eced838c5c7577c0 Mon Sep 17 00:00:00 2001 From: 648540858 <456PANlinlin> Date: 星期三, 17 十一月 2021 22:58:41 +0800 Subject: [PATCH] #221 --- src/main/java/com/genersoft/iot/vmp/gb28181/event/platformNotRegister/PlatformNotRegisterEventLister.java | 51 +++++++++++++++++++++++++++++++++++++-------------- 1 files changed, 37 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/event/platformNotRegister/PlatformNotRegisterEventLister.java b/src/main/java/com/genersoft/iot/vmp/gb28181/event/platformNotRegister/PlatformNotRegisterEventLister.java index a53583b..20950ca 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/event/platformNotRegister/PlatformNotRegisterEventLister.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/event/platformNotRegister/PlatformNotRegisterEventLister.java @@ -1,9 +1,13 @@ package com.genersoft.iot.vmp.gb28181.event.platformNotRegister; +import com.genersoft.iot.vmp.conf.SipConfig; import com.genersoft.iot.vmp.gb28181.bean.ParentPlatform; import com.genersoft.iot.vmp.gb28181.bean.SendRtpItem; +import com.genersoft.iot.vmp.gb28181.event.SipSubscribe; import com.genersoft.iot.vmp.gb28181.transmit.cmd.impl.SIPCommanderFroPlatform; import com.genersoft.iot.vmp.media.zlm.ZLMRTPServerFactory; +import com.genersoft.iot.vmp.media.zlm.dto.MediaServerItem; +import com.genersoft.iot.vmp.service.IMediaServerService; import com.genersoft.iot.vmp.storager.IRedisCatchStorage; import com.genersoft.iot.vmp.storager.IVideoManagerStorager; import org.slf4j.Logger; @@ -12,12 +16,10 @@ import org.springframework.context.ApplicationListener; import org.springframework.stereotype.Component; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; /** - * @Description: 骞冲彴鏈敞鍐屼簨浠�,鏉ユ簮鏈変簩: + * @description: 骞冲彴鏈敞鍐屼簨浠�,鏉ユ簮鏈変簩: * 1銆佸钩鍙版柊娣诲姞 * 2銆佸钩鍙板績璺宠秴鏃� * @author: panll @@ -32,12 +34,17 @@ private IVideoManagerStorager storager; @Autowired private IRedisCatchStorage redisCatchStorage; + @Autowired + private IMediaServerService mediaServerService; @Autowired private SIPCommanderFroPlatform sipCommanderFroPlatform; @Autowired private ZLMRTPServerFactory zlmrtpServerFactory; + + @Autowired + private SipConfig config; // @Autowired // private RedisUtil redis; @@ -59,24 +66,40 @@ logger.info("鍋滄[ {} ]鐨勬墍鏈夋帹娴�", event.getPlatformGbID()); StringBuilder app = new StringBuilder(); StringBuilder stream = new StringBuilder(); - for (int i = 0; i < sendRtpItems.size(); i++) { + for (SendRtpItem sendRtpItem : sendRtpItems) { if (app.length() != 0) { app.append(","); } - app.append(sendRtpItems.get(i).getApp()); + app.append(sendRtpItem.getApp()); if (stream.length() != 0) { stream.append(","); } - stream.append(sendRtpItems.get(i).getStreamId()); - redisCatchStorage.deleteSendRTPServer(event.getPlatformGbID(), sendRtpItems.get(i).getChannelId()); + stream.append(sendRtpItem.getStreamId()); + redisCatchStorage.deleteSendRTPServer(event.getPlatformGbID(), sendRtpItem.getChannelId()); + MediaServerItem mediaInfo = mediaServerService.getOne(sendRtpItem.getMediaServerId()); + Map<String, Object> param = new HashMap<>(); + param.put("vhost", "__defaultVhost__"); + param.put("app", app.toString()); + param.put("stream", stream.toString()); + zlmrtpServerFactory.stopSendRtpStream(mediaInfo, param); } - Map<String, Object> param = new HashMap<>(); - param.put("vhost","__defaultVhost__"); - param.put("app", app.toString()); - param.put("stream", stream.toString()); - zlmrtpServerFactory.stopSendRtpStream(param); + } - sipCommanderFroPlatform.register(parentPlatform); + + Timer timer = new Timer(); + SipSubscribe.Event okEvent = (responseEvent)->{ + timer.cancel(); + }; + logger.info("鍚戝钩鍙版敞鍐岋紝骞冲彴鍥芥爣ID锛�" + event.getPlatformGbID()); + sipCommanderFroPlatform.register(parentPlatform, null, okEvent); + // 璁剧疆娉ㄥ唽澶辫触鍒欐瘡闅�15绉掑彂璧蜂竴娆℃敞鍐� + timer.schedule(new TimerTask() { + @Override + public void run() { + logger.info("鍐嶆鍚戝钩鍙版敞鍐岋紝骞冲彴鍥芥爣ID锛�" + event.getPlatformGbID()); + sipCommanderFroPlatform.register(parentPlatform, null, okEvent); + } + }, config.getRegisterTimeInterval()* 1000, config.getRegisterTimeInterval()* 1000);//鍗佷簲绉掑悗鍐嶆鍙戣捣娉ㄥ唽 } } -- Gitblit v1.8.0