Merge remote-tracking branch 'origin/wvp-28181-2.0' into wvp-28181-2.0

pull/742/head
lin 2023-02-06 16:43:04 +08:00
commit 375cd03575
5 changed files with 64 additions and 17 deletions

View File

@ -4,6 +4,7 @@ import com.genersoft.iot.vmp.common.VideoManagerConstants;
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 @@ public class VideoStreamSessionManager {
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;

View File

@ -36,7 +36,7 @@ public class ZLMRESTfulUtils {
// 设置连接超时时间
httpClientBuilder.connectTimeout(5,TimeUnit.SECONDS);
// 设置读取超时时间
httpClientBuilder.readTimeout(5,TimeUnit.SECONDS);
httpClientBuilder.readTimeout(10,TimeUnit.SECONDS);
// 设置连接池
httpClientBuilder.connectionPool(new ConnectionPool(16, 5, TimeUnit.MINUTES));
if (logger.isDebugEnabled()) {
@ -186,6 +186,7 @@ public class ZLMRESTfulUtils {
FileOutputStream outStream = new FileOutputStream(snapFile);
outStream.write(Objects.requireNonNull(response.body()).bytes());
outStream.flush();
outStream.close();
} else {
logger.error(String.format("[ %s ]请求失败: %s %s", url, response.code(), response.message()));

View File

@ -22,6 +22,7 @@ import com.genersoft.iot.vmp.service.bean.SSRCInfo;
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,7 +229,10 @@ public class MediaServerServiceImpl implements IMediaServerService {
String onlineKey = VideoManagerConstants.MEDIA_SERVERS_ONLINE_PREFIX + userSetting.getServerId();
for (Object mediaServerKey : mediaServerKeys) {
String key = (String) mediaServerKey;
MediaServerItem mediaServerItem = (MediaServerItem) RedisUtil.get(key);
MediaServerItem mediaServerItem = JsonUtil.redisJsonToObject(key, MediaServerItem.class);
if (Objects.isNull(mediaServerItem)) {
continue;
}
// 检查状态
Double aDouble = RedisUtil.zScore(onlineKey, mediaServerItem.getId());
if (aDouble != null) {
@ -280,7 +284,7 @@ public class MediaServerServiceImpl implements IMediaServerService {
return null;
}
String key = VideoManagerConstants.MEDIA_SERVER_PREFIX + userSetting.getServerId() + "_" + mediaServerId;
return (MediaServerItem)RedisUtil.get(key);
return JsonUtil.redisJsonToObject(key, MediaServerItem.class);
}
@Override
@ -396,8 +400,10 @@ public class MediaServerServiceImpl implements IMediaServerService {
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);

View File

@ -17,6 +17,7 @@ import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
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 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
}
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 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
@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 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
@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 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
@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 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
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 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
@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 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
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 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
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;

View File

@ -0,0 +1,36 @@
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) {
Object jsonObject = RedisUtil.get(key);
if (Objects.isNull(jsonObject)) {
return null;
}
return clazz.cast(jsonObject);
}
}