优化发流逻辑
This commit is contained in:
@@ -11,10 +11,7 @@ import com.genersoft.iot.vmp.conf.UserSetting;
|
||||
import com.genersoft.iot.vmp.conf.exception.ControllerException;
|
||||
import com.genersoft.iot.vmp.gb28181.event.EventPublisher;
|
||||
import com.genersoft.iot.vmp.gb28181.session.SSRCFactory;
|
||||
import com.genersoft.iot.vmp.media.zlm.AssistRESTfulUtils;
|
||||
import com.genersoft.iot.vmp.media.zlm.ZLMRESTfulUtils;
|
||||
import com.genersoft.iot.vmp.media.zlm.ZLMRTPServerFactory;
|
||||
import com.genersoft.iot.vmp.media.zlm.ZLMServerConfig;
|
||||
import com.genersoft.iot.vmp.media.zlm.*;
|
||||
import com.genersoft.iot.vmp.media.zlm.dto.MediaServerItem;
|
||||
import com.genersoft.iot.vmp.media.zlm.dto.ServerKeepaliveData;
|
||||
import com.genersoft.iot.vmp.service.IInviteStreamService;
|
||||
@@ -70,6 +67,9 @@ public class MediaServerServiceImpl implements IMediaServerService {
|
||||
@Autowired
|
||||
private UserSetting userSetting;
|
||||
|
||||
@Autowired
|
||||
private SendRtpPortManager sendRtpPortManager;
|
||||
|
||||
@Autowired
|
||||
private AssistRESTfulUtils assistRESTfulUtils;
|
||||
|
||||
@@ -119,13 +119,40 @@ public class MediaServerServiceImpl implements IMediaServerService {
|
||||
if (ssrcFactory.hasMediaServerSSRC(mediaServerItem.getId())) {
|
||||
ssrcFactory.initMediaServerSSRC(mediaServerItem.getId(), null);
|
||||
}
|
||||
if (userSetting.getGbSendStreamStrict()) {
|
||||
int startPort = 50000;
|
||||
int endPort = 60000;
|
||||
String sendRtpPortRange = mediaServerItem.getSendRtpPortRange();
|
||||
if (sendRtpPortRange == null) {
|
||||
logger.warn("[zlm] ] 未配置发流端口范围,默认使用50000到60000");
|
||||
}else {
|
||||
String[] sendRtpPortRangeArray = sendRtpPortRange.trim().split(",");
|
||||
if (sendRtpPortRangeArray.length != 2) {
|
||||
logger.warn("[zlm] ] 发流端口范围错误,默认使用50000到60000");
|
||||
}else {
|
||||
try {
|
||||
startPort = Integer.parseInt(sendRtpPortRangeArray[0]);
|
||||
endPort = Integer.parseInt(sendRtpPortRangeArray[1]);
|
||||
if (endPort <= startPort) {
|
||||
logger.warn("[zlm] ] 发流端口范围错误,结束端口应大于开始端口,使用默认端口");
|
||||
startPort = 50000;
|
||||
endPort = 60000;
|
||||
}
|
||||
|
||||
}catch (NumberFormatException e) {
|
||||
logger.warn("[zlm] ] 发流端口范围错误,默认使用50000到60000");
|
||||
}
|
||||
}
|
||||
}
|
||||
logger.info("[[zlm] ] 配置发流端口范围,{}-{}", startPort, endPort);
|
||||
sendRtpPortManager.initServerPort(mediaServerItem.getId(), startPort, endPort);
|
||||
}
|
||||
// 查询redis是否存在此mediaServer
|
||||
String key = VideoManagerConstants.MEDIA_SERVER_PREFIX + userSetting.getServerId() + "_" + mediaServerItem.getId();
|
||||
Boolean hasKey = redisTemplate.hasKey(key);
|
||||
if (hasKey != null && ! hasKey) {
|
||||
redisTemplate.opsForValue().set(key, mediaServerItem);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -314,9 +314,7 @@ public class RedisGbPlayMsgListener implements MessageListener {
|
||||
SendRtpItem sendRtpItem = zlmrtpServerFactory.createSendRtpItem(mediaServerItem, content.getIp(),
|
||||
content.getPort(), content.getSsrc(), content.getPlatformId(),
|
||||
content.getApp(), content.getStream(), content.getChannelId(),
|
||||
content.getTcp(), content.getRtcp(), ssrcFromCallback -> {
|
||||
return querySendRTPServer(content.getPlatformId(), content.getChannelId(), content.getStream(), null) != null;
|
||||
});
|
||||
content.getTcp(), content.getRtcp());
|
||||
|
||||
WVPResult<ResponseSendItemMsg> result = new WVPResult<>();
|
||||
result.setCode(0);
|
||||
|
||||
Reference in New Issue
Block a user