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 | 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
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 | 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 | } | ... | ... |