panlinlin
2021-05-08 e48fa711a3664bece9b3e58840a75fe7c05bc47c
src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java
@@ -6,7 +6,7 @@
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.gb28181.bean.Device;
import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
import com.genersoft.iot.vmp.storager.IVideoManagerStorager;
@@ -53,23 +53,20 @@
   @Autowired
   private IRedisCatchStorage redisCatchStorage;
   @Autowired
   private ZLMServerManger zlmServerManger;
    @Autowired
    private ZLMMediaListManager zlmMediaListManager;
   @Autowired
   private ZLMHttpHookSubscribe subscribe;
   @Value("${media.autoApplyPlay}")
   @Value("${userSettings.autoApplyPlay}")
   private boolean autoApplyPlay;
   @Value("${media.ip}")
   private String mediaIp;
   @Value("${media.wanIp}")
   private String mediaWanIp;
   @Value("${media.port}")
   private int mediaPort;
   @Autowired
   private MediaConfig mediaConfig;
   /**
    * 流量统计事件,播放器或推流器断开时并且耗用流量超过特定阈值时会触发此事件,阈值通过配置文件general.flowThreshold配置;此事件对回复不敏感。
@@ -251,10 +248,9 @@
      JSONArray tracks = json.getJSONArray("tracks");
      boolean regist = json.getBoolean("regist");
      if (tracks != null) {
         System.out.println("222222" + schema);
         logger.info("[stream: " + streamId + "] on_stream_changed->>" + schema);
      }
      if ("rtmp".equals(schema)){
         if ("rtp".equals(app) && !regist ) {
            StreamInfo streamInfo = redisCatchStorage.queryPlayByStreamId(streamId);
            if (streamInfo!=null){
@@ -295,25 +291,26 @@
      
      String streamId = json.getString("stream");
      String app = json.getString("app");
      StreamInfo streamInfo = redisCatchStorage.queryPlayByStreamId(streamId);
      if ("rtp".equals(app)){
         JSONObject ret = new JSONObject();
         ret.put("code", 0);
         ret.put("close", true);
         if (streamInfo != null) {
            if (redisCatchStorage.isChannelSendingRTP(streamInfo.getChannelId())) {
         StreamInfo streamInfoForPlayCatch = redisCatchStorage.queryPlayByStreamId(streamId);
         if (streamInfoForPlayCatch != null) {
            if (redisCatchStorage.isChannelSendingRTP(streamInfoForPlayCatch.getChannelId())) {
               ret.put("close", false);
            } else {
               cmder.streamByeCmd(streamInfo.getDeviceID(), streamInfo.getChannelId());
               redisCatchStorage.stopPlay(streamInfo);
               storager.stopPlay(streamInfo.getDeviceID(), streamInfo.getChannelId());
               cmder.streamByeCmd(streamInfoForPlayCatch.getDeviceID(), streamInfoForPlayCatch.getChannelId());
               redisCatchStorage.stopPlay(streamInfoForPlayCatch);
               storager.stopPlay(streamInfoForPlayCatch.getDeviceID(), streamInfoForPlayCatch.getChannelId());
            }
         }else{
            cmder.streamByeCmd(streamInfo.getDeviceID(), streamInfo.getChannelId());
            streamInfo = redisCatchStorage.queryPlaybackByStreamId(streamId);
            redisCatchStorage.stopPlayback(streamInfo);
            StreamInfo streamInfoForPlayBackCatch = redisCatchStorage.queryPlaybackByStreamId(streamId);
            if (streamInfoForPlayBackCatch != null) {
               cmder.streamByeCmd(streamInfoForPlayBackCatch.getDeviceID(), streamInfoForPlayBackCatch.getChannelId());
               redisCatchStorage.stopPlayback(streamInfoForPlayBackCatch);
            }
         }
         return new ResponseEntity<String>(ret.toString(),HttpStatus.OK);
      }else {
@@ -388,12 +385,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();