修复非默认媒体节点状态异常

This commit is contained in:
lin
2026-01-04 15:20:55 +08:00
parent 3c4cc4c98e
commit ae44feef5b
5 changed files with 37 additions and 24 deletions

View File

@@ -339,23 +339,23 @@ public class MediaServerServiceImpl implements IMediaServerService {
}
@Override
public void update(MediaServer mediaSerItem) {
if (mediaServerMapper.queryOne(mediaSerItem.getId(), userSetting.getServerId()) != null) {
mediaServerMapper.update(mediaSerItem);
public void update(MediaServer mediaServer) {
if (mediaServerMapper.queryOne(mediaServer.getId()) != null) {
mediaServerMapper.update(mediaServer);
}else {
mediaServerMapper.add(mediaSerItem);
mediaServerMapper.add(mediaServer);
}
MediaServer mediaServerInRedis = getOne(mediaSerItem.getId());
MediaServer mediaServerInRedis = getOne(mediaServer.getId());
if (mediaServerInRedis == null || !ssrcFactory.hasMediaServerSSRC(mediaSerItem.getId())) {
ssrcFactory.initMediaServerSSRC(mediaSerItem.getId(),null);
if (mediaServerInRedis == null || !ssrcFactory.hasMediaServerSSRC(mediaServer.getId())) {
ssrcFactory.initMediaServerSSRC(mediaServer.getId(),null);
}
String key = VideoManagerConstants.MEDIA_SERVER_PREFIX + userSetting.getServerId();
redisTemplate.opsForHash().put(key, mediaSerItem.getId(), mediaSerItem);
if (mediaSerItem.isStatus()) {
resetOnlineServerItem(mediaSerItem);
redisTemplate.opsForHash().put(key, mediaServer.getId(), mediaServer);
if (mediaServer.isStatus()) {
resetOnlineServerItem(mediaServer);
}
}
@@ -441,7 +441,7 @@ public class MediaServerServiceImpl implements IMediaServerService {
MediaServer mediaServer = (MediaServer) redisTemplate.opsForHash().get(key, mediaServerId);
if (mediaServer == null) {
// 尝试从数据库获取
mediaServer = mediaServerMapper.queryOne(mediaServerId, userSetting.getServerId());
mediaServer = mediaServerMapper.queryOneWithServerId(mediaServerId, userSetting.getServerId());
if (mediaServer != null) {
redisTemplate.opsForHash().put(key, mediaServer.getId(), mediaServer);
}
@@ -488,7 +488,7 @@ public class MediaServerServiceImpl implements IMediaServerService {
log.info("[添加媒体节点] 失败, mediaServer的类型为空");
return;
}
if (mediaServerMapper.queryOne(mediaServer.getId(), userSetting.getServerId()) != null) {
if (mediaServerMapper.queryOne(mediaServer.getId()) != null) {
log.info("[添加媒体节点] 失败, 媒体服务ID已存在请修改媒体服务器配置, {}", mediaServer.getId());
throw new ControllerException(ErrorCode.ERROR100.getCode(),"保存失败媒体服务ID [ " + mediaServer.getId() + " ] 已存在,请修改媒体服务器配置");
}
@@ -597,7 +597,7 @@ public class MediaServerServiceImpl implements IMediaServerService {
}
MediaServer mediaServer = mediaNodeServerService.checkMediaServer(ip, port, secret);
if (mediaServer != null) {
if (mediaServerMapper.queryOne(mediaServer.getId(), userSetting.getServerId()) != null) {
if (mediaServerMapper.queryOne(mediaServer.getId()) != null) {
throw new ControllerException(ErrorCode.ERROR100.getCode(), "媒体服务ID [" + mediaServer.getId() + " ] 已存在,请修改媒体服务器配置");
}
}
@@ -637,7 +637,7 @@ public class MediaServerServiceImpl implements IMediaServerService {
@Override
public MediaServer getOneFromDatabase(String mediaServerId) {
return mediaServerMapper.queryOne(mediaServerId, userSetting.getServerId());
return mediaServerMapper.queryOne(mediaServerId);
}
@Override

View File

@@ -180,8 +180,8 @@ public class ZLMMediaServerStatusManager {
}
private void online(MediaServer mediaServer, ZLMServerConfig config) {
MediaServer mediaServerInDb = mediaServerService.getOneFromDatabase(mediaServer.getId());
if (mediaServerInDb == null || mediaServerService.getOne(mediaServer.getId()) == null) {
MediaServer mediaServerInDb = mediaServerService.getOne(mediaServer.getId());
if (mediaServerInDb == null || !mediaServerInDb.isStatus()) {
log.info("[ZLM-连接成功] ID{}, 地址: {}:{}", mediaServer.getId(), mediaServer.getIp(), mediaServer.getHttpPort());
if (config == null) {
ZLMResult<List<JSONObject>> mediaServerConfig = zlmresTfulUtils.getMediaServerConfig(mediaServer);
@@ -200,7 +200,7 @@ public class ZLMMediaServerStatusManager {
mediaServer.setHookAliveInterval(config.getHookAliveInterval());
initPort(mediaServer, config);
mediaServerService.update(mediaServer);
setZLMConfig(mediaServer, true);
setZLMConfig(mediaServer, false);
}
offlineZlmPrimaryMap.remove(mediaServer.getId());
offlineZlmsecondaryMap.remove(mediaServer.getId());
@@ -233,7 +233,7 @@ public class ZLMMediaServerStatusManager {
mediaServerItem.setTranscodeSuffix(zlmServerConfig.getTranscodeSuffix());
}
mediaServerItem.setRtpProxyPort(zlmServerConfig.getRtpProxyPort());
mediaServerItem.setHookAliveInterval(10F);
mediaServerItem.setHookAliveInterval(zlmServerConfig.getHookAliveInterval());
}
public void setZLMConfig(MediaServer mediaServerItem, boolean restart) {
@@ -264,7 +264,6 @@ public class ZLMMediaServerStatusManager {
param.put("hook.on_rtp_server_timeout",String.format("%s/on_rtp_server_timeout", hookPrefix));
param.put("hook.on_record_mp4",String.format("%s/on_record_mp4", hookPrefix));
param.put("hook.timeoutSec","30");
param.put("hook.alive_interval", mediaServerItem.getHookAliveInterval());
// 推流断开后可以在超时时间内重新连接上继续推流,这样播放器会接着播放。
// 置0关闭此特性(推流断开会导致立即断开播放器)
// 此参数不应大于播放器超时时间

View File

@@ -134,8 +134,11 @@ public interface MediaServerMapper {
" </script>"})
int updateByHostAndPort(MediaServer mediaServerItem);
@Select("SELECT * FROM wvp_media_server WHERE id=#{id}")
MediaServer queryOne(@Param("id") String id);
@Select("SELECT * FROM wvp_media_server WHERE id=#{id} and server_id = #{serverId}")
MediaServer queryOne(@Param("id") String id, @Param("serverId") String serverId);
MediaServer queryOneWithServerId(@Param("id") String id, @Param("serverId") String serverId);
@Select("SELECT * FROM wvp_media_server where server_id = #{serverId}")
List<MediaServer> queryAll(@Param("serverId") String serverId);