Browse Source

添加首次设置zlm时重启zlm以保证心跳正常。

648540858 3 years ago
parent
commit
01519c2574

+ 4 - 0
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<String, Object> param = new HashMap<>();
         param.put("vhost", "__defaultVhost__");

+ 1 - 1
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);
 

+ 15 - 4
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());
         }
+
+
     }