648540858
2021-11-24 0eee65bc424cbdb348052ba4ef6b91add28bc6a4
src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java
@@ -10,6 +10,7 @@
import com.genersoft.iot.vmp.gb28181.bean.Device;
import com.genersoft.iot.vmp.media.zlm.dto.MediaServerItem;
import com.genersoft.iot.vmp.service.IMediaServerService;
import com.genersoft.iot.vmp.service.IMediaService;
import com.genersoft.iot.vmp.service.bean.SSRCInfo;
import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
import com.genersoft.iot.vmp.storager.IVideoManagerStorager;
@@ -31,7 +32,7 @@
import javax.servlet.http.HttpServletRequest;
/**    
 * @Description:针对 ZLMediaServer的hook事件监听
 * @description:针对 ZLMediaServer的hook事件监听
 * @author: swwheihei
 * @date:   2020年5月8日 上午10:46:48     
 */
@@ -55,6 +56,9 @@
   @Autowired
   private IMediaServerService mediaServerService;
   @Autowired
   private IMediaService mediaService;
   @Autowired
   private ZLMRESTfulUtils zlmresTfulUtils;
@@ -295,11 +299,23 @@
            }
         }else {
            if (!"rtp".equals(app) ){
               // 发送流变化redis消息
               JSONObject jsonObject = new JSONObject();
               jsonObject.put("serverId", userSetup.getServerId());
               jsonObject.put("app", app);
               jsonObject.put("stream", streamId);
               jsonObject.put("register", regist);
               jsonObject.put("mediaServerId", mediaServerId);
               redisCatchStorage.sendStreamChangeMsg(jsonObject);
               MediaServerItem mediaServerItem = mediaServerService.getOne(mediaServerId);
               if (regist) {
                  zlmMediaListManager.addMedia(mediaServerItem, app, streamId);
                  StreamInfo streamInfo = mediaService.getStreamInfoByAppAndStream(mediaServerItem, app, streamId, tracks);
                  redisCatchStorage.addStream(mediaServerItem, app, streamId, streamInfo);
               }else {
                  zlmMediaListManager.removeMedia( app, streamId);
                  redisCatchStorage.removeStream(mediaServerItem, app, streamId);
               }
            }
         }
@@ -326,6 +342,7 @@
      String streamId = json.getString("stream");
      String app = json.getString("app");
      // TODO 如果在给上级推流,也不停止。
      if ("rtp".equals(app)){
         JSONObject ret = new JSONObject();
         ret.put("code", 0);
@@ -376,7 +393,7 @@
         String app = json.getString("app");
         String streamId = json.getString("stream");
         if ("rtp".equals(app)) {
            String[] s = streamId.split("/");
            String[] s = streamId.split("_");
            if (s.length == 2) {
               String deviceId = s[0];
               String channelId = s[1];
@@ -386,7 +403,7 @@
                  SSRCInfo ssrcInfo;
                  String streamId2 = null;
                  if (mediaInfo.isRtpEnable()) {
                     streamId2 = String.format("%s/%s", device.getDeviceId(), channelId);
                     streamId2 = String.format("%s_%s", device.getDeviceId(), channelId);
                  }
                  ssrcInfo = mediaServerService.openRTPServer(mediaInfo, streamId2);
                  cmder.playStreamCmd(mediaInfo, ssrcInfo, device, channelId, (MediaServerItem mediaServerItemInuse, JSONObject response) -> {