修复录像回放中的信令错误

This commit is contained in:
648540858
2022-08-15 15:08:51 +08:00
parent 2591997dfc
commit c041aaccb4
10 changed files with 179 additions and 101 deletions

View File

@@ -277,13 +277,7 @@ public class MediaServerServiceImpl implements IMediaServerService {
return null;
}
String key = VideoManagerConstants.MEDIA_SERVER_PREFIX + userSetting.getServerId() + "_" + mediaServerId;
MediaServerItem serverItem=(MediaServerItem)redisUtil.get(key);
if(null==serverItem){
//zlm服务不在线启动重连
reloadZlm();
serverItem=(MediaServerItem)redisUtil.get(key);
}
return serverItem;
return (MediaServerItem)redisUtil.get(key);
}
@Override
@@ -412,7 +406,6 @@ public class MediaServerServiceImpl implements IMediaServerService {
}
redisUtil.set(key, serverItem);
resetOnlineServerItem(serverItem);
updateMediaServerKeepalive(serverItem.getId(), null);
if (serverItem.isAutoConfig()) {
setZLMConfig(serverItem, "0".equals(zlmServerConfig.getHookEnable()));
}
@@ -476,9 +469,6 @@ public class MediaServerServiceImpl implements IMediaServerService {
String key = VideoManagerConstants.MEDIA_SERVERS_ONLINE_PREFIX + userSetting.getServerId();
if (redisUtil.zSize(key) == null || redisUtil.zSize(key) == 0) {
logger.info("获取负载最低的节点时无在线节点,启动重连机制");
//启动重连
reloadZlm();
if (redisUtil.zSize(key) == null || redisUtil.zSize(key) == 0) {
logger.info("获取负载最低的节点时无在线节点");
return null;
@@ -643,6 +633,11 @@ public class MediaServerServiceImpl implements IMediaServerService {
public void updateMediaServerKeepalive(String mediaServerId, JSONObject data) {
MediaServerItem mediaServerItem = getOne(mediaServerId);
if (mediaServerItem == null) {
// 缓存不存在,从数据库查询,如果数据库不存在则是错误的
MediaServerItem mediaServerItemFromDatabase = getOneFromDatabase(mediaServerId);
if (mediaServerItemFromDatabase == null) {
return;
}
// zlm连接重试
logger.warn("[更新ZLM 保活信息]失败,未找到流媒体信息,尝试重连zlm");
reloadZlm();
@@ -658,6 +653,10 @@ public class MediaServerServiceImpl implements IMediaServerService {
redisUtil.set(key, data, hookAliveInterval);
}
private MediaServerItem getOneFromDatabase(String mediaServerId) {
return mediaServerMapper.queryOne(mediaServerId);
}
@Override
public void syncCatchFromDatabase() {
List<MediaServerItem> allInCatch = getAll();