From 613399cc6d14cfe5b8a245d462629ecee5deb2db Mon Sep 17 00:00:00 2001
From: xiaoQQya <xiaoQQya@126.com>
Date: 星期二, 17 十月 2023 17:49:31 +0800
Subject: [PATCH] fix(play): 修复单端口推流下级自定义 ssrc 时, 流注册后接口仍然超时的问题
---
src/main/java/com/genersoft/iot/vmp/vmanager/rtp/RtpController.java | 27 ++++++++-------------------
1 files changed, 8 insertions(+), 19 deletions(-)
diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/rtp/RtpController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/rtp/RtpController.java
old mode 100644
new mode 100755
index c4c1df9..a579c48
--- a/src/main/java/com/genersoft/iot/vmp/vmanager/rtp/RtpController.java
+++ b/src/main/java/com/genersoft/iot/vmp/vmanager/rtp/RtpController.java
@@ -7,16 +7,12 @@
import com.genersoft.iot.vmp.conf.exception.ControllerException;
import com.genersoft.iot.vmp.media.zlm.SendRtpPortManager;
import com.genersoft.iot.vmp.media.zlm.ZLMServerFactory;
-import com.genersoft.iot.vmp.media.zlm.SendRtpPortManager;
-import com.genersoft.iot.vmp.media.zlm.ZLMRTPServerFactory;
import com.genersoft.iot.vmp.media.zlm.ZlmHttpHookSubscribe;
import com.genersoft.iot.vmp.media.zlm.dto.HookSubscribeFactory;
import com.genersoft.iot.vmp.media.zlm.dto.HookSubscribeForRtpServerTimeout;
import com.genersoft.iot.vmp.media.zlm.dto.HookSubscribeForStreamChange;
import com.genersoft.iot.vmp.media.zlm.dto.MediaServerItem;
import com.genersoft.iot.vmp.media.zlm.dto.hook.OnRtpServerTimeoutHookParam;
-import com.genersoft.iot.vmp.service.IDeviceChannelService;
-import com.genersoft.iot.vmp.service.IDeviceService;
import com.genersoft.iot.vmp.service.IMediaServerService;
import com.genersoft.iot.vmp.utils.redis.RedisUtil;
import com.genersoft.iot.vmp.vmanager.bean.ErrorCode;
@@ -38,7 +34,6 @@
import java.util.List;
import java.util.Map;
import java.util.UUID;
-import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeUnit;
@SuppressWarnings("rawtypes")
@@ -63,14 +58,10 @@
private IMediaServerService mediaServerService;
@Autowired
- private SendRtpPortManager sendRtpPortManager;
-
- @Autowired
private UserSetting userSetting;
@Autowired
private DynamicTask dynamicTask;
-
@Autowired
private RedisTemplate<Object, Object> redisTemplate;
@@ -100,10 +91,10 @@
if (isSend != null && isSend && callId == null) {
throw new ControllerException(ErrorCode.ERROR100.getCode(),"isSend涓簍rue鏃讹紝CallID涓嶈兘涓虹┖");
}
- int ssrcInt = 0;
+ long ssrcInt = 0;
if (ssrc != null) {
try {
- ssrcInt = Integer.parseInt(ssrc);
+ ssrcInt = Long.parseLong(ssrc);
}catch (NumberFormatException e) {
throw new ControllerException(ErrorCode.ERROR100.getCode(),"ssrc鏍煎紡閿欒");
}
@@ -136,7 +127,7 @@
}
});
}
- String key = VideoManagerConstants.WVP_OTHER_SEND_RTP_INFO + userSetting.getServerId() + callId;
+ String key = VideoManagerConstants.WVP_OTHER_SEND_RTP_INFO + userSetting.getServerId() + "_" + callId;
OtherRtpSendInfo otherRtpSendInfo = new OtherRtpSendInfo();
otherRtpSendInfo.setReceiveIp(mediaServerItem.getSdpIp());
otherRtpSendInfo.setReceivePortForVideo(localPortForVideo);
@@ -147,15 +138,15 @@
// 灏嗕俊鎭啓鍏edis涓紝浠ュ鍚庣敤
redisTemplate.opsForValue().set(receiveKey, otherRtpSendInfo);
if (isSend != null && isSend) {
- String key = VideoManagerConstants.WVP_OTHER_SEND_RTP_INFO + userSetting.getServerId() + "_" + callId;
// 棰勫垱寤哄彂娴佷俊鎭�
- int portForVideo = sendRtpPortManager.getNextPort(mediaServerItem.getId());
- int portForAudio = sendRtpPortManager.getNextPort(mediaServerItem.getId());
- // 灏嗕俊鎭啓鍏edis涓紝浠ュ鍚庣敤
- redisTemplate.opsForValue().set(key, otherRtpSendInfo, 300, TimeUnit.SECONDS);
+ int portForVideo = sendRtpPortManager.getNextPort(mediaServerItem);
+ int portForAudio = sendRtpPortManager.getNextPort(mediaServerItem);
+
otherRtpSendInfo.setSendLocalIp(mediaServerItem.getSdpIp());
otherRtpSendInfo.setSendLocalPortForVideo(portForVideo);
otherRtpSendInfo.setSendLocalPortForAudio(portForAudio);
+ // 灏嗕俊鎭啓鍏edis涓紝浠ュ鍚庣敤
+ redisTemplate.opsForValue().set(key, otherRtpSendInfo, 300, TimeUnit.SECONDS);
logger.info("[绗笁鏂规湇鍔″鎺�->寮�鍚敹娴佸拰鑾峰彇鍙戞祦淇℃伅] 缁撴灉锛宑allId->{}锛� {}", callId, otherRtpSendInfo);
}
// 灏嗕俊鎭啓鍏edis涓紝浠ュ鍚庣敤
@@ -256,7 +247,6 @@
String is_Udp = isUdp ? "1" : "0";
paramForAudio.put("is_udp", is_Udp);
paramForAudio.put("src_port", sendInfo.getSendLocalPortForAudio());
- paramForAudio.put("use_ps", "0");
paramForAudio.put("only_audio", "1");
if (ptForAudio != null) {
paramForAudio.put("pt", ptForAudio);
@@ -277,7 +267,6 @@
String is_Udp = isUdp ? "1" : "0";
paramForVideo.put("is_udp", is_Udp);
paramForVideo.put("src_port", sendInfo.getSendLocalPortForVideo());
- paramForVideo.put("use_ps", "0");
paramForVideo.put("only_audio", "0");
if (ptForVideo != null) {
paramForVideo.put("pt", ptForVideo);
--
Gitblit v1.8.0