From 2a1f979651340fbf9b530ab2d2f9e5857cbeeb1a Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期四, 02 十二月 2021 17:37:29 +0800
Subject: [PATCH] 简化zlm节点接入逻辑
---
src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java | 40 ++++++++++++++++++++++++++++++++--------
1 files changed, 32 insertions(+), 8 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 16802cb..233416a 100644
--- a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java
+++ b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java
@@ -11,8 +11,10 @@
import com.genersoft.iot.vmp.gb28181.bean.Device;
import com.genersoft.iot.vmp.media.zlm.dto.MediaItem;
import com.genersoft.iot.vmp.media.zlm.dto.MediaServerItem;
+import com.genersoft.iot.vmp.media.zlm.dto.StreamProxyItem;
import com.genersoft.iot.vmp.service.IMediaServerService;
import com.genersoft.iot.vmp.service.IMediaService;
+import com.genersoft.iot.vmp.service.IStreamProxyService;
import com.genersoft.iot.vmp.service.bean.SSRCInfo;
import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
import com.genersoft.iot.vmp.storager.IVideoManagerStorager;
@@ -58,6 +60,9 @@
@Autowired
private IMediaServerService mediaServerService;
+
+ @Autowired
+ private IStreamProxyService streamProxyService;
@Autowired
private IMediaService mediaService;
@@ -159,12 +164,20 @@
subscribe.response(mediaInfo, json);
}
}
+ String app = json.getString("app");
+ String stream = json.getString("stream");
+ StreamInfo streamInfo = redisCatchStorage.queryPlaybackByStreamId(stream);
JSONObject ret = new JSONObject();
+ // 褰曞儚鍥炴斁鏃朵笉杩涜褰曞儚涓嬭浇
+ if (streamInfo != null) {
+ ret.put("enableMP4", false);
+ }else {
+ ret.put("enableMP4", userSetup.isRecordPushLive());
+ }
ret.put("code", 0);
ret.put("msg", "success");
ret.put("enableHls", true);
ret.put("enableMP4", userSetup.isRecordPushLive());
- ret.put("enableRtxp", true);
return new ResponseEntity<String>(ret.toString(), HttpStatus.OK);
}
@@ -353,14 +366,13 @@
String mediaServerId = json.getString("mediaServerId");
String streamId = json.getString("stream");
String app = json.getString("app");
-
- // TODO 濡傛灉鍦ㄧ粰涓婄骇鎺ㄦ祦锛屼篃涓嶅仠姝€��
+ JSONObject ret = new JSONObject();
+ ret.put("code", 0);
if ("rtp".equals(app)){
- JSONObject ret = new JSONObject();
- ret.put("code", 0);
ret.put("close", true);
StreamInfo streamInfoForPlayCatch = redisCatchStorage.queryPlayByStreamId(streamId);
if (streamInfoForPlayCatch != null) {
+ // 濡傛灉鍦ㄧ粰涓婄骇鎺ㄦ祦锛屼篃涓嶅仠姝€��
if (redisCatchStorage.isChannelSendingRTP(streamInfoForPlayCatch.getChannelId())) {
ret.put("close", false);
} else {
@@ -373,6 +385,12 @@
if (streamInfoForPlayBackCatch != null) {
cmder.streamByeCmd(streamInfoForPlayBackCatch.getDeviceID(), streamInfoForPlayBackCatch.getChannelId());
redisCatchStorage.stopPlayback(streamInfoForPlayBackCatch);
+ }else {
+ StreamInfo streamInfoForDownload = redisCatchStorage.queryDownloadByStreamId(streamId);
+ // 杩涜褰曞儚涓嬭浇鏃舵棤浜鸿鐪嬩笉鏂祦
+ if (streamInfoForDownload != null) {
+ ret.put("close", false);
+ }
}
}
MediaServerItem mediaServerItem = mediaServerService.getOne(mediaServerId);
@@ -381,9 +399,15 @@
}
return new ResponseEntity<String>(ret.toString(),HttpStatus.OK);
}else {
- JSONObject ret = new JSONObject();
- ret.put("code", 0);
- ret.put("close", false);
+ StreamProxyItem streamProxyItem = streamProxyService.getStreamProxyByAppAndStream(app, streamId);
+ if (streamProxyItem != null && streamProxyItem.isEnable_remove_none_reader()) {
+ ret.put("close", true);
+ streamProxyService.del(app, streamId);
+ String url = streamProxyItem.getUrl() != null?streamProxyItem.getUrl():streamProxyItem.getSrc_url();
+ logger.info("[{}/{}]<-[{}] 鎷夋祦浠g悊鏃犱汉瑙傜湅宸茬粡绉婚櫎", app, streamId, url);
+ }else {
+ ret.put("close", false);
+ }
return new ResponseEntity<String>(ret.toString(),HttpStatus.OK);
}
--
Gitblit v1.8.0