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 70 public static final String SYSTEM_INFO_DISK_PREFIX = "VMP_SYSTEM_INFO_DISK_";
71 71  
72 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 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 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 392 || param.getOriginType() == OriginType.RTC_PUSH.ordinal()) {
393 393 param.setSeverId(userSetting.getServerId());
394 394 zlmMediaListManager.addPush(param);
  395 +
  396 + // 冗余数据,自己系统中自用
  397 + redisCatchStorage.addPushListItem(param.getApp(), param.getStream(), param);
395 398 }
396 399 } else {
397 400 // 兼容流注销时类型从redis记录获取
... ... @@ -400,6 +403,10 @@ public class ZLMHttpHookListener {
400 403 if (onStreamChangedHookParam != null) {
401 404 type = OriginType.values()[onStreamChangedHookParam.getOriginType()].getType();
402 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 411 GbStream gbStream = storager.getGbStream(param.getApp(), param.getStream());
405 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 282 redisCatchStorage.sendStreamChangeMsg(type, jsonObject);
283 283 // 移除redis内流的信息
284 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 321 jsonObject.put("register", false);
320 322 jsonObject.put("mediaServerId", mediaServerId);
321 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 208 void sendPlatformStartPlayMsg(MessageForPushChannel messageForPushChannel);
209 209  
210 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 650 logger.info("[redis发送通知] 发送 上级平台停止观看 {}: {}/{}->{}", key, msg.getApp(), msg.getStream(), msg.getPlatFormId());
651 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 }
... ...