Commit 67e40600538fddea05fed1c7baa1ce3909a09969

Authored by 648540858
1 parent 3d5842e9

添加推流信息专属redis数据

src/main/java/com/genersoft/iot/vmp/common/VideoManagerConstants.java
@@ -70,6 +70,7 @@ public class VideoManagerConstants { @@ -70,6 +70,7 @@ public class VideoManagerConstants {
70 public static final String SYSTEM_INFO_DISK_PREFIX = "VMP_SYSTEM_INFO_DISK_"; 70 public static final String SYSTEM_INFO_DISK_PREFIX = "VMP_SYSTEM_INFO_DISK_";
71 71
72 public static final String REGISTER_EXPIRE_TASK_KEY_PREFIX = "VMP_device_register_expire_"; 72 public static final String REGISTER_EXPIRE_TASK_KEY_PREFIX = "VMP_device_register_expire_";
  73 + public static final String PUSH_STREAM_LIST = "VMP_PUSH_STREAM_LIST_";
73 74
74 75
75 76
src/main/java/com/genersoft/iot/vmp/conf/SystemInfoTimerTask.java
@@ -39,4 +39,6 @@ public class SystemInfoTimerTask { @@ -39,4 +39,6 @@ public class SystemInfoTimerTask {
39 } 39 }
40 40
41 } 41 }
  42 +
  43 +
42 } 44 }
src/main/java/com/genersoft/iot/vmp/gb28181/task/SipRunner.java
@@ -129,4 +129,6 @@ public class SipRunner implements CommandLineRunner { @@ -129,4 +129,6 @@ public class SipRunner implements CommandLineRunner {
129 } 129 }
130 } 130 }
131 } 131 }
  132 +
  133 +
132 } 134 }
src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java
@@ -392,6 +392,9 @@ public class ZLMHttpHookListener { @@ -392,6 +392,9 @@ public class ZLMHttpHookListener {
392 || param.getOriginType() == OriginType.RTC_PUSH.ordinal()) { 392 || param.getOriginType() == OriginType.RTC_PUSH.ordinal()) {
393 param.setSeverId(userSetting.getServerId()); 393 param.setSeverId(userSetting.getServerId());
394 zlmMediaListManager.addPush(param); 394 zlmMediaListManager.addPush(param);
  395 +
  396 + // 冗余数据,自己系统中自用
  397 + redisCatchStorage.addPushListItem(param.getApp(), param.getStream(), param);
395 } 398 }
396 } else { 399 } else {
397 // 兼容流注销时类型从redis记录获取 400 // 兼容流注销时类型从redis记录获取
@@ -400,6 +403,10 @@ public class ZLMHttpHookListener { @@ -400,6 +403,10 @@ public class ZLMHttpHookListener {
400 if (onStreamChangedHookParam != null) { 403 if (onStreamChangedHookParam != null) {
401 type = OriginType.values()[onStreamChangedHookParam.getOriginType()].getType(); 404 type = OriginType.values()[onStreamChangedHookParam.getOriginType()].getType();
402 redisCatchStorage.removeStream(mediaInfo.getId(), type, param.getApp(), param.getStream()); 405 redisCatchStorage.removeStream(mediaInfo.getId(), type, param.getApp(), param.getStream());
  406 + if ("PUSH".equalsIgnoreCase(type)) {
  407 + // 冗余数据,自己系统中自用
  408 + redisCatchStorage.removePushListItem(param.getApp(), param.getStream(), param.getMediaServerId());
  409 + }
403 } 410 }
404 GbStream gbStream = storager.getGbStream(param.getApp(), param.getStream()); 411 GbStream gbStream = storager.getGbStream(param.getApp(), param.getStream());
405 if (gbStream != null) { 412 if (gbStream != null) {
src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushServiceImpl.java
@@ -282,6 +282,8 @@ public class StreamPushServiceImpl implements IStreamPushService { @@ -282,6 +282,8 @@ public class StreamPushServiceImpl implements IStreamPushService {
282 redisCatchStorage.sendStreamChangeMsg(type, jsonObject); 282 redisCatchStorage.sendStreamChangeMsg(type, jsonObject);
283 // 移除redis内流的信息 283 // 移除redis内流的信息
284 redisCatchStorage.removeStream(mediaServerItem.getId(), "PUSH", offlineOnStreamChangedHookParam.getApp(), offlineOnStreamChangedHookParam.getStream()); 284 redisCatchStorage.removeStream(mediaServerItem.getId(), "PUSH", offlineOnStreamChangedHookParam.getApp(), offlineOnStreamChangedHookParam.getStream());
  285 + // 冗余数据,自己系统中自用
  286 + redisCatchStorage.removePushListItem(offlineOnStreamChangedHookParam.getApp(), offlineOnStreamChangedHookParam.getStream(), mediaServerItem.getId());
285 } 287 }
286 } 288 }
287 289
@@ -319,6 +321,9 @@ public class StreamPushServiceImpl implements IStreamPushService { @@ -319,6 +321,9 @@ public class StreamPushServiceImpl implements IStreamPushService {
319 jsonObject.put("register", false); 321 jsonObject.put("register", false);
320 jsonObject.put("mediaServerId", mediaServerId); 322 jsonObject.put("mediaServerId", mediaServerId);
321 redisCatchStorage.sendStreamChangeMsg(type, jsonObject); 323 redisCatchStorage.sendStreamChangeMsg(type, jsonObject);
  324 +
  325 + // 冗余数据,自己系统中自用
  326 + redisCatchStorage.removePushListItem(onStreamChangedHookParam.getApp(), onStreamChangedHookParam.getStream(), mediaServerId);
322 } 327 }
323 } 328 }
324 } 329 }
src/main/java/com/genersoft/iot/vmp/storager/IRedisCatchStorage.java
@@ -208,4 +208,8 @@ public interface IRedisCatchStorage { @@ -208,4 +208,8 @@ public interface IRedisCatchStorage {
208 void sendPlatformStartPlayMsg(MessageForPushChannel messageForPushChannel); 208 void sendPlatformStartPlayMsg(MessageForPushChannel messageForPushChannel);
209 209
210 void sendPlatformStopPlayMsg(MessageForPushChannel messageForPushChannel); 210 void sendPlatformStopPlayMsg(MessageForPushChannel messageForPushChannel);
  211 +
  212 + void addPushListItem(String app, String stream, OnStreamChangedHookParam param);
  213 +
  214 + void removePushListItem(String app, String stream, String mediaServerId);
211 } 215 }
src/main/java/com/genersoft/iot/vmp/storager/impl/RedisCatchStorageImpl.java
@@ -650,4 +650,20 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage { @@ -650,4 +650,20 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
650 logger.info("[redis发送通知] 发送 上级平台停止观看 {}: {}/{}->{}", key, msg.getApp(), msg.getStream(), msg.getPlatFormId()); 650 logger.info("[redis发送通知] 发送 上级平台停止观看 {}: {}/{}->{}", key, msg.getApp(), msg.getStream(), msg.getPlatFormId());
651 redisTemplate.convertAndSend(key, JSON.toJSON(msg)); 651 redisTemplate.convertAndSend(key, JSON.toJSON(msg));
652 } 652 }
  653 +
  654 + @Override
  655 + public void addPushListItem(String app, String stream, OnStreamChangedHookParam param) {
  656 + String key = VideoManagerConstants.PUSH_STREAM_LIST + app + "_" + stream;
  657 + redisTemplate.opsForValue().set(key, param);
  658 + }
  659 +
  660 + @Override
  661 + public void removePushListItem(String app, String stream, String mediaServerId) {
  662 + String key = VideoManagerConstants.PUSH_STREAM_LIST + app + "_" + stream;
  663 + OnStreamChangedHookParam param = (OnStreamChangedHookParam)redisTemplate.opsForValue().get(key);
  664 + if (param != null && param.getMediaServerId().equalsIgnoreCase(mediaServerId)) {
  665 + redisTemplate.delete(key);
  666 + }
  667 +
  668 + }
653 } 669 }