From aa56bb3c26201df2af46db0c2af4afd5345a6ba9 Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期五, 14 六月 2024 09:47:19 +0800
Subject: [PATCH] 优化docker内ip变化的情况
---
src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java | 50 +++++++++++++++++++++++++++++---------------------
1 files changed, 29 insertions(+), 21 deletions(-)
diff --git a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java
index bfe54a2..636b4bf 100755
--- a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java
+++ b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java
@@ -24,6 +24,7 @@
import com.genersoft.iot.vmp.service.redisMsg.IRedisRpcService;
import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
import com.genersoft.iot.vmp.storager.IVideoManagerStorage;
+import com.genersoft.iot.vmp.utils.MediaServerUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -35,7 +36,6 @@
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
-import java.util.HashMap;
import java.util.Map;
/**
@@ -149,7 +149,7 @@
@PostMapping(value = "/on_play", produces = "application/json;charset=UTF-8")
public HookResult onPlay(@RequestBody OnPlayHookParam param) {
- Map<String, String> paramMap = urlParamToMap(param.getParams());
+ Map<String, String> paramMap = MediaServerUtils.urlParamToMap(param.getParams());
// 瀵逛簬鎾斁娴佽繘琛岄壌鏉�
boolean authenticateResult = mediaService.authenticatePlay(param.getApp(), param.getStream(), paramMap.get("callId"));
if (!authenticateResult) {
@@ -190,7 +190,15 @@
}
}
-
+ /**
+ * rtsp/rtmp娴佹敞鍐屾垨娉ㄩ攢鏃惰Е鍙戞浜嬩欢锛涙浜嬩欢瀵瑰洖澶嶄笉鏁忔劅銆�
+ */
+// @ResponseBody
+// @PostMapping(value = "/on_stream_changed", produces = "application/json;charset=UTF-8")
+// public HookResult onStreamChanged(@RequestBody JSONObject param) {
+// System.out.println(11);
+// return HookResult.SUCCESS();
+// }
/**
* rtsp/rtmp娴佹敞鍐屾垨娉ㄩ攢鏃惰Е鍙戞浜嬩欢锛涙浜嬩欢瀵瑰洖澶嶄笉鏁忔劅銆�
*/
@@ -200,6 +208,11 @@
MediaServer mediaServer = mediaServerService.getOne(param.getMediaServerId());
if (mediaServer == null) {
+ return HookResult.SUCCESS();
+ }
+ if (!ObjectUtils.isEmpty(mediaServer.getTranscodeSuffix())
+ && !"null".equalsIgnoreCase(mediaServer.getTranscodeSuffix())
+ && param.getStream().endsWith(mediaServer.getTranscodeSuffix()) ) {
return HookResult.SUCCESS();
}
if (param.getSchema().equalsIgnoreCase("rtsp")) {
@@ -226,6 +239,19 @@
logger.info("[ZLM HOOK]娴佹棤浜鸿鐪嬶細{}->{}->{}/{}", param.getMediaServerId(), param.getSchema(),
param.getApp(), param.getStream());
+
+ MediaServer mediaInfo = mediaServerService.getOne(param.getMediaServerId());
+ if (mediaInfo == null) {
+ JSONObject ret = new JSONObject();
+ ret.put("code", 0);
+ return ret;
+ }
+ if (!ObjectUtils.isEmpty(mediaInfo.getTranscodeSuffix())
+ && !"null".equalsIgnoreCase(mediaInfo.getTranscodeSuffix())
+ && param.getStream().endsWith(mediaInfo.getTranscodeSuffix()) ) {
+ param.setStream(param.getStream().substring(0, param.getStream().lastIndexOf(mediaInfo.getTranscodeSuffix()) -1 ));
+ }
+
JSONObject ret = new JSONObject();
boolean close = mediaService.closeStreamOnNoneReader(param.getMediaServerId(), param.getApp(), param.getStream(), param.getSchema());
ret.put("code", 0);
@@ -347,23 +373,5 @@
}
return HookResult.SUCCESS();
- }
-
- private Map<String, String> urlParamToMap(String params) {
- HashMap<String, String> map = new HashMap<>();
- if (ObjectUtils.isEmpty(params)) {
- return map;
- }
- String[] paramsArray = params.split("&");
- if (paramsArray.length == 0) {
- return map;
- }
- for (String param : paramsArray) {
- String[] paramArray = param.split("=");
- if (paramArray.length == 2) {
- map.put(paramArray[0], paramArray[1]);
- }
- }
- return map;
}
}
--
Gitblit v1.8.0