| | |
| | | |
| | | import com.alibaba.fastjson.JSONArray; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.genersoft.iot.vmp.conf.MediaConfig; |
| | | import com.genersoft.iot.vmp.gb28181.bean.SendRtpItem; |
| | | import com.genersoft.iot.vmp.gb28181.session.SsrcUtil; |
| | | import org.slf4j.Logger; |
| | |
| | | |
| | | private Logger logger = LoggerFactory.getLogger("ZLMRTPServerFactory"); |
| | | |
| | | @Value("${media.rtp.udpPortRange}") |
| | | private String udpPortRange; |
| | | @Autowired |
| | | private MediaConfig mediaConfig; |
| | | |
| | | @Autowired |
| | | private ZLMRESTfulUtils zlmresTfulUtils; |
| | | |
| | | private int[] udpPortRangeArray = new int[2]; |
| | | private int[] portRangeArray = new int[2]; |
| | | |
| | | private int currentPort = 0; |
| | | |
| | |
| | | |
| | | Map<String, Object> param = new HashMap<>(); |
| | | int result = -1; |
| | | int newPort = getPortFromUdpPortRange(); |
| | | int newPort = getPortFromportRange(); |
| | | param.put("port", newPort); |
| | | param.put("enable_tcp", 1); |
| | | param.put("stream_id", streamId); |
| | |
| | | return result; |
| | | } |
| | | |
| | | private int getPortFromUdpPortRange() { |
| | | private int getPortFromportRange() { |
| | | if (currentPort == 0) { |
| | | String[] udpPortRangeStrArray = udpPortRange.split(","); |
| | | udpPortRangeArray[0] = Integer.parseInt(udpPortRangeStrArray[0]); |
| | | udpPortRangeArray[1] = Integer.parseInt(udpPortRangeStrArray[1]); |
| | | String[] portRangeStrArray = mediaConfig.getRtpPortRange().split(","); |
| | | portRangeArray[0] = Integer.parseInt(portRangeStrArray[0]); |
| | | portRangeArray[1] = Integer.parseInt(portRangeStrArray[1]); |
| | | } |
| | | |
| | | if (currentPort == 0 || currentPort++ > udpPortRangeArray[1]) { |
| | | currentPort = udpPortRangeArray[0]; |
| | | return udpPortRangeArray[0]; |
| | | if (currentPort == 0 || currentPort++ > portRangeArray[1]) { |
| | | currentPort = portRangeArray[0]; |
| | | return portRangeArray[0]; |
| | | } else { |
| | | if (currentPort % 2 == 1) { |
| | | currentPort++; |
| | |
| | | logger.error("RTP推流失败: 请检查ZLM服务"); |
| | | } else if (jsonObject.getInteger("code") == 0) { |
| | | result= true; |
| | | logger.error("RTP推流请求成功,本地推流端口:" + jsonObject.getString("local_port")); |
| | | logger.info("RTP推流请求成功,本地推流端口:" + jsonObject.getString("local_port")); |
| | | } else { |
| | | logger.error("RTP推流失败: " + jsonObject.getString("msg")); |
| | | } |
| | |
| | | logger.error("停止RTP推流失败: 请检查ZLM服务"); |
| | | } else if (jsonObject.getInteger("code") == 0) { |
| | | result= true; |
| | | logger.error("停止RTP推流成功"); |
| | | logger.info("停止RTP推流成功"); |
| | | } else { |
| | | logger.error("停止RTP推流失败: " + jsonObject.getString("msg")); |
| | | } |
| | | return result; |
| | | } |
| | | |
| | | public void closeAllSendRtpStream() { |
| | | |
| | | } |
| | | } |