diff --git a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRESTfulUtils.java b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRESTfulUtils.java index e4bcd31a..c5e01d89 100644 --- a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRESTfulUtils.java +++ b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRESTfulUtils.java @@ -238,6 +238,10 @@ public class ZLMRESTfulUtils { return sendPost(mediaServerItem, "stopSendRtp",param, null); } + public JSONObject restartServer(MediaServerItem mediaServerItem) { + return sendPost(mediaServerItem, "restartServer",null, null); + } + public JSONObject addStreamProxy(MediaServerItem mediaServerItem, String app, String stream, String url, boolean enable_hls, boolean enable_mp4, String rtp_type) { Map param = new HashMap<>(); param.put("vhost", "__defaultVhost__"); diff --git a/src/main/java/com/genersoft/iot/vmp/service/IMediaServerService.java b/src/main/java/com/genersoft/iot/vmp/service/IMediaServerService.java index fcba07f8..56ffbf0a 100644 --- a/src/main/java/com/genersoft/iot/vmp/service/IMediaServerService.java +++ b/src/main/java/com/genersoft/iot/vmp/service/IMediaServerService.java @@ -40,7 +40,7 @@ public interface IMediaServerService { MediaServerItem getMediaServerForMinimumLoad(); - void setZLMConfig(MediaServerItem mediaServerItem); + void setZLMConfig(MediaServerItem mediaServerItem, boolean restart); SSRCInfo openRTPServer(MediaServerItem mediaServerItem, String streamId); 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 5b170681..cd5f8ab0 100644 --- a/src/main/java/com/genersoft/iot/vmp/service/impl/MediaServerServiceImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/service/impl/MediaServerServiceImpl.java @@ -373,7 +373,7 @@ public class MediaServerServiceImpl implements IMediaServerService, CommandLineR redisUtil.set(key, serverItem); resetOnlineServerItem(serverItem); updateMediaServerKeepalive(serverItem.getId(), null); - setZLMConfig(serverItem); + setZLMConfig(serverItem, "0".equals(zlmServerConfig.getHookEnable())); publisher.zlmOnlineEventPublish(serverItem.getId()); } @@ -448,9 +448,10 @@ public class MediaServerServiceImpl implements IMediaServerService, CommandLineR /** * 对zlm服务器进行基础配置 * @param mediaServerItem 服务ID + * @param restart 是否重启zlm */ @Override - public void setZLMConfig(MediaServerItem mediaServerItem) { + public void setZLMConfig(MediaServerItem mediaServerItem, boolean restart) { logger.info("[ ZLM:{} ]-[ {}:{} ]设置zlm", mediaServerItem.getId(), mediaServerItem.getIp(), mediaServerItem.getHttpPort()); String protocol = sslEnabled ? "https" : "http"; @@ -483,12 +484,22 @@ public class MediaServerServiceImpl implements IMediaServerService, CommandLineR JSONObject responseJSON = zlmresTfulUtils.setServerConfig(mediaServerItem, param); if (responseJSON != null && responseJSON.getInteger("code") == 0) { - logger.info("[ ZLM:{} ]-[ {}:{} ]设置zlm成功", - mediaServerItem.getId(), mediaServerItem.getIp(), mediaServerItem.getHttpPort()); + if (restart) { + logger.info("[ ZLM:{} ]-[ {}:{} ]设置zlm成功, 开始重启以保证配置生效", + mediaServerItem.getId(), mediaServerItem.getIp(), mediaServerItem.getHttpPort()); + zlmresTfulUtils.restartServer(mediaServerItem); + }else { + logger.info("[ ZLM:{} ]-[ {}:{} ]设置zlm成功", + mediaServerItem.getId(), mediaServerItem.getIp(), mediaServerItem.getHttpPort()); + } + + }else { logger.info("[ ZLM:{} ]-[ {}:{} ]设置zlm失败", mediaServerItem.getId(), mediaServerItem.getIp(), mediaServerItem.getHttpPort()); } + + }