From 2bac0b3c222734aeb9087fee443af198bd67f06c Mon Sep 17 00:00:00 2001
From: 648540858 <456PANlinlin>
Date: 星期四, 02 十二月 2021 23:01:06 +0800
Subject: [PATCH] 存储所有流信息到redis
---
src/main/java/com/genersoft/iot/vmp/media/zlm/dto/OriginType.java | 22 +++++++++++
src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java | 24 ++++++------
src/main/java/com/genersoft/iot/vmp/storager/impl/RedisCatchStorageImpl.java | 17 ++++++--
src/main/java/com/genersoft/iot/vmp/storager/IRedisCatchStorage.java | 4 +-
src/main/java/com/genersoft/iot/vmp/common/VideoManagerConstants.java | 2
5 files changed, 49 insertions(+), 20 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 b400271..03b003b 100644
--- a/src/main/java/com/genersoft/iot/vmp/common/VideoManagerConstants.java
+++ b/src/main/java/com/genersoft/iot/vmp/common/VideoManagerConstants.java
@@ -10,7 +10,7 @@
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 WVP_SERVER_STREAM_PUSH_PREFIX = "VMP_SIGNALLING_STREAM_";
public static final String MEDIA_SERVER_PREFIX = "VMP_MEDIA_SERVER_";
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 233416a..f211fd6 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,6 +11,7 @@
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.OriginType;
import com.genersoft.iot.vmp.media.zlm.dto.StreamProxyItem;
import com.genersoft.iot.vmp.service.IMediaServerService;
import com.genersoft.iot.vmp.service.IMediaService;
@@ -315,24 +316,23 @@
}else {
if (!"rtp".equals(app)){
- boolean pushChange = false;
-
MediaServerItem mediaServerItem = mediaServerService.getOne(mediaServerId);
if (regist) {
- if ((item.getOriginType() == 1 || item.getOriginType() == 2 || item.getOriginType() == 8)) {
- pushChange = true;
+ StreamInfo streamInfo = mediaService.getStreamInfoByAppAndStream(mediaServerItem, app, streamId, tracks);
+ redisCatchStorage.addStream(mediaServerItem, OriginType.values()[item.getOriginType()].getType(), app, streamId, streamInfo);
+ if (item.getOriginType() == OriginType.RTSP_PUSH.ordinal()
+ || item.getOriginType() == OriginType.RTMP_PUSH.ordinal()
+ || item.getOriginType() == OriginType.RTC_PUSH.ordinal() ) {
zlmMediaListManager.addMedia(item);
- StreamInfo streamInfo = mediaService.getStreamInfoByAppAndStream(mediaServerItem, app, streamId, tracks);
- redisCatchStorage.addPushStream(mediaServerItem, app, streamId, streamInfo);
}
}else {
- int result = zlmMediaListManager.removeMedia( app, streamId);
- redisCatchStorage.removePushStream(mediaServerItem, app, streamId);
- if (result > 0) {
- pushChange = true;
- }
+ zlmMediaListManager.removeMedia( app, streamId);
+ redisCatchStorage.removeStream(mediaServerItem, OriginType.values()[item.getOriginType()].getType(), app, streamId);
+
}
- if(pushChange) {
+ if (item.getOriginType() == OriginType.RTSP_PUSH.ordinal()
+ || item.getOriginType() == OriginType.RTMP_PUSH.ordinal()
+ || item.getOriginType() == OriginType.RTC_PUSH.ordinal() ) {
// 鍙戦�佹祦鍙樺寲redis娑堟伅
JSONObject jsonObject = new JSONObject();
jsonObject.put("serverId", userSetup.getServerId());
diff --git a/src/main/java/com/genersoft/iot/vmp/media/zlm/dto/OriginType.java b/src/main/java/com/genersoft/iot/vmp/media/zlm/dto/OriginType.java
new file mode 100644
index 0000000..cb41c9a
--- /dev/null
+++ b/src/main/java/com/genersoft/iot/vmp/media/zlm/dto/OriginType.java
@@ -0,0 +1,22 @@
+package com.genersoft.iot.vmp.media.zlm.dto;
+
+public enum OriginType {
+ UNKNOWN("UNKNOWN"),
+ RTMP_PUSH("PUSH"),
+ RTSP_PUSH("PUSH"),
+ RTP_PUSH("RTP"),
+ RTC_PUSH("PUSH"),
+ PULL("PULL"),
+ FFMPEG_PULL("PULL"),
+ MP4_VOD("MP4_VOD"),
+ DEVICE_CHN("DEVICE_CHN");
+
+ private final String type;
+ OriginType(String type) {
+ this.type = type;
+ }
+
+ public String getType() {
+ return type;
+ }
+}
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 5878339..543f932 100644
--- a/src/main/java/com/genersoft/iot/vmp/storager/IRedisCatchStorage.java
+++ b/src/main/java/com/genersoft/iot/vmp/storager/IRedisCatchStorage.java
@@ -135,7 +135,7 @@
* @param app
* @param streamId
*/
- void addPushStream(MediaServerItem mediaServerItem, String app, String streamId, StreamInfo streamInfo);
+ void addStream(MediaServerItem mediaServerItem, String type, String app, String streamId, StreamInfo streamInfo);
/**
* 绉婚櫎娴佷俊鎭粠redis
@@ -143,7 +143,7 @@
* @param app
* @param streamId
*/
- void removePushStream(MediaServerItem mediaServerItem, String app, String streamId);
+ void removeStream(MediaServerItem mediaServerItem, String type, 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 e98d8fa..dd58118 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
@@ -3,6 +3,7 @@
import com.alibaba.fastjson.JSONObject;
import com.genersoft.iot.vmp.common.StreamInfo;
import com.genersoft.iot.vmp.common.VideoManagerConstants;
+import com.genersoft.iot.vmp.conf.UserSetup;
import com.genersoft.iot.vmp.gb28181.bean.*;
import com.genersoft.iot.vmp.media.zlm.dto.MediaServerItem;
import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
@@ -23,6 +24,9 @@
@Autowired
private DeviceChannelMapper deviceChannelMapper;
+
+ @Autowired
+ private UserSetup userSetup;
private SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@@ -313,15 +317,18 @@
}
@Override
- public void addPushStream(MediaServerItem mediaServerItem, String app, String streamId, StreamInfo streamInfo) {
- String key = VideoManagerConstants.WVP_SERVER_STREAM_PUSH_PREFIX + app + "_" + streamId + "_" + mediaServerItem.getId();
+ public void addStream(MediaServerItem mediaServerItem, String type, String app, String streamId, StreamInfo streamInfo) {
+ String key = VideoManagerConstants.WVP_SERVER_STREAM_PUSH_PREFIX + userSetup.getServerId() + "_" + type + "_" + app + "_" + streamId + "_" + mediaServerItem.getId();
redis.set(key, streamInfo);
}
@Override
- public void removePushStream(MediaServerItem mediaServerItem, String app, String streamId) {
- String key = VideoManagerConstants.WVP_SERVER_STREAM_PUSH_PREFIX + app + "_" + streamId + "_" + mediaServerItem.getId();
- redis.del(key);
+ public void removeStream(MediaServerItem mediaServerItem, String type, String app, String streamId) {
+ String key = VideoManagerConstants.WVP_SERVER_STREAM_PUSH_PREFIX + userSetup.getServerId() + "_*_" + app + "_" + streamId + "_" + mediaServerItem.getId();
+ List<Object> streams = redis.scan(key);
+ for (Object stream : streams) {
+ redis.del((String) stream);
+ }
}
@Override
--
Gitblit v1.8.0