lawrencehj
2021-06-23 0acf13445a2e3120f3d3599238401c9f2885d711
src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java
@@ -6,7 +6,8 @@
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.genersoft.iot.vmp.common.StreamInfo;
import com.genersoft.iot.vmp.conf.MediaServerConfig;
import com.genersoft.iot.vmp.conf.MediaConfig;
import com.genersoft.iot.vmp.conf.UserSetup;
import com.genersoft.iot.vmp.gb28181.bean.Device;
import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
import com.genersoft.iot.vmp.storager.IVideoManagerStorager;
@@ -14,10 +15,8 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
@@ -53,23 +52,23 @@
   @Autowired
   private IRedisCatchStorage redisCatchStorage;
   @Autowired
   private ZLMRESTfulUtils zlmresTfulUtils;
   @Autowired
   private ZLMServerManger zlmServerManger;
    @Autowired
    private ZLMMediaListManager zlmMediaListManager;
   @Autowired
   private ZLMHttpHookSubscribe subscribe;
   @Value("${media.autoApplyPlay}")
   private boolean autoApplyPlay;
   @Autowired
   private UserSetup userSetup;
   @Value("${media.ip}")
   private String mediaIp;
   @Value("${media.wanIp}")
   private String mediaWanIp;
   @Value("${media.port}")
   private int mediaPort;
   @Autowired
   private MediaConfig mediaConfig;
   /**
    * 流量统计事件,播放器或推流器断开时并且耗用流量超过特定阈值时会触发此事件,阈值通过配置文件general.flowThreshold配置;此事件对回复不敏感。
@@ -135,10 +134,8 @@
   @ResponseBody
   @PostMapping(value = "/on_publish", produces = "application/json;charset=UTF-8")
   public ResponseEntity<String> onPublish(@RequestBody JSONObject json){
      if (logger.isDebugEnabled()) {
         logger.debug("ZLM HOOK on_publish API调用,参数:" + json.toString());
      }
      logger.debug("ZLM HOOK on_publish API调用,参数:" + json.toString());
      ZLMHttpHookSubscribe.Event subscribe = this.subscribe.getSubscribe(ZLMHttpHookSubscribe.HookType.on_publish, json);
      if (subscribe != null) subscribe.response(json);
@@ -147,7 +144,7 @@
      ret.put("code", 0);
      ret.put("msg", "success");
      ret.put("enableHls", true);
      ret.put("enableMP4", false);
      ret.put("enableMP4", userSetup.isRecordPushLive());
      ret.put("enableRtxp", true);
      return new ResponseEntity<String>(ret.toString(),HttpStatus.OK);
   }
@@ -251,7 +248,7 @@
      JSONArray tracks = json.getJSONArray("tracks");
      boolean regist = json.getBoolean("regist");
      if (tracks != null) {
         System.out.println("on_stream_changed->>" + schema);
         logger.info("[stream: " + streamId + "] on_stream_changed->>" + schema);
      }
      if ("rtmp".equals(schema)){
         if ("rtp".equals(app) && !regist ) {
@@ -336,11 +333,10 @@
      if (logger.isDebugEnabled()) {
         logger.debug("ZLM HOOK on_stream_not_found API调用,参数:" + json.toString());
      }
      if (autoApplyPlay) {
      if (userSetup.isAutoApplyPlay()) {
         String app = json.getString("app");
         String streamId = json.getString("stream");
            StreamInfo streamInfo = redisCatchStorage.queryPlayByStreamId(streamId);
         if ("rtp".equals(app) && streamId.contains("gb_play") && streamInfo == null) {
         if ("rtp".equals(app) && streamId.contains("gb_play") ) {
            String[] s = streamId.split("_");
            if (s.length == 4) {
               String deviceId = s[2];
@@ -355,7 +351,6 @@
               }
            }
         }
      }
@@ -388,12 +383,8 @@
            subscribe.response(json);
         }
      }
      MediaServerConfig mediaServerConfig = JSON.toJavaObject(json, MediaServerConfig.class);
      mediaServerConfig.setWanIp(StringUtils.isEmpty(mediaWanIp)? mediaIp: mediaWanIp);
      mediaServerConfig.setLocalIP(mediaIp);
      redisCatchStorage.updateMediaInfo(mediaServerConfig);
      ZLMServerConfig ZLMServerConfig = JSON.toJavaObject(json, ZLMServerConfig.class);
      zlmServerManger.updateServerCatch(ZLMServerConfig);
      // 重新发起代理
      JSONObject ret = new JSONObject();