648540858
2022-11-18 f223aad70516049577c261d5e6cd876abed07cb4
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/AckRequestProcessor.java
@@ -1,6 +1,7 @@
package com.genersoft.iot.vmp.gb28181.transmit.event.request.impl;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.genersoft.iot.vmp.conf.DynamicTask;
import com.genersoft.iot.vmp.conf.exception.SsrcTransactionNotFoundException;
import com.genersoft.iot.vmp.gb28181.bean.*;
@@ -12,8 +13,8 @@
import com.genersoft.iot.vmp.gb28181.transmit.cmd.ISIPCommanderForPlatform;
import com.genersoft.iot.vmp.gb28181.transmit.event.request.ISIPRequestProcessor;
import com.genersoft.iot.vmp.gb28181.transmit.event.request.SIPRequestProcessorParent;
import com.genersoft.iot.vmp.media.zlm.ZlmHttpHookSubscribe;
import com.genersoft.iot.vmp.media.zlm.ZLMRTPServerFactory;
import com.genersoft.iot.vmp.media.zlm.ZlmHttpHookSubscribe;
import com.genersoft.iot.vmp.media.zlm.dto.MediaServerItem;
import com.genersoft.iot.vmp.service.IDeviceService;
import com.genersoft.iot.vmp.service.IMediaServerService;
@@ -40,7 +41,8 @@
import java.text.ParseException;
import javax.sip.header.ToHeader;
import java.text.ParseException;
import java.util.*;
import java.util.HashMap;
import java.util.Map;
/**
 * SIP命令类型: ACK请求
@@ -69,6 +71,9 @@
   @Autowired
   private ZLMRTPServerFactory zlmrtpServerFactory;
   @Autowired
   private ZlmHttpHookSubscribe hookSubscribe;
   @Autowired
   private IMediaServerService mediaServerService;
@@ -177,8 +182,18 @@
                  startSendRtpStreamHand(evt, sendRtpItem, parentPlatform, json, param, callIdHeader);
               });
            } else {
               JSONObject startSendRtpStreamResult = zlmrtpServerFactory.startSendRtpStream(mediaInfo, param);
               // 如果是非严格模式,需要关闭端口占用
               JSONObject startSendRtpStreamResult = null;
               if (sendRtpItem.getLocalPort() != 0) {
                  if (zlmrtpServerFactory.releasePort(mediaInfo, sendRtpItem.getSsrc())) {
                     startSendRtpStreamResult = zlmrtpServerFactory.startSendRtpStream(mediaInfo, param);
                  }
               }else {
                  startSendRtpStreamResult = zlmrtpServerFactory.startSendRtpStream(mediaInfo, param);
               }
               if (startSendRtpStreamResult != null) {
               startSendRtpStreamHand(evt, sendRtpItem, parentPlatform, startSendRtpStreamResult, param, callIdHeader);
               }
            }
@@ -192,7 +207,7 @@
         logger.info("调用ZLM推流接口, 结果: {}",  jsonObject);
         logger.info("RTP推流成功[ {}/{} ],{}->{}:{}, " ,param.get("app"), param.get("stream"), jsonObject.getString("local_port"), param.get("dst_url"), param.get("dst_port"));
      } else {
         logger.error("RTP推流失败: {}, 参数:{}",jsonObject.getString("msg"),JSONObject.toJSON(param));
         logger.error("RTP推流失败: {}, 参数:{}",jsonObject.getString("msg"), JSON.toJSONString(param));
         if (sendRtpItem.isOnlyAudio()) {
            // TODO 可能是语音对讲
         }else {