From ab81136765f1b641223b982b2baef13e06307fe4 Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期三, 08 十二月 2021 16:45:50 +0800
Subject: [PATCH] 优化适配zlm的hook保活

---
 src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java |   73 +++++++++++++++++++-----------------
 1 files changed, 39 insertions(+), 34 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 7065558..8c1239e 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
@@ -179,29 +179,33 @@
 	public ResponseEntity<String> onPublish(@RequestBody JSONObject json) {
 
 		logger.debug("[ ZLM HOOK ]on_publish API璋冪敤锛屽弬鏁帮細" + json.toString());
-
+		JSONObject ret = new JSONObject();
+		ret.put("code", 0);
+		ret.put("msg", "success");
+		ret.put("enableHls", true);
+		ret.put("enableMP4", userSetup.isRecordPushLive());
 		String mediaServerId = json.getString("mediaServerId");
 		ZLMHttpHookSubscribe.Event subscribe = this.subscribe.getSubscribe(ZLMHttpHookSubscribe.HookType.on_publish, json);
 		if (subscribe != null) {
 			MediaServerItem mediaInfo = mediaServerService.getOne(mediaServerId);
 			if (mediaInfo != null) {
 				subscribe.response(mediaInfo, json);
+			}else {
+				ret.put("code", 1);
+				ret.put("msg", "zlm not register");
 			}
 		}
 	 	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());
+
 		return new ResponseEntity<String>(ret.toString(), HttpStatus.OK);
 	}
 	
@@ -340,37 +344,38 @@
 				if (!"rtp".equals(app)){
 					String type = OriginType.values()[item.getOriginType()].getType();
 					MediaServerItem mediaServerItem = mediaServerService.getOne(mediaServerId);
-					if (regist) {
-						StreamInfo streamInfo = mediaService.getStreamInfoByAppAndStream(mediaServerItem, app, streamId, tracks);
-						redisCatchStorage.addStream(mediaServerItem, type, app, streamId, streamInfo);
-						if (item.getOriginType() == OriginType.RTSP_PUSH.ordinal()
-								|| item.getOriginType() == OriginType.RTMP_PUSH.ordinal()
-								|| item.getOriginType() == OriginType.RTC_PUSH.ordinal() ) {
-							zlmMediaListManager.addPush(item);
-						}
-					}else {
-						// 鍏煎娴佹敞閿�鏃剁被鍨嬮敊璇殑闂锛岀瓑zlm鏇存柊鍚庡垹闄�
-						StreamPushItem streamPushItem = streamPushService.getPush(app, streamId);
-						if (streamPushItem != null) {
-							type = "PUSH";
-						}else {
-							StreamProxyItem streamProxyByAppAndStream = streamProxyService.getStreamProxyByAppAndStream(app, streamId);
-							if (streamProxyByAppAndStream != null) {
-								type = "PULL";
+					if (mediaServerItem != null){
+						if (regist) {
+							StreamInfo streamInfo = mediaService.getStreamInfoByAppAndStream(mediaServerItem, app, streamId, tracks);
+							redisCatchStorage.addStream(mediaServerItem, type, app, streamId, streamInfo);
+							if (item.getOriginType() == OriginType.RTSP_PUSH.ordinal()
+									|| item.getOriginType() == OriginType.RTMP_PUSH.ordinal()
+									|| item.getOriginType() == OriginType.RTC_PUSH.ordinal() ) {
+								zlmMediaListManager.addPush(item);
 							}
+						}else {
+							// 鍏煎娴佹敞閿�鏃剁被鍨嬮敊璇殑闂锛岀瓑zlm鏇存柊鍚庡垹闄�
+							StreamPushItem streamPushItem = streamPushService.getPush(app, streamId);
+							if (streamPushItem != null) {
+								type = "PUSH";
+							}else {
+								StreamProxyItem streamProxyByAppAndStream = streamProxyService.getStreamProxyByAppAndStream(app, streamId);
+								if (streamProxyByAppAndStream != null) {
+									type = "PULL";
+								}
+							}
+							zlmMediaListManager.removeMedia(app, streamId);
+							redisCatchStorage.removeStream(mediaServerItem.getId(), type, app, streamId);
 						}
-						zlmMediaListManager.removeMedia(app, streamId);
-						redisCatchStorage.removeStream(mediaServerItem, type, app, streamId);
+						// 鍙戦�佹祦鍙樺寲redis娑堟伅
+						JSONObject jsonObject = new JSONObject();
+						jsonObject.put("serverId", userSetup.getServerId());
+						jsonObject.put("app", app);
+						jsonObject.put("stream", streamId);
+						jsonObject.put("register", regist);
+						jsonObject.put("mediaServerId", mediaServerId);
+						redisCatchStorage.sendStreamChangeMsg(type, jsonObject);
 					}
-
-					// 鍙戦�佹祦鍙樺寲redis娑堟伅
-					JSONObject jsonObject = new JSONObject();
-					jsonObject.put("serverId", userSetup.getServerId());
-					jsonObject.put("app", app);
-					jsonObject.put("stream", streamId);
-					jsonObject.put("register", regist);
-					jsonObject.put("mediaServerId", mediaServerId);
-					redisCatchStorage.sendStreamChangeMsg(type, jsonObject);
 				}
 			}
 		}

--
Gitblit v1.8.0