From 0cad0920c649f073bb64cae10bd9b573a1d78f4e Mon Sep 17 00:00:00 2001
From: 648540858 <456PANlinlin>
Date: 星期五, 26 十一月 2021 23:13:59 +0800
Subject: [PATCH] 录像回放时不进行录像下载

---
 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