Jelajahi Sumber

修复mediaserverId未存入导致的问题

648540858 3 tahun lalu
induk
melakukan
52656bb893

+ 10 - 2
src/main/java/com/genersoft/iot/vmp/conf/ProxyServletConfig.java

@@ -143,9 +143,13 @@ public class ProxyServletConfig {
             MediaServerItem mediaInfo = getMediaInfoByUri(requestURI);
             String url = super.rewriteUrlFromRequest(servletRequest);
             if (mediaInfo == null) {
+                logger.error("[ZLM服务访问代理],错误:处理url信息时未找到流媒体信息=>{}", requestURI);
                 return  url;
             }
-            return url.replace(mediaInfo.getId() + "/", "").replace("default/", "");
+            if (!StringUtils.isEmpty(mediaInfo.getId())) {
+                url = url.replace(mediaInfo.getId() + "/", "");
+            }
+            return url.replace("default/", "");
         }
     }
 
@@ -258,9 +262,13 @@ public class ProxyServletConfig {
             MediaServerItem mediaInfo = getMediaInfoByUri(requestURI);
             String url = super.rewriteUrlFromRequest(servletRequest);
             if (mediaInfo == null) {
+                logger.error("[录像服务访问代理],错误:处理url信息时未找到流媒体信息=>{}", requestURI);
                 return  url;
             }
-            return url.replace(mediaInfo.getId() + "/", "").replace("default/", "");
+            if (!StringUtils.isEmpty(mediaInfo.getId())) {
+                url = url.replace(mediaInfo.getId() + "/", "");
+            }
+            return url.replace("default/", "");
         }
     }
 

+ 3 - 1
src/main/java/com/genersoft/iot/vmp/service/impl/MediaServerServiceImpl.java

@@ -324,6 +324,9 @@ public class MediaServerServiceImpl implements IMediaServerService, CommandLineR
         }
         if (StringUtils.isEmpty(serverItem.getId())) {
             serverItem.setId(zlmServerConfig.getGeneralMediaServerId());
+            mediaServerMapper.updateByHostAndPort(serverItem);
+        }else {
+            mediaServerMapper.update(serverItem);
         }
         if (redisUtil.get(VideoManagerConstants.MEDIA_SERVER_PREFIX + userSetup.getServerId() + "_" + serverItem.getId()) == null) {
             SsrcConfig ssrcConfig = new SsrcConfig(serverItem.getId(), null, sipConfig.getDomain());
@@ -332,7 +335,6 @@ public class MediaServerServiceImpl implements IMediaServerService, CommandLineR
         }
 
         serverItem.setStatus(true);
-        mediaServerMapper.update(serverItem);
         resetOnlineServerItem(serverItem);
         setZLMConfig(serverItem);
 

+ 24 - 0
src/main/java/com/genersoft/iot/vmp/storager/dao/MediaServerMapper.java

@@ -88,6 +88,30 @@ public interface MediaServerMapper {
             " </script>"})
     int update(MediaServerItem mediaServerItem);
 
+    @Update(value = {" <script>" +
+            "UPDATE media_server " +
+            "SET updateTime='${updateTime}'" +
+            "<if test=\"id != null\">, id='${id}'</if>" +
+            "<if test=\"hookIp != null\">, hookIp='${hookIp}'</if>" +
+            "<if test=\"sdpIp != null\">, sdpIp='${sdpIp}'</if>" +
+            "<if test=\"streamIp != null\">, streamIp='${streamIp}'</if>" +
+            "<if test=\"httpSSlPort != null\">, httpSSlPort=${httpSSlPort}</if>" +
+            "<if test=\"rtmpPort != null\">, rtmpPort=${rtmpPort}</if>" +
+            "<if test=\"rtmpSSlPort != null\">, rtmpSSlPort=${rtmpSSlPort}</if>" +
+            "<if test=\"rtpProxyPort != null\">, rtpProxyPort=${rtpProxyPort}</if>" +
+            "<if test=\"rtspPort != null\">, rtspPort=${rtspPort}</if>" +
+            "<if test=\"rtspSSLPort != null\">, rtspSSLPort=${rtspSSLPort}</if>" +
+            "<if test=\"autoConfig != null\">, autoConfig=${autoConfig}</if>" +
+            "<if test=\"streamNoneReaderDelayMS != null\">, streamNoneReaderDelayMS=${streamNoneReaderDelayMS}</if>" +
+            "<if test=\"rtpEnable != null\">, rtpEnable=${rtpEnable}</if>" +
+            "<if test=\"rtpPortRange != null\">, rtpPortRange='${rtpPortRange}'</if>" +
+            "<if test=\"sendRtpPortRange != null\">, sendRtpPortRange='${sendRtpPortRange}'</if>" +
+            "<if test=\"secret != null\">, secret='${secret}'</if>" +
+            "<if test=\"recordAssistPort != null\">, recordAssistPort=${recordAssistPort}</if>" +
+            "WHERE ip='${ip}' and httpPort=${httpPort}"+
+            " </script>"})
+    int updateByHostAndPort(MediaServerItem mediaServerItem);
+
     @Select("SELECT * FROM media_server WHERE id='${id}'")
     MediaServerItem queryOne(String id);