From a01d4fa74e178f7d17c7f123879a1e125370a93d Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期三, 07 八月 2024 10:49:35 +0800
Subject: [PATCH] 修复前端文件编译错误
---
src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java | 151 ++++++++++++++++++++++++++++----------------------
1 files changed, 84 insertions(+), 67 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 fc12859..5698238 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
@@ -10,19 +10,21 @@
import com.genersoft.iot.vmp.gb28181.transmit.callback.DeferredResultHolder;
import com.genersoft.iot.vmp.gb28181.transmit.cmd.ISIPCommanderForPlatform;
import com.genersoft.iot.vmp.gb28181.transmit.cmd.impl.SIPCommander;
+import com.genersoft.iot.vmp.media.bean.MediaServer;
import com.genersoft.iot.vmp.media.bean.ResultForOnPublish;
-import com.genersoft.iot.vmp.media.event.*;
import com.genersoft.iot.vmp.media.event.hook.HookSubscribe;
-import com.genersoft.iot.vmp.media.event.hook.HookType;
+import com.genersoft.iot.vmp.media.event.media.*;
+import com.genersoft.iot.vmp.media.event.mediaServer.MediaSendRtpStoppedEvent;
import com.genersoft.iot.vmp.media.service.IMediaServerService;
-import com.genersoft.iot.vmp.media.zlm.dto.MediaServer;
import com.genersoft.iot.vmp.media.zlm.dto.ZLMServerConfig;
import com.genersoft.iot.vmp.media.zlm.dto.hook.*;
import com.genersoft.iot.vmp.media.zlm.event.HookZlmServerKeepaliveEvent;
import com.genersoft.iot.vmp.media.zlm.event.HookZlmServerStartEvent;
import com.genersoft.iot.vmp.service.*;
+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;
@@ -34,8 +36,9 @@
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
+import java.net.MalformedURLException;
+import java.net.URL;
import java.util.HashMap;
-import java.util.List;
import java.util.Map;
/**
@@ -67,6 +70,10 @@
@Autowired
private IRedisCatchStorage redisCatchStorage;
+
+ @Autowired
+ private IRedisRpcService redisRpcService;
+
@Autowired
private IInviteStreamService inviteStreamService;
@@ -87,9 +94,6 @@
@Autowired
private EventPublisher eventPublisher;
-
- @Autowired
- private ZLMMediaListManager zlmMediaListManager;
@Autowired
private HookSubscribe subscribe;
@@ -119,6 +123,9 @@
@Autowired
private ApplicationEventPublisher applicationEventPublisher;
+ @Autowired
+ private IStreamPushService streamPushService;
+
/**
* 鏈嶅姟鍣ㄥ畾鏃朵笂鎶ユ椂闂达紝涓婃姤闂撮殧鍙厤缃紝榛樿10s涓婃姤涓�娆�
*/
@@ -144,16 +151,15 @@
@ResponseBody
@PostMapping(value = "/on_play", produces = "application/json;charset=UTF-8")
public HookResult onPlay(@RequestBody OnPlayHookParam param) {
- if (logger.isDebugEnabled()) {
- logger.debug("[ZLM HOOK] 鎾斁閴存潈锛歿}->{}", param.getMediaServerId(), 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) {
+ logger.info("[ZLM HOOK] 鎾斁閴存潈 澶辫触锛歿}->{}", param.getMediaServerId(), param);
return new HookResult(401, "Unauthorized");
}
-
+ logger.info("[ZLM HOOK] 鎾斁閴存潈鎴愬姛锛歿}->{}", param.getMediaServerId(), param);
return HookResult.SUCCESS();
}
@@ -172,15 +178,8 @@
String mediaServerId = json.getString("mediaServerId");
MediaServer mediaServer = mediaServerService.getOne(mediaServerId);
if (mediaServer == null) {
- return new HookResultForOnPublish(200, "success");
+ return new HookResultForOnPublish(0, "success");
}
-
- taskExecutor.execute(() -> {
- HookSubscribe.Event subscribe = this.subscribe.sendNotify(HookType.on_publish, json);
- if (subscribe != null) {
- subscribe.response(mediaServer, param);
- }
- });
ResultForOnPublish resultForOnPublish = mediaService.authenticatePublish(mediaServer, param.getApp(), param.getStream(), param.getParams());
if (resultForOnPublish != null) {
@@ -194,7 +193,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娴佹敞鍐屾垨娉ㄩ攢鏃惰Е鍙戞浜嬩欢锛涙浜嬩欢瀵瑰洖澶嶄笉鏁忔劅銆�
*/
@@ -203,16 +210,38 @@
public HookResult onStreamChanged(@RequestBody OnStreamChangedHookParam param) {
MediaServer mediaServer = mediaServerService.getOne(param.getMediaServerId());
-
- 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 mediaArrivalEvent = MediaDepartureEvent.getInstance(this, param, mediaServer);
- applicationEventPublisher.publishEvent(mediaArrivalEvent);
+ 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")) {
+ if (param.isRegist()) {
+ logger.info("[ZLM HOOK] 娴佹敞鍐�, {}->{}->{}/{}", param.getMediaServerId(), param.getSchema(), param.getApp(), param.getStream());
+ String queryParams = param.getParams();
+ if (queryParams == null) {
+ try {
+ URL url = new URL("http" + param.getOriginUrl().substring(4));
+ queryParams = url.getQuery();
+ }catch (MalformedURLException ignored) {}
+ }
+ if (queryParams != null) {
+ param.setParamMap(MediaServerUtils.urlParamToMap(queryParams));
+ }else {
+ param.setParamMap(new HashMap<>());
+ }
+ 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,10 +254,23 @@
logger.info("[ZLM HOOK]娴佹棤浜鸿鐪嬶細{}->{}->{}/{}", param.getMediaServerId(), param.getSchema(),
param.getApp(), param.getStream());
- JSONObject ret = new JSONObject();
+ 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", close);
+ ret.put("code", 0);
+ ret.put("close", close);
return ret;
}
@@ -316,19 +358,12 @@
MediaServer mediaServerItem = mediaServerService.getOne(param.getMediaServerId());
if (mediaServerItem != null) {
event.setMediaServer(mediaServerItem);
+ event.setApp("rtp");
applicationEventPublisher.publishEvent(event);
}
}catch (Exception e) {
logger.info("[ZLM-HOOK-rtpServer鏀舵祦瓒呮椂] 鍙戦�侀�氱煡澶辫触 ", e);
}
- taskExecutor.execute(() -> {
- List<HookSubscribe.Event> subscribes = this.subscribe.getSubscribes(HookType.on_rtp_server_timeout);
- if (subscribes != null && !subscribes.isEmpty()) {
- for (HookSubscribe.Event subscribe : subscribes) {
- subscribe.response(null, param);
- }
- }
- });
return HookResult.SUCCESS();
}
@@ -341,35 +376,17 @@
public HookResult onRecordMp4(HttpServletRequest request, @RequestBody OnRecordMp4HookParam param) {
logger.info("[ZLM HOOK] 褰曞儚瀹屾垚浜嬩欢锛歿}->{}", param.getMediaServerId(), param.getFile_path());
- taskExecutor.execute(() -> {
- List<HookSubscribe.Event> subscribes = this.subscribe.getSubscribes(HookType.on_record_mp4);
- if (subscribes != null && !subscribes.isEmpty()) {
- for (HookSubscribe.Event subscribe : subscribes) {
- subscribe.response(null, param);
- }
+ try {
+ MediaServer mediaServerItem = mediaServerService.getOne(param.getMediaServerId());
+ if (mediaServerItem != null) {
+ MediaRecordMp4Event event = MediaRecordMp4Event.getInstance(this, param, mediaServerItem);
+ event.setMediaServer(mediaServerItem);
+ applicationEventPublisher.publishEvent(event);
}
- cloudRecordService.addRecord(param);
-
- });
+ }catch (Exception e) {
+ logger.info("[ZLM-HOOK-rtpServer鏀舵祦瓒呮椂] 鍙戦�侀�氱煡澶辫触 ", e);
+ }
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