From f6c48588daba63846a9e70ef10fe7af2fceab035 Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期四, 22 二月 2024 17:22:28 +0800
Subject: [PATCH] 支持支持主码流子码流切换

---
 src/main/java/com/genersoft/iot/vmp/vmanager/rtp/RtpController.java |   37 ++++++++++++++-----------------------
 1 files changed, 14 insertions(+), 23 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..085a1f0
--- a/src/main/java/com/genersoft/iot/vmp/vmanager/rtp/RtpController.java
+++ b/src/main/java/com/genersoft/iot/vmp/vmanager/rtp/RtpController.java
@@ -5,24 +5,22 @@
 import com.genersoft.iot.vmp.conf.DynamicTask;
 import com.genersoft.iot.vmp.conf.UserSetting;
 import com.genersoft.iot.vmp.conf.exception.ControllerException;
+import com.genersoft.iot.vmp.conf.security.JwtUtils;
 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;
 import com.genersoft.iot.vmp.vmanager.bean.OtherRtpSendInfo;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.security.SecurityRequirement;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import okhttp3.OkHttpClient;
 import okhttp3.Request;
@@ -38,7 +36,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 +60,10 @@
     private IMediaServerService mediaServerService;
 
     @Autowired
-    private SendRtpPortManager sendRtpPortManager;
-
-    @Autowired
     private UserSetting userSetting;
 
     @Autowired
     private DynamicTask dynamicTask;
-
 
     @Autowired
     private RedisTemplate<Object, Object> redisTemplate;
@@ -78,7 +71,7 @@
 
     @GetMapping(value = "/receive/open")
     @ResponseBody
-    @Operation(summary = "寮�鍚敹娴佸拰鑾峰彇鍙戞祦淇℃伅")
+    @Operation(summary = "寮�鍚敹娴佸拰鑾峰彇鍙戞祦淇℃伅", security = @SecurityRequirement(name = JwtUtils.HEADER))
     @Parameter(name = "isSend", description = "鏄惁鍙戦�侊紝false鏃跺彧寮�鍚敹娴侊紝 true鍚屾椂杩斿洖鎺ㄦ祦淇℃伅", required = true)
     @Parameter(name = "callId", description = "鏁翠釜杩囩▼鐨勫敮涓�鏍囪瘑锛屼负浜嗕笌鍚庣画鎺ュ彛鍏宠仈", required = true)
     @Parameter(name = "ssrc", description = "鏉ユ簮娴佺殑SSRC锛屼笉浼犲垯涓嶆牎楠屾潵婧恠src", required = false)
@@ -100,10 +93,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 +129,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 +140,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涓紝浠ュ鍚庣敤
@@ -165,7 +158,7 @@
 
     @GetMapping(value = "/receive/close")
     @ResponseBody
-    @Operation(summary = "鍏抽棴鏀舵祦")
+    @Operation(summary = "鍏抽棴鏀舵祦", security = @SecurityRequirement(name = JwtUtils.HEADER))
     @Parameter(name = "stream", description = "娴佺殑ID", required = true)
     public void closeRtpServer(String stream) {
         logger.info("[绗笁鏂规湇鍔″鎺�->鍏抽棴鏀舵祦] stream->{}", stream);
@@ -184,7 +177,7 @@
 
     @GetMapping(value = "/send/start")
     @ResponseBody
-    @Operation(summary = "鍙戦�佹祦")
+    @Operation(summary = "鍙戦�佹祦", security = @SecurityRequirement(name = JwtUtils.HEADER))
     @Parameter(name = "ssrc", description = "鍙戦�佹祦鐨凷SRC", required = true)
     @Parameter(name = "dstIpForAudio", description = "鐩爣闊抽鏀舵祦IP", required = false)
     @Parameter(name = "dstIpForVideo", description = "鐩爣瑙嗛鏀舵祦IP", required = false)
@@ -256,7 +249,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 +269,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);
@@ -362,7 +353,7 @@
 
     @GetMapping(value = "/send/stop")
     @ResponseBody
-    @Operation(summary = "鍏抽棴鍙戦�佹祦")
+    @Operation(summary = "鍏抽棴鍙戦�佹祦", security = @SecurityRequirement(name = JwtUtils.HEADER))
     @Parameter(name = "callId", description = "鏁翠釜杩囩▼鐨勫敮涓�鏍囪瘑锛屼笉浼犲垯浣跨敤闅忔満绔彛鍙戞祦", required = true)
     public void closeSendRTP(String callId) {
         logger.info("[绗笁鏂规湇鍔″鎺�->鍏抽棴鍙戦�佹祦] callId->{}", callId);

--
Gitblit v1.8.0