From 67e40600538fddea05fed1c7baa1ce3909a09969 Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期四, 30 十一月 2023 18:09:43 +0800
Subject: [PATCH] 添加推流信息专属redis数据

---
 src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushServiceImpl.java  |    5 +++++
 src/main/java/com/genersoft/iot/vmp/gb28181/task/SipRunner.java              |    2 ++
 src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java       |    7 +++++++
 src/main/java/com/genersoft/iot/vmp/storager/impl/RedisCatchStorageImpl.java |   16 ++++++++++++++++
 src/main/java/com/genersoft/iot/vmp/storager/IRedisCatchStorage.java         |    4 ++++
 src/main/java/com/genersoft/iot/vmp/conf/SystemInfoTimerTask.java            |    2 ++
 src/main/java/com/genersoft/iot/vmp/common/VideoManagerConstants.java        |    1 +
 7 files changed, 37 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/genersoft/iot/vmp/common/VideoManagerConstants.java b/src/main/java/com/genersoft/iot/vmp/common/VideoManagerConstants.java
index 0842174..4f3732e 100644
--- a/src/main/java/com/genersoft/iot/vmp/common/VideoManagerConstants.java
+++ b/src/main/java/com/genersoft/iot/vmp/common/VideoManagerConstants.java
@@ -70,6 +70,7 @@
 	public static final String SYSTEM_INFO_DISK_PREFIX = "VMP_SYSTEM_INFO_DISK_";
 
 	public static final String REGISTER_EXPIRE_TASK_KEY_PREFIX = "VMP_device_register_expire_";
+	public static final String PUSH_STREAM_LIST = "VMP_PUSH_STREAM_LIST_";
 
 
 
diff --git a/src/main/java/com/genersoft/iot/vmp/conf/SystemInfoTimerTask.java b/src/main/java/com/genersoft/iot/vmp/conf/SystemInfoTimerTask.java
index 9bc8626..40803cd 100644
--- a/src/main/java/com/genersoft/iot/vmp/conf/SystemInfoTimerTask.java
+++ b/src/main/java/com/genersoft/iot/vmp/conf/SystemInfoTimerTask.java
@@ -39,4 +39,6 @@
         }
 
     }
+
+
 }
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/task/SipRunner.java b/src/main/java/com/genersoft/iot/vmp/gb28181/task/SipRunner.java
index 73cb9ea..83418be 100755
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/task/SipRunner.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/task/SipRunner.java
@@ -129,4 +129,6 @@
             }
         }
     }
+
+
 }
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 885126c..bb15414 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
@@ -392,6 +392,9 @@
                                     || param.getOriginType() == OriginType.RTC_PUSH.ordinal()) {
                                 param.setSeverId(userSetting.getServerId());
                                 zlmMediaListManager.addPush(param);
+
+                                // 鍐椾綑鏁版嵁锛岃嚜宸辩郴缁熶腑鑷敤
+                                redisCatchStorage.addPushListItem(param.getApp(), param.getStream(), param);
                             }
                         } else {
                             // 鍏煎娴佹敞閿�鏃剁被鍨嬩粠redis璁板綍鑾峰彇
@@ -400,6 +403,10 @@
                             if (onStreamChangedHookParam != null) {
                                 type = OriginType.values()[onStreamChangedHookParam.getOriginType()].getType();
                                 redisCatchStorage.removeStream(mediaInfo.getId(), type, param.getApp(), param.getStream());
+                                if ("PUSH".equalsIgnoreCase(type)) {
+                                    // 鍐椾綑鏁版嵁锛岃嚜宸辩郴缁熶腑鑷敤
+                                    redisCatchStorage.removePushListItem(param.getApp(), param.getStream(), param.getMediaServerId());
+                                }
                             }
                             GbStream gbStream = storager.getGbStream(param.getApp(), param.getStream());
                             if (gbStream != null) {
diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushServiceImpl.java
index 32e9bdb..25be513 100755
--- a/src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushServiceImpl.java
+++ b/src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushServiceImpl.java
@@ -282,6 +282,8 @@
                     redisCatchStorage.sendStreamChangeMsg(type, jsonObject);
                     // 绉婚櫎redis鍐呮祦鐨勪俊鎭�
                     redisCatchStorage.removeStream(mediaServerItem.getId(), "PUSH", offlineOnStreamChangedHookParam.getApp(), offlineOnStreamChangedHookParam.getStream());
+                    // 鍐椾綑鏁版嵁锛岃嚜宸辩郴缁熶腑鑷敤
+                    redisCatchStorage.removePushListItem(offlineOnStreamChangedHookParam.getApp(), offlineOnStreamChangedHookParam.getStream(), mediaServerItem.getId());
                 }
             }
 
@@ -319,6 +321,9 @@
                 jsonObject.put("register", false);
                 jsonObject.put("mediaServerId", mediaServerId);
                 redisCatchStorage.sendStreamChangeMsg(type, jsonObject);
+
+                // 鍐椾綑鏁版嵁锛岃嚜宸辩郴缁熶腑鑷敤
+                redisCatchStorage.removePushListItem(onStreamChangedHookParam.getApp(), onStreamChangedHookParam.getStream(), mediaServerId);
             }
         }
     }
diff --git a/src/main/java/com/genersoft/iot/vmp/storager/IRedisCatchStorage.java b/src/main/java/com/genersoft/iot/vmp/storager/IRedisCatchStorage.java
index a97e454..b663c5c 100755
--- a/src/main/java/com/genersoft/iot/vmp/storager/IRedisCatchStorage.java
+++ b/src/main/java/com/genersoft/iot/vmp/storager/IRedisCatchStorage.java
@@ -208,4 +208,8 @@
     void sendPlatformStartPlayMsg(MessageForPushChannel messageForPushChannel);
 
     void sendPlatformStopPlayMsg(MessageForPushChannel messageForPushChannel);
+
+    void addPushListItem(String app, String stream, OnStreamChangedHookParam param);
+
+    void removePushListItem(String app, String stream, String mediaServerId);
 }
diff --git a/src/main/java/com/genersoft/iot/vmp/storager/impl/RedisCatchStorageImpl.java b/src/main/java/com/genersoft/iot/vmp/storager/impl/RedisCatchStorageImpl.java
index 0f1509f..2871d69 100755
--- a/src/main/java/com/genersoft/iot/vmp/storager/impl/RedisCatchStorageImpl.java
+++ b/src/main/java/com/genersoft/iot/vmp/storager/impl/RedisCatchStorageImpl.java
@@ -650,4 +650,20 @@
         logger.info("[redis鍙戦�侀�氱煡] 鍙戦�� 涓婄骇骞冲彴鍋滄瑙傜湅 {}: {}/{}->{}", key, msg.getApp(), msg.getStream(), msg.getPlatFormId());
         redisTemplate.convertAndSend(key, JSON.toJSON(msg));
     }
+
+    @Override
+    public void addPushListItem(String app, String stream, OnStreamChangedHookParam param) {
+        String key = VideoManagerConstants.PUSH_STREAM_LIST + app + "_" + stream;
+        redisTemplate.opsForValue().set(key, param);
+    }
+
+    @Override
+    public void removePushListItem(String app, String stream, String mediaServerId) {
+        String key = VideoManagerConstants.PUSH_STREAM_LIST + app + "_" + stream;
+        OnStreamChangedHookParam param = (OnStreamChangedHookParam)redisTemplate.opsForValue().get(key);
+        if (param != null && param.getMediaServerId().equalsIgnoreCase(mediaServerId)) {
+            redisTemplate.delete(key);
+        }
+
+    }
 }

--
Gitblit v1.8.0