From b1c92cf4e88447fc59a2b0b8b78c0e2c41282141 Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期二, 23 十一月 2021 14:51:37 +0800
Subject: [PATCH] 在redis中添加wvp存活依据,添加推流变化消息
---
src/main/java/com/genersoft/iot/vmp/web/gb28181/ApiControlController.java | 2
src/main/java/com/genersoft/iot/vmp/conf/UserSetup.java | 10 +++
src/main/java/com/genersoft/iot/vmp/web/gb28181/ApiStreamController.java | 2
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/callback/DeferredResultHolder.java | 2
src/main/java/com/genersoft/iot/vmp/utils/redis/RedisUtil.java | 6 ++
src/main/java/com/genersoft/iot/vmp/common/VideoManagerConstants.java | 7 ++
/dev/null | 25 --------
src/main/java/com/genersoft/iot/vmp/web/gb28181/ApiController.java | 2
src/main/java/com/genersoft/iot/vmp/web/gb28181/ApiDeviceController.java | 2
src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java | 16 +++++
src/main/java/com/genersoft/iot/vmp/storager/impl/RedisCatchStorageImpl.java | 23 +++++++
src/main/java/com/genersoft/iot/vmp/storager/IRedisCatchStorage.java | 25 ++++++++
src/main/java/com/genersoft/iot/vmp/conf/WVPTimerTask.java | 24 ++++++--
src/main/java/com/genersoft/iot/vmp/web/gb28181/ApiCompatibleController.java | 2
src/main/java/com/genersoft/iot/vmp/service/impl/MediaServerServiceImpl.java | 2
src/main/java/com/genersoft/iot/vmp/web/gb28181/AuthController.java | 2
16 files changed, 108 insertions(+), 44 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 5fd9c77..560d69a 100644
--- a/src/main/java/com/genersoft/iot/vmp/common/VideoManagerConstants.java
+++ b/src/main/java/com/genersoft/iot/vmp/common/VideoManagerConstants.java
@@ -8,7 +8,9 @@
*/
public class VideoManagerConstants {
- public static final String WVP_SERVER_PREFIX = "VMP_wvp_server";
+ public static final String WVP_SERVER_PREFIX = "VMP_SIGNALLING_SERVER_INFO_";
+
+ public static final String WVP_SERVER_STREAM_PUSH_PREFIX = "VMP_SIGNALLING_STREAM_PUSH_";
public static final String MEDIA_SERVER_PREFIX = "VMP_MEDIA_SERVER_";
@@ -51,4 +53,7 @@
public static final String MEDIA_SSRC_USED_PREFIX = "VMP_media_used_ssrc_";
public static final String MEDIA_TRANSACTION_USED_PREFIX = "VMP_media_transaction_";
+
+ //************************** redis 娑堟伅*********************************
+ public static final String WVP_MSG_STREAM_PUSH_CHANGE_PREFIX = "WVP_msg_stream_push_change";
}
diff --git a/src/main/java/com/genersoft/iot/vmp/conf/UserSetup.java b/src/main/java/com/genersoft/iot/vmp/conf/UserSetup.java
index 8b1b5b0..13831b4 100644
--- a/src/main/java/com/genersoft/iot/vmp/conf/UserSetup.java
+++ b/src/main/java/com/genersoft/iot/vmp/conf/UserSetup.java
@@ -27,6 +27,8 @@
private Boolean logInDatebase = Boolean.TRUE;
+ private String serverId = "000000";
+
private List<String> interfaceAuthenticationExcludes = new ArrayList<>();
public Boolean getSavePositionHistory() {
@@ -104,4 +106,12 @@
public void setLogInDatebase(Boolean logInDatebase) {
this.logInDatebase = logInDatebase;
}
+
+ public String getServerId() {
+ return serverId;
+ }
+
+ public void setServerId(String serverId) {
+ this.serverId = serverId;
+ }
}
diff --git a/src/main/java/com/genersoft/iot/vmp/conf/VManagerConfig.java b/src/main/java/com/genersoft/iot/vmp/conf/VManagerConfig.java
deleted file mode 100644
index 85c158c..0000000
--- a/src/main/java/com/genersoft/iot/vmp/conf/VManagerConfig.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package com.genersoft.iot.vmp.conf;
-
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.annotation.Configuration;
-
-/**
- * @description: 鑾峰彇鏁版嵁搴撻厤缃�
- * @author: swwheihei
- * @date: 2020骞�5鏈�6鏃� 涓嬪崍2:46:00
- */
-@Configuration("vmConfig")
-public class VManagerConfig {
-
- @Value("${spring.application.database:redis}")
- private String database;
-
-
- public String getDatabase() {
- return database;
- }
-
- public void setDatabase(String database) {
- this.database = database;
- }
-}
diff --git a/src/main/java/com/genersoft/iot/vmp/conf/WVPTimerTask.java b/src/main/java/com/genersoft/iot/vmp/conf/WVPTimerTask.java
index 72f0db6..3e72e29 100644
--- a/src/main/java/com/genersoft/iot/vmp/conf/WVPTimerTask.java
+++ b/src/main/java/com/genersoft/iot/vmp/conf/WVPTimerTask.java
@@ -1,7 +1,10 @@
package com.genersoft.iot.vmp.conf;
+import com.alibaba.fastjson.JSONObject;
+import com.genersoft.iot.vmp.service.IMediaServerService;
import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@@ -12,13 +15,22 @@
private IRedisCatchStorage redisCatchStorage;
@Autowired
- private SipConfig sipConfig;
+ private IMediaServerService mediaServerService;
@Autowired
- private MediaConfig mediaConfig;
+ private UserSetup userSetup;
-// @Scheduled(cron="0/2 * * * * ? ") //姣�3绉掓墽琛屼竴娆�
-// public void execute(){
-//// redisCatchStorage.updateWVPInfo();
-// }
+ @Value("${server.port}")
+ private int serverPort;
+
+ @Autowired
+ private SipConfig sipConfig;
+
+ @Scheduled(fixedRate = 2 * 1000) //姣�3绉掓墽琛屼竴娆�
+ public void execute(){
+ JSONObject jsonObject = new JSONObject();
+ jsonObject.put("ip", sipConfig.getIp());
+ jsonObject.put("port", serverPort);
+ redisCatchStorage.updateWVPInfo(userSetup.getServerId(), jsonObject, 3);
+ }
}
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/callback/DeferredResultHolder.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/callback/DeferredResultHolder.java
index 51d03b4..255ded1 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/callback/DeferredResultHolder.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/callback/DeferredResultHolder.java
@@ -37,8 +37,6 @@
public static final String CALLBACK_CMD_STOP = "CALLBACK_STOP";
- public static final String CALLBACK_ONVIF = "CALLBACK_ONVIF";
-
public static final String CALLBACK_CMD_MOBILEPOSITION = "CALLBACK_MOBILEPOSITION";
public static final String CALLBACK_CMD_PRESETQUERY = "CALLBACK_PRESETQUERY";
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 f74dcfa..e35f059 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
@@ -10,6 +10,7 @@
import com.genersoft.iot.vmp.gb28181.bean.Device;
import com.genersoft.iot.vmp.media.zlm.dto.MediaServerItem;
import com.genersoft.iot.vmp.service.IMediaServerService;
+import com.genersoft.iot.vmp.service.IMediaService;
import com.genersoft.iot.vmp.service.bean.SSRCInfo;
import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
import com.genersoft.iot.vmp.storager.IVideoManagerStorager;
@@ -55,6 +56,9 @@
@Autowired
private IMediaServerService mediaServerService;
+
+ @Autowired
+ private IMediaService mediaService;
@Autowired
private ZLMRESTfulUtils zlmresTfulUtils;
@@ -295,11 +299,23 @@
}
}else {
if (!"rtp".equals(app) ){
+ // 鍙戦�佹祦鍙樺寲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(jsonObject);
+
MediaServerItem mediaServerItem = mediaServerService.getOne(mediaServerId);
if (regist) {
zlmMediaListManager.addMedia(mediaServerItem, app, streamId);
+ StreamInfo streamInfo = mediaService.getStreamInfoByAppAndStream(mediaServerItem, app, streamId, tracks);
+ redisCatchStorage.addStream(mediaServerItem, app, streamId, streamInfo);
}else {
zlmMediaListManager.removeMedia( app, streamId);
+ redisCatchStorage.removeStream(mediaServerItem, app, streamId);
}
}
}
diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/MediaServerServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/MediaServerServiceImpl.java
index 1c2190a..51f99d9 100644
--- a/src/main/java/com/genersoft/iot/vmp/service/impl/MediaServerServiceImpl.java
+++ b/src/main/java/com/genersoft/iot/vmp/service/impl/MediaServerServiceImpl.java
@@ -47,7 +47,7 @@
private boolean sslEnabled;
@Value("${server.port}")
- private String serverPort;
+ private Integer serverPort;
@Autowired
private MediaConfig mediaConfig;
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 e4313d9..69bcd84 100644
--- a/src/main/java/com/genersoft/iot/vmp/storager/IRedisCatchStorage.java
+++ b/src/main/java/com/genersoft/iot/vmp/storager/IRedisCatchStorage.java
@@ -5,6 +5,7 @@
import com.genersoft.iot.vmp.gb28181.bean.ParentPlatform;
import com.genersoft.iot.vmp.gb28181.bean.ParentPlatformCatch;
import com.genersoft.iot.vmp.gb28181.bean.SendRtpItem;
+import com.genersoft.iot.vmp.media.zlm.dto.MediaServerItem;
import java.util.List;
import java.util.Map;
@@ -120,5 +121,27 @@
/**
* 鍦╮edis娣诲姞wvp鐨勪俊鎭�
*/
- void updateWVPInfo(JSONObject jsonObject);
+ void updateWVPInfo(String id, JSONObject jsonObject, int time);
+
+ /**
+ * 鍙戦�佹帹娴佺敓鎴愪笌鎺ㄦ祦娑堝け娑堟伅
+ * @param jsonObject 娑堟伅鍐呭
+ */
+ void sendStreamChangeMsg(JSONObject jsonObject);
+
+ /**
+ * 娣诲姞娴佷俊鎭埌redis
+ * @param mediaServerItem
+ * @param app
+ * @param streamId
+ */
+ void addStream(MediaServerItem mediaServerItem, String app, String streamId, StreamInfo streamInfo);
+
+ /**
+ * 绉婚櫎娴佷俊鎭粠redis
+ * @param mediaServerItem
+ * @param app
+ * @param streamId
+ */
+ void removeStream(MediaServerItem mediaServerItem, String app, String streamId);
}
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 e5b1269..0d0ede7 100644
--- a/src/main/java/com/genersoft/iot/vmp/storager/impl/RedisCatchStorageImpl.java
+++ b/src/main/java/com/genersoft/iot/vmp/storager/impl/RedisCatchStorageImpl.java
@@ -4,6 +4,7 @@
import com.genersoft.iot.vmp.common.StreamInfo;
import com.genersoft.iot.vmp.common.VideoManagerConstants;
import com.genersoft.iot.vmp.gb28181.bean.*;
+import com.genersoft.iot.vmp.media.zlm.dto.MediaServerItem;
import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
import com.genersoft.iot.vmp.storager.dao.DeviceChannelMapper;
import com.genersoft.iot.vmp.utils.redis.RedisUtil;
@@ -295,8 +296,26 @@
}
@Override
- public void updateWVPInfo(JSONObject jsonObject) {
-
+ public void updateWVPInfo(String id, JSONObject jsonObject, int time) {
+ String key = VideoManagerConstants.WVP_SERVER_PREFIX + id;
+ redis.set(key, jsonObject, time);
}
+ @Override
+ public void sendStreamChangeMsg(JSONObject jsonObject) {
+ String key = VideoManagerConstants.WVP_MSG_STREAM_PUSH_CHANGE_PREFIX;
+ redis.convertAndSend(key, jsonObject.toJSONString());
+ }
+
+ @Override
+ public void addStream(MediaServerItem mediaServerItem, String app, String streamId, StreamInfo streamInfo) {
+ String key = VideoManagerConstants.WVP_SERVER_STREAM_PUSH_PREFIX + app + "_" + streamId + "_" + mediaServerItem.getId();
+ redis.set(key, streamInfo);
+ }
+
+ @Override
+ public void removeStream(MediaServerItem mediaServerItem, String app, String streamId) {
+ String key = VideoManagerConstants.WVP_SERVER_STREAM_PUSH_PREFIX + app + "_" + streamId + "_" + mediaServerItem.getId();
+ redis.del(key);
+ }
}
diff --git a/src/main/java/com/genersoft/iot/vmp/utils/redis/RedisUtil.java b/src/main/java/com/genersoft/iot/vmp/utils/redis/RedisUtil.java
index 35da678..f89b30d 100644
--- a/src/main/java/com/genersoft/iot/vmp/utils/redis/RedisUtil.java
+++ b/src/main/java/com/genersoft/iot/vmp/utils/redis/RedisUtil.java
@@ -729,4 +729,10 @@
return new ArrayList<>(keys);
}
+ // ============================== 娑堟伅鍙戦�佷笌璁㈤槄 ==============================
+ public void convertAndSend(String channel, String msg) {
+ redisTemplate.convertAndSend(channel, msg);
+
+ }
+
}
diff --git a/src/main/java/com/genersoft/iot/vmp/web/ApiCompatibleController.java b/src/main/java/com/genersoft/iot/vmp/web/gb28181/ApiCompatibleController.java
similarity index 96%
rename from src/main/java/com/genersoft/iot/vmp/web/ApiCompatibleController.java
rename to src/main/java/com/genersoft/iot/vmp/web/gb28181/ApiCompatibleController.java
index c2a26b1..5080bb0 100644
--- a/src/main/java/com/genersoft/iot/vmp/web/ApiCompatibleController.java
+++ b/src/main/java/com/genersoft/iot/vmp/web/gb28181/ApiCompatibleController.java
@@ -1,4 +1,4 @@
-package com.genersoft.iot.vmp.web;
+package com.genersoft.iot.vmp.web.gb28181;
import com.genersoft.iot.vmp.common.StreamInfo;
import com.genersoft.iot.vmp.service.IMediaService;
diff --git a/src/main/java/com/genersoft/iot/vmp/web/ApiControlController.java b/src/main/java/com/genersoft/iot/vmp/web/gb28181/ApiControlController.java
similarity index 98%
rename from src/main/java/com/genersoft/iot/vmp/web/ApiControlController.java
rename to src/main/java/com/genersoft/iot/vmp/web/gb28181/ApiControlController.java
index a8e0de4..f784d3e 100644
--- a/src/main/java/com/genersoft/iot/vmp/web/ApiControlController.java
+++ b/src/main/java/com/genersoft/iot/vmp/web/gb28181/ApiControlController.java
@@ -1,4 +1,4 @@
-package com.genersoft.iot.vmp.web;
+package com.genersoft.iot.vmp.web.gb28181;
import com.alibaba.fastjson.JSONObject;
import com.genersoft.iot.vmp.gb28181.bean.Device;
diff --git a/src/main/java/com/genersoft/iot/vmp/web/ApiController.java b/src/main/java/com/genersoft/iot/vmp/web/gb28181/ApiController.java
similarity index 98%
rename from src/main/java/com/genersoft/iot/vmp/web/ApiController.java
rename to src/main/java/com/genersoft/iot/vmp/web/gb28181/ApiController.java
index cafa40c..faf873e 100644
--- a/src/main/java/com/genersoft/iot/vmp/web/ApiController.java
+++ b/src/main/java/com/genersoft/iot/vmp/web/gb28181/ApiController.java
@@ -1,4 +1,4 @@
-package com.genersoft.iot.vmp.web;
+package com.genersoft.iot.vmp.web.gb28181;
import com.alibaba.fastjson.JSONObject;
import com.genersoft.iot.vmp.conf.SipConfig;
diff --git a/src/main/java/com/genersoft/iot/vmp/web/ApiDeviceController.java b/src/main/java/com/genersoft/iot/vmp/web/gb28181/ApiDeviceController.java
similarity index 99%
rename from src/main/java/com/genersoft/iot/vmp/web/ApiDeviceController.java
rename to src/main/java/com/genersoft/iot/vmp/web/gb28181/ApiDeviceController.java
index ef83976..3094283 100644
--- a/src/main/java/com/genersoft/iot/vmp/web/ApiDeviceController.java
+++ b/src/main/java/com/genersoft/iot/vmp/web/gb28181/ApiDeviceController.java
@@ -1,4 +1,4 @@
-package com.genersoft.iot.vmp.web;
+package com.genersoft.iot.vmp.web.gb28181;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
diff --git a/src/main/java/com/genersoft/iot/vmp/web/ApiStreamController.java b/src/main/java/com/genersoft/iot/vmp/web/gb28181/ApiStreamController.java
similarity index 99%
rename from src/main/java/com/genersoft/iot/vmp/web/ApiStreamController.java
rename to src/main/java/com/genersoft/iot/vmp/web/gb28181/ApiStreamController.java
index ae7e921..8ebd8ed 100644
--- a/src/main/java/com/genersoft/iot/vmp/web/ApiStreamController.java
+++ b/src/main/java/com/genersoft/iot/vmp/web/gb28181/ApiStreamController.java
@@ -1,4 +1,4 @@
-package com.genersoft.iot.vmp.web;
+package com.genersoft.iot.vmp.web.gb28181;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
diff --git a/src/main/java/com/genersoft/iot/vmp/web/AuthController.java b/src/main/java/com/genersoft/iot/vmp/web/gb28181/AuthController.java
similarity index 93%
rename from src/main/java/com/genersoft/iot/vmp/web/AuthController.java
rename to src/main/java/com/genersoft/iot/vmp/web/gb28181/AuthController.java
index f4a2af8..abefa42 100644
--- a/src/main/java/com/genersoft/iot/vmp/web/AuthController.java
+++ b/src/main/java/com/genersoft/iot/vmp/web/gb28181/AuthController.java
@@ -1,4 +1,4 @@
-package com.genersoft.iot.vmp.web;
+package com.genersoft.iot.vmp.web.gb28181;
import com.genersoft.iot.vmp.service.IUserService;
import com.genersoft.iot.vmp.storager.dao.dto.User;
--
Gitblit v1.8.0