Commit 67e40600538fddea05fed1c7baa1ce3909a09969
1 parent
3d5842e9
添加推流信息专属redis数据
Showing
7 changed files
with
37 additions
and
0 deletions
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
src/main/java/com/genersoft/iot/vmp/gb28181/task/SipRunner.java
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 | } |