From 8b90fade9eb3a62b428f23f2306cb1911c98d355 Mon Sep 17 00:00:00 2001 From: 648540858 <648540858@qq.com> Date: 星期二, 02 四月 2024 00:05:09 +0800 Subject: [PATCH] 支持使用abl接收国标流 --- src/main/java/com/genersoft/iot/vmp/storager/impl/RedisCatchStorageImpl.java | 79 ++++++++++++++++++++++++++++++--------- 1 files changed, 60 insertions(+), 19 deletions(-) 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 old mode 100644 new mode 100755 index 7ef4f68..7e6d1eb --- a/src/main/java/com/genersoft/iot/vmp/storager/impl/RedisCatchStorageImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/storager/impl/RedisCatchStorageImpl.java @@ -9,13 +9,15 @@ import com.genersoft.iot.vmp.gb28181.bean.Device; import com.genersoft.iot.vmp.gb28181.bean.ParentPlatformCatch; import com.genersoft.iot.vmp.gb28181.bean.SendRtpItem; -import com.genersoft.iot.vmp.media.zlm.dto.MediaServerItem; +import com.genersoft.iot.vmp.media.event.media.MediaArrivalEvent; +import com.genersoft.iot.vmp.media.bean.MediaServer; import com.genersoft.iot.vmp.media.zlm.dto.StreamAuthorityInfo; import com.genersoft.iot.vmp.media.zlm.dto.hook.OnStreamChangedHookParam; import com.genersoft.iot.vmp.service.bean.GPSMsgInfo; import com.genersoft.iot.vmp.service.bean.MessageForPushChannel; import com.genersoft.iot.vmp.storager.IRedisCatchStorage; import com.genersoft.iot.vmp.storager.dao.DeviceChannelMapper; +import com.genersoft.iot.vmp.storager.dao.DeviceMapper; import com.genersoft.iot.vmp.storager.dao.dto.PlatformRegisterInfo; import com.genersoft.iot.vmp.utils.DateUtil; import com.genersoft.iot.vmp.utils.JsonUtil; @@ -39,6 +41,9 @@ @Autowired private DeviceChannelMapper deviceChannelMapper; + + @Autowired + private DeviceMapper deviceMapper; @Autowired private UserSetting userSetting; @@ -146,7 +151,7 @@ + sendRtpItem.getMediaServerId() + "_" + sendRtpItem.getPlatformId() + "_" + sendRtpItem.getChannelId() + "_" - + sendRtpItem.getStreamId() + "_" + + sendRtpItem.getStream() + "_" + sendRtpItem.getCallId(); redisTemplate.opsForValue().set(key, sendRtpItem); } @@ -180,7 +185,7 @@ } @Override - public List<SendRtpItem> querySendRTPServerByChnnelId(String channelId) { + public List<SendRtpItem> querySendRTPServerByChannelId(String channelId) { if (channelId == null) { return null; } @@ -304,12 +309,12 @@ @Override public void sendStreamChangeMsg(String type, JSONObject jsonObject) { String key = VideoManagerConstants.WVP_MSG_STREAM_CHANGE_PREFIX + type; - logger.info("[redis 娴佸彉鍖栦簨浠禲 {}: {}", key, jsonObject.toString()); + logger.info("[redis 娴佸彉鍖栦簨浠禲 鍙戦�� {}: {}", key, jsonObject.toString()); redisTemplate.convertAndSend(key, jsonObject); } @Override - public void addStream(MediaServerItem mediaServerItem, String type, String app, String streamId, OnStreamChangedHookParam onStreamChangedHookParam) { + public void addStream(MediaServer mediaServerItem, String type, String app, String streamId, OnStreamChangedHookParam onStreamChangedHookParam) { // 鏌ユ壘鏄惁浣跨敤浜哻allID StreamAuthorityInfo streamAuthorityInfo = getStreamAuthorityInfo(app, streamId); String key = VideoManagerConstants.WVP_SERVER_STREAM_PREFIX + userSetting.getServerId() + "_" + type + "_" + app + "_" + streamId + "_" + mediaServerItem.getId(); @@ -375,7 +380,8 @@ for (Object o : keys) { String key = (String) o; Device device = JsonUtil.redisJsonToObject(redisTemplate, key, Device.class); - if (Objects.nonNull(device)) { // 鍙彇娌℃湁瀛樿繃寰� + if (Objects.nonNull(device)) { + // 鍙彇娌℃湁瀛樿繃寰� result.add(JsonUtil.redisJsonToObject(redisTemplate, key, Device.class)); } } @@ -386,14 +392,22 @@ @Override public Device getDevice(String deviceId) { String key = VideoManagerConstants.DEVICE_PREFIX + userSetting.getServerId() + "_" + deviceId; - return JsonUtil.redisJsonToObject(redisTemplate, key, Device.class); + Device device = JsonUtil.redisJsonToObject(redisTemplate, key, Device.class); + if (device == null){ + device = deviceMapper.getDeviceByDeviceId(deviceId); + if (device != null) { + updateDevice(device); + } + } + return device; } @Override public void updateGpsMsgInfo(GPSMsgInfo gpsMsgInfo) { String key = VideoManagerConstants.WVP_STREAM_GPS_MSG_PREFIX + userSetting.getServerId() + "_" + gpsMsgInfo.getId(); Duration duration = Duration.ofSeconds(60L); - redisTemplate.opsForValue().set(key, gpsMsgInfo, duration); // 榛樿GPS娑堟伅淇濆瓨1鍒嗛挓 + redisTemplate.opsForValue().set(key, gpsMsgInfo, duration); + // 榛樿GPS娑堟伅淇濆瓨1鍒嗛挓 } @Override @@ -433,6 +447,7 @@ @Override public StreamAuthorityInfo getStreamAuthorityInfo(String app, String stream) { String key = VideoManagerConstants.MEDIA_STREAM_AUTHORITY + userSetting.getServerId() + "_" + app+ "_" + stream ; + System.out.println(key); return JsonUtil.redisJsonToObject(redisTemplate, key, StreamAuthorityInfo.class); } @@ -540,14 +555,14 @@ @Override public void sendMobilePositionMsg(JSONObject jsonObject) { String key = VideoManagerConstants.VM_MSG_SUBSCRIBE_MOBILE_POSITION; - logger.info("[redis鍙戦�侀�氱煡] 绉诲姩浣嶇疆 {}: {}", key, jsonObject.toString()); + logger.info("[redis鍙戦�侀�氱煡] 鍙戦�� 绉诲姩浣嶇疆 {}: {}", key, jsonObject.toString()); redisTemplate.convertAndSend(key, jsonObject); } @Override public void sendStreamPushRequestedMsg(MessageForPushChannel msg) { String key = VideoManagerConstants.VM_MSG_STREAM_PUSH_REQUESTED; - logger.info("[redis鍙戦�侀�氱煡] 鎺ㄦ祦琚姹� {}: {}/{}", key, msg.getApp(), msg.getStream()); + logger.info("[redis鍙戦�侀�氱煡] 鍙戦�� 鎺ㄦ祦琚姹� {}: {}/{}", key, msg.getApp(), msg.getStream()); redisTemplate.convertAndSend(key, JSON.toJSON(msg)); } @@ -555,7 +570,7 @@ public void sendAlarmMsg(AlarmChannelMessage msg) { // 姝ゆ秷鎭敤浜庡鎺ョ涓夋柟鏈嶅姟涓嬬骇鏉ョ殑娑堟伅鍐呭 String key = VideoManagerConstants.VM_MSG_SUBSCRIBE_ALARM; - logger.info("[redis鍙戦�侀�氱煡] 鎶ヨ{}: {}", key, JSON.toJSON(msg)); + logger.info("[redis鍙戦�侀�氱煡] 鍙戦�� 鎶ヨ{}: {}", key, JSON.toJSON(msg)); redisTemplate.convertAndSend(key, JSON.toJSON(msg)); } @@ -568,7 +583,7 @@ @Override public void sendStreamPushRequestedMsgForStatus() { String key = VideoManagerConstants.VM_MSG_GET_ALL_ONLINE_REQUESTED; - logger.info("[redis閫氱煡]鑾峰彇鎵�鏈夋帹娴佽澶囩殑鐘舵��"); + logger.info("[redis閫氱煡] 鍙戦�� 鑾峰彇鎵�鏈夋帹娴佽澶囩殑鐘舵��"); JSONObject jsonObject = new JSONObject(); jsonObject.put(key, key); redisTemplate.convertAndSend(key, jsonObject); @@ -596,18 +611,13 @@ @Override public void sendDeviceOrChannelStatus(String deviceId, String channelId, boolean online) { String key = VideoManagerConstants.VM_MSG_SUBSCRIBE_DEVICE_STATUS; - if (channelId == null) { - logger.info("[redis閫氱煡] 鎺ㄩ�佽澶囩姸鎬侊紝 {}-{}", deviceId, online); - }else { - logger.info("[redis閫氱煡] 鎺ㄩ�侀�氶亾鐘舵�侊紝 {}/{}-{}", deviceId, channelId, online); - } - StringBuilder msg = new StringBuilder(); msg.append(deviceId); if (channelId != null) { msg.append(":").append(channelId); } msg.append(" ").append(online? "ON":"OFF"); + logger.info("[redis閫氱煡] 鎺ㄩ�佽澶�/閫氶亾鐘舵��-> {} ", msg); // 浣跨敤 RedisTemplate<Object, Object> 鍙戦�佸瓧绗︿覆娑堟伅浼氬鑷村彂閫佺殑娑堟伅澶氬甫浜嗗弻寮曞彿 stringRedisTemplate.convertAndSend(key, msg.toString()); } @@ -615,7 +625,7 @@ @Override public void sendChannelAddOrDelete(String deviceId, String channelId, boolean add) { String key = VideoManagerConstants.VM_MSG_SUBSCRIBE_DEVICE_STATUS; - logger.info("[redis閫氱煡] 鎺ㄩ�侀�氶亾{}锛� {}/{}", add?"澧炲姞":"绉婚櫎", deviceId, channelId); + StringBuilder msg = new StringBuilder(); msg.append(deviceId); @@ -623,7 +633,38 @@ msg.append(":").append(channelId); } msg.append(" ").append(add? "ADD":"DELETE"); + logger.info("[redis閫氱煡] 鎺ㄩ�侀�氶亾-> {}", msg); // 浣跨敤 RedisTemplate<Object, Object> 鍙戦�佸瓧绗︿覆娑堟伅浼氬鑷村彂閫佺殑娑堟伅澶氬甫浜嗗弻寮曞彿 stringRedisTemplate.convertAndSend(key, msg.toString()); } + + @Override + public void sendPlatformStartPlayMsg(MessageForPushChannel msg) { + String key = VideoManagerConstants.VM_MSG_STREAM_START_PLAY_NOTIFY; + logger.info("[redis鍙戦�侀�氱煡] 鍙戦�� 鎺ㄦ祦琚笂绾у钩鍙拌鐪� {}: {}/{}->{}", key, msg.getApp(), msg.getStream(), msg.getPlatFormId()); + redisTemplate.convertAndSend(key, JSON.toJSON(msg)); + } + + @Override + public void sendPlatformStopPlayMsg(MessageForPushChannel msg) { + String key = VideoManagerConstants.VM_MSG_STREAM_STOP_PLAY_NOTIFY; + logger.info("[redis鍙戦�侀�氱煡] 鍙戦�� 涓婄骇骞冲彴鍋滄瑙傜湅 {}: {}/{}->{}", key, msg.getApp(), msg.getStream(), msg.getPlatFormId()); + redisTemplate.convertAndSend(key, JSON.toJSON(msg)); + } + + @Override + public void addPushListItem(String app, String stream, MediaArrivalEvent event) { + String key = VideoManagerConstants.PUSH_STREAM_LIST + app + "_" + stream; + redisTemplate.opsForValue().set(key, event); + } + + @Override + public void removePushListItem(String app, String stream, String mediaServerId) { + String key = VideoManagerConstants.PUSH_STREAM_LIST + app + "_" + stream; + OnStreamChangedHookParam param = (OnStreamChangedHookParam)redisTemplate.opsForValue().get(key); + if (param != null && param.getMediaServerId().equalsIgnoreCase(mediaServerId)) { + redisTemplate.delete(key); + } + + } } -- Gitblit v1.8.0