From afe80a7be1ad019e9c64bfc56b9775307a174828 Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期二, 18 六月 2024 10:00:32 +0800
Subject: [PATCH] 调整获取监听信息的逻辑
---
src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java | 69 +++++++++++++++++++---------------
1 files changed, 39 insertions(+), 30 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 82f9238..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娴佹敞鍐屾垨娉ㄩ攢鏃惰Е鍙戞浜嬩欢锛涙浜嬩欢瀵瑰洖澶嶄笉鏁忔劅銆�
*/
@@ -202,15 +210,21 @@
if (mediaServer == null) {
return HookResult.SUCCESS();
}
-
- if (param.isRegist()) {
- logger.info("[ZLM HOOK] 娴佹敞鍐�, {}->{}->{}/{}", param.getMediaServerId(), param.getSchema(), param.getApp(), param.getStream());
- MediaArrivalEvent mediaArrivalEvent = MediaArrivalEvent.getInstance(this, param, mediaServer);
- applicationEventPublisher.publishEvent(mediaArrivalEvent);
- } else {
- logger.info("[ZLM HOOK] 娴佹敞閿�, {}->{}->{}/{}", param.getMediaServerId(), param.getSchema(), param.getApp(), param.getStream());
- MediaDepartureEvent mediaDepartureEvent = MediaDepartureEvent.getInstance(this, param, mediaServer);
- applicationEventPublisher.publishEvent(mediaDepartureEvent);
+ if (!ObjectUtils.isEmpty(mediaServer.getTranscodeSuffix())
+ && !"null".equalsIgnoreCase(mediaServer.getTranscodeSuffix())
+ && param.getStream().endsWith(mediaServer.getTranscodeSuffix()) ) {
+ return HookResult.SUCCESS();
+ }
+ if (param.getSchema().equalsIgnoreCase("rtsp")) {
+ if (param.isRegist()) {
+ logger.info("[ZLM HOOK] 娴佹敞鍐�, {}->{}->{}/{}", param.getMediaServerId(), param.getSchema(), param.getApp(), param.getStream());
+ MediaArrivalEvent mediaArrivalEvent = MediaArrivalEvent.getInstance(this, param, mediaServer);
+ applicationEventPublisher.publishEvent(mediaArrivalEvent);
+ } else {
+ logger.info("[ZLM HOOK] 娴佹敞閿�, {}->{}->{}/{}", param.getMediaServerId(), param.getSchema(), param.getApp(), param.getStream());
+ MediaDepartureEvent mediaDepartureEvent = MediaDepartureEvent.getInstance(this, param, mediaServer);
+ applicationEventPublisher.publishEvent(mediaDepartureEvent);
+ }
}
return HookResult.SUCCESS();
@@ -225,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);
@@ -346,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