修复重复调用open rtp server 的bug

增加对rtp server开启释放的统一管理
This commit is contained in:
648540858
2020-12-21 15:29:17 +08:00
parent 1ec6c4506a
commit bfd1628d5b
6 changed files with 38 additions and 71 deletions

View File

@@ -116,4 +116,8 @@ public class ZLMRESTfulUtils {
public JSONObject openRtpServer(Map<String, Object> param){
return sendPost("openRtpServer",param);
}
public JSONObject closeRtpServer(Map<String, Object> param) {
return sendPost("closeRtpServer",param);
}
}

View File

@@ -1,56 +0,0 @@
package com.genersoft.iot.vmp.media.zlm;
import com.alibaba.fastjson.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.Map;
@Component
public class ZLMUtils {
@Value("${media.rtp.udpPortRange}")
private String udpPortRange;
@Autowired
private ZLMRESTfulUtils zlmresTfulUtils;
private int[] udpPortRangeArray = new int[2];
private int currentPort = 0;
public int getNewRTPPort(String streamId) {
// String streamId = String.format("%08x", Integer.parseInt(ssrc)).toUpperCase();
Map<String, Object> param = new HashMap<>();
int newPort = getPortFromUdpPortRange();
param.put("port", newPort);
param.put("enable_tcp", 1);
param.put("stream_id", streamId);
JSONObject jsonObject = zlmresTfulUtils.openRtpServer(param);
if (jsonObject != null && jsonObject.getInteger("code") == 0) {
return newPort;
} else {
return getNewRTPPort(streamId);
}
}
private int getPortFromUdpPortRange() {
if (currentPort == 0) {
String[] udpPortRangeStrArray = udpPortRange.split(",");
udpPortRangeArray[0] = Integer.parseInt(udpPortRangeStrArray[0]);
udpPortRangeArray[1] = Integer.parseInt(udpPortRangeStrArray[1]);
}
if (currentPort == 0 || currentPort++ > udpPortRangeArray[1]) {
currentPort = udpPortRangeArray[0];
return udpPortRangeArray[0];
} else {
if (currentPort % 2 == 1) {
currentPort++;
}
return currentPort++;
}
}
}