src/main/java/com/genersoft/iot/vmp/gb28181/session/VideoStreamSessionManager.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/genersoft/iot/vmp/service/impl/MediaServerServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/genersoft/iot/vmp/storager/impl/RedisCatchStorageImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/genersoft/iot/vmp/utils/JsonUtil.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/genersoft/iot/vmp/gb28181/session/VideoStreamSessionManager.java
@@ -4,6 +4,7 @@ import com.genersoft.iot.vmp.conf.UserSetting; import com.genersoft.iot.vmp.gb28181.bean.SipTransactionInfo; import com.genersoft.iot.vmp.gb28181.bean.SsrcTransaction; import com.genersoft.iot.vmp.utils.JsonUtil; import com.genersoft.iot.vmp.utils.redis.RedisUtil; import gov.nist.javax.sip.message.SIPResponse; import org.springframework.beans.factory.annotation.Autowired; @@ -133,7 +134,7 @@ List<SsrcTransaction> result= new ArrayList<>(); for (int i = 0; i < ssrcTransactionKeys.size(); i++) { String key = (String)ssrcTransactionKeys.get(i); SsrcTransaction ssrcTransaction = (SsrcTransaction)RedisUtil.get(key); SsrcTransaction ssrcTransaction = JsonUtil.redisJsonToObject(key, SsrcTransaction.class); result.add(ssrcTransaction); } return result; src/main/java/com/genersoft/iot/vmp/service/impl/MediaServerServiceImpl.java
@@ -22,6 +22,7 @@ import com.genersoft.iot.vmp.storager.IRedisCatchStorage; import com.genersoft.iot.vmp.storager.dao.MediaServerMapper; import com.genersoft.iot.vmp.utils.DateUtil; import com.genersoft.iot.vmp.utils.JsonUtil; import com.genersoft.iot.vmp.utils.redis.RedisUtil; import com.genersoft.iot.vmp.vmanager.bean.ErrorCode; import okhttp3.OkHttpClient; @@ -228,11 +229,10 @@ String onlineKey = VideoManagerConstants.MEDIA_SERVERS_ONLINE_PREFIX + userSetting.getServerId(); for (Object mediaServerKey : mediaServerKeys) { String key = (String) mediaServerKey; JSONObject jsonObject = (JSONObject) RedisUtil.get(key); if (Objects.isNull(jsonObject)) { MediaServerItem mediaServerItem = JsonUtil.redisJsonToObject(key, MediaServerItem.class); if (Objects.isNull(mediaServerItem)) { continue; } MediaServerItem mediaServerItem = JSON.parseObject(jsonObject.toJSONString(), MediaServerItem.class); // 检查状态 Double aDouble = RedisUtil.zScore(onlineKey, mediaServerItem.getId()); if (aDouble != null) { @@ -284,7 +284,7 @@ return null; } String key = VideoManagerConstants.MEDIA_SERVER_PREFIX + userSetting.getServerId() + "_" + mediaServerId; return (MediaServerItem)RedisUtil.get(key); return JsonUtil.redisJsonToObject(key, MediaServerItem.class); } @Override @@ -400,8 +400,10 @@ SsrcConfig ssrcConfig = new SsrcConfig(zlmServerConfig.getGeneralMediaServerId(), null, sipConfig.getDomain()); serverItem.setSsrcConfig(ssrcConfig); }else { MediaServerItem mediaServerItemInRedis = (MediaServerItem)RedisUtil.get(key); serverItem.setSsrcConfig(mediaServerItemInRedis.getSsrcConfig()); MediaServerItem mediaServerItemInRedis = JsonUtil.redisJsonToObject(key, MediaServerItem.class); if (Objects.nonNull(mediaServerItemInRedis)) { serverItem.setSsrcConfig(mediaServerItemInRedis.getSsrcConfig()); } } RedisUtil.set(key, serverItem); resetOnlineServerItem(serverItem); src/main/java/com/genersoft/iot/vmp/storager/impl/RedisCatchStorageImpl.java
@@ -17,6 +17,7 @@ import com.genersoft.iot.vmp.storager.dao.DeviceChannelMapper; import com.genersoft.iot.vmp.storager.dao.dto.PlatformRegisterInfo; import com.genersoft.iot.vmp.utils.DateUtil; import com.genersoft.iot.vmp.utils.JsonUtil; import com.genersoft.iot.vmp.utils.SystemInfoUtils; import com.genersoft.iot.vmp.utils.redis.RedisUtil; import org.slf4j.Logger; @@ -157,7 +158,10 @@ } for (Object player : players) { String key = (String) player; StreamInfo streamInfo = (StreamInfo) RedisUtil.get(key); StreamInfo streamInfo = JsonUtil.redisJsonToObject(key, StreamInfo.class); if (Objects.isNull(streamInfo)) { continue; } streamInfos.put(streamInfo.getDeviceID() + "_" + streamInfo.getChannelId(), streamInfo); } return streamInfos; @@ -624,8 +628,7 @@ @Override public ThirdPartyGB queryMemberNoGBId(String queryKey) { String key = VideoManagerConstants.WVP_STREAM_GB_ID_PREFIX + queryKey; JSONObject jsonObject = (JSONObject)RedisUtil.get(key); return jsonObject.to(ThirdPartyGB.class); return JsonUtil.redisJsonToObject(key, ThirdPartyGB.class); } @Override @@ -664,7 +667,7 @@ @Override public Device getDevice(String deviceId) { String key = VideoManagerConstants.DEVICE_PREFIX + userSetting.getServerId() + "_" + deviceId; return (Device)RedisUtil.get(key); return JsonUtil.redisJsonToObject(key, Device.class); } @Override @@ -676,7 +679,7 @@ @Override public GPSMsgInfo getGpsMsgInfo(String gbId) { String key = VideoManagerConstants.WVP_STREAM_GPS_MSG_PREFIX + userSetting.getServerId() + "_" + gbId; return (GPSMsgInfo)RedisUtil.get(key); return JsonUtil.redisJsonToObject(key, GPSMsgInfo.class); } @Override @@ -686,9 +689,9 @@ List<Object> keys = RedisUtil.scan(scanKey); for (Object o : keys) { String key = (String) o; GPSMsgInfo gpsMsgInfo = (GPSMsgInfo) RedisUtil.get(key); if (!gpsMsgInfo.isStored()) { // 只取没有存过得 result.add((GPSMsgInfo) RedisUtil.get(key)); GPSMsgInfo gpsMsgInfo = JsonUtil.redisJsonToObject(key, GPSMsgInfo.class); if (Objects.nonNull(gpsMsgInfo) && !gpsMsgInfo.isStored()) { // 只取没有存过得 result.add(JsonUtil.redisJsonToObject(key, GPSMsgInfo.class)); } } @@ -710,7 +713,7 @@ @Override public StreamAuthorityInfo getStreamAuthorityInfo(String app, String stream) { String key = VideoManagerConstants.MEDIA_STREAM_AUTHORITY + userSetting.getServerId() + "_" + app+ "_" + stream ; return (StreamAuthorityInfo) RedisUtil.get(key); return JsonUtil.redisJsonToObject(key, StreamAuthorityInfo.class); } @@ -721,7 +724,7 @@ List<Object> keys = RedisUtil.scan(scanKey); for (Object o : keys) { String key = (String) o; result.add((StreamAuthorityInfo) RedisUtil.get(key)); result.add(JsonUtil.redisJsonToObject(key, StreamAuthorityInfo.class)); } return result; } @@ -735,7 +738,7 @@ List<Object> keys = RedisUtil.scan(scanKey); if (keys.size() > 0) { String key = (String) keys.get(0); result = (OnStreamChangedHookParam)RedisUtil.get(key); result = JsonUtil.redisJsonToObject(key, OnStreamChangedHookParam.class); } return result; src/main/java/com/genersoft/iot/vmp/utils/JsonUtil.java
New file @@ -0,0 +1,37 @@ package com.genersoft.iot.vmp.utils; import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONObject; import com.genersoft.iot.vmp.utils.redis.RedisUtil; import java.util.Objects; /** * JsonUtil * * @author KunLong-Luo * @version 1.0.0 * @since 2023/2/2 15:24 */ public final class JsonUtil { private JsonUtil() { } /** * safe json type conversion * * @param key redis key * @param clazz cast type * @param <T> * @return result type */ public static <T> T redisJsonToObject(String key, Class<T> clazz) { JSONObject jsonObject = (JSONObject) RedisUtil.get(key); if (Objects.isNull(jsonObject)) { return null; } return JSON.parseObject(jsonObject.toJSONString(), clazz); } }