diff --git a/src/main/java/com/genersoft/iot/vmp/media/service/impl/MediaServerServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/media/service/impl/MediaServerServiceImpl.java index 3380e8e5f..deb1044ce 100755 --- a/src/main/java/com/genersoft/iot/vmp/media/service/impl/MediaServerServiceImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/media/service/impl/MediaServerServiceImpl.java @@ -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 diff --git a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMMediaServerStatusManager.java b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMMediaServerStatusManager.java index 69cb2d1bf..f1eb7d5b9 100644 --- a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMMediaServerStatusManager.java +++ b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMMediaServerStatusManager.java @@ -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> 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关闭此特性(推流断开会导致立即断开播放器) // 此参数不应大于播放器超时时间 diff --git a/src/main/java/com/genersoft/iot/vmp/storager/dao/MediaServerMapper.java b/src/main/java/com/genersoft/iot/vmp/storager/dao/MediaServerMapper.java index 27caef059..42d0f84dd 100755 --- a/src/main/java/com/genersoft/iot/vmp/storager/dao/MediaServerMapper.java +++ b/src/main/java/com/genersoft/iot/vmp/storager/dao/MediaServerMapper.java @@ -134,8 +134,11 @@ public interface MediaServerMapper { " "}) 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 queryAll(@Param("serverId") String serverId); diff --git a/web/src/views/dialog/MediaServerEdit.vue b/web/src/views/dialog/MediaServerEdit.vue index 72394533b..a781dd20a 100755 --- a/web/src/views/dialog/MediaServerEdit.vue +++ b/web/src/views/dialog/MediaServerEdit.vue @@ -257,6 +257,13 @@ export default { this.sendRtpPortRange2 = 60000 this.serverCheck = 1 }) + .catch(() => { + this.$message({ + showClose: true, + message: '测试失败,请检查媒体服务地址及端口是否正确!', + type: 'warning' + }) + }) }, next: function() { this.currentStep = 2 diff --git a/web/src/views/mediaServer/index.vue b/web/src/views/mediaServer/index.vue index c0da7006e..e3ad6ebcb 100755 --- a/web/src/views/mediaServer/index.vue +++ b/web/src/views/mediaServer/index.vue @@ -10,9 +10,12 @@
{{ item.id }} - 编辑 - 查看 - 移除 +
+ + + +
+
{{ item.ip }} {{ item.createTime }} @@ -87,6 +90,7 @@ export default { type: 'success', message: '删除成功!' }) + this.getServerList() }) }).catch(() => { }) @@ -94,7 +98,7 @@ export default { getNumberByWidth() { const candidateNums = [1, 2, 3, 4, 6, 8, 12, 24] const clientWidth = window.innerWidth - 30 - const interval = 20 + const interval = 40 const itemWidth = 360 const num = (clientWidth + interval) / (itemWidth + interval) const result = Math.ceil(24 / num)