From 1b677c6dc79b8e3b650acd94da7fc770c3d2718d Mon Sep 17 00:00:00 2001
From: 64850858 <648540858@qq.com>
Date: 星期五, 04 六月 2021 16:31:45 +0800
Subject: [PATCH] 增加zlm代理的secret自动添加, 增加配置文件的默认值,缺少非关键参数不会无法启动,简化配置文件给新手带来的压力,前端使用wvp代理流。

---
 src/main/java/com/genersoft/iot/vmp/gb28181/bean/Device.java                                  |   14 ++
 src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java               |    6 
 src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMServerConfig.java                            |   33 ++--
 src/main/java/com/genersoft/iot/vmp/VManageBootstrap.java                                     |    1 
 src/main/java/com/genersoft/iot/vmp/conf/SipConfig.java                                       |   14 ++
 src/main/java/com/genersoft/iot/vmp/conf/UserSetup.java                                       |    8 
 src/main/java/com/genersoft/iot/vmp/service/impl/MediaServiceImpl.java                        |   22 +-
 src/main/resources/all-application.yml                                                        |  140 ++++++++++++++++++++
 src/main/java/com/genersoft/iot/vmp/conf/ApplicationCheckRunner.java                          |    4 
 web_src/src/main.js                                                                           |    1 
 src/main/java/com/genersoft/iot/vmp/vmanager/record/RecoderProxyController.java               |    2 
 src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMServerManger.java                            |    4 
 src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/InviteRequestProcessor.java |    8 
 web_src/src/components/dialog/devicePlayer.vue                                                |   13 +
 src/main/java/com/genersoft/iot/vmp/conf/MediaConfig.java                                     |   46 +++--
 src/main/java/com/genersoft/iot/vmp/conf/ProxyServletConfig.java                              |   26 +++
 src/main/resources/application-dev.yml                                                        |   77 ++--------
 17 files changed, 290 insertions(+), 129 deletions(-)

diff --git a/src/main/java/com/genersoft/iot/vmp/VManageBootstrap.java b/src/main/java/com/genersoft/iot/vmp/VManageBootstrap.java
index 89de84e..7b74990 100644
--- a/src/main/java/com/genersoft/iot/vmp/VManageBootstrap.java
+++ b/src/main/java/com/genersoft/iot/vmp/VManageBootstrap.java
@@ -3,6 +3,7 @@
 import java.util.logging.LogManager;
 
 import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.context.ConfigurableApplicationContext;
 import springfox.documentation.oas.annotations.EnableOpenApi;
diff --git a/src/main/java/com/genersoft/iot/vmp/conf/ApplicationCheckRunner.java b/src/main/java/com/genersoft/iot/vmp/conf/ApplicationCheckRunner.java
index 626aff1..1428333 100644
--- a/src/main/java/com/genersoft/iot/vmp/conf/ApplicationCheckRunner.java
+++ b/src/main/java/com/genersoft/iot/vmp/conf/ApplicationCheckRunner.java
@@ -31,9 +31,5 @@
             System.exit(1);
         }
 
-        if (mediaConfig.getIp().equals("localhost") || (mediaConfig.getIp().equals("127.0.0.1") && mediaConfig.getWanIp() == null)) {
-            logger.warn("mediaIp.ip浣跨敤 {} ,灏嗘棤娉曟敹鍒扮綉缁滃唴鍏朵粬璁惧鐨勬帹娴�!!!", mediaConfig.getIp() );
-        }
-
     }
 }
diff --git a/src/main/java/com/genersoft/iot/vmp/conf/MediaConfig.java b/src/main/java/com/genersoft/iot/vmp/conf/MediaConfig.java
index 2d0647a..cd4e90d 100644
--- a/src/main/java/com/genersoft/iot/vmp/conf/MediaConfig.java
+++ b/src/main/java/com/genersoft/iot/vmp/conf/MediaConfig.java
@@ -1,7 +1,9 @@
 package com.genersoft.iot.vmp.conf;
 
+import io.netty.util.internal.StringUtil;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.context.annotation.Configuration;
+import org.springframework.util.StringUtils;
 
 @Configuration("mediaConfig")
 public class MediaConfig {
@@ -9,40 +11,40 @@
     @Value("${media.ip}")
     private String ip;
 
-    @Value("${media.wanIp}")
-    private String wanIp;
-
-    @Value("${media.hookIp}")
+    @Value("${media.hookIp:${sip.ip}}")
     private String hookIp;
+
+    @Value("${media.sdpIp:${media.ip}}")
+    private String sdpIp;
 
     @Value("${media.httpPort}")
     private String httpPort;
 
-    @Value("${media.httpSSlPort}")
+    @Value("${media.httpSSlPort:}")
     private String httpSSlPort;
 
-    @Value("${media.rtmpPort}")
+    @Value("${media.rtmpPort:}")
     private String rtmpPort;
 
-    @Value("${media.rtmpSSlPort}")
+    @Value("${media.rtmpSSlPort:}")
     private String rtmpSSlPort;
 
-    @Value("${media.rtpProxyPort}")
+    @Value("${media.rtpProxyPort:}")
     private String rtpProxyPort;
 
-    @Value("${media.rtspPort}")
+    @Value("${media.rtspPort:}")
     private String rtspPort;
 
-    @Value("${media.rtspSSLPort}")
+    @Value("${media.rtspSSLPort:}")
     private String rtspSSLPort;
 
-    @Value("${media.autoConfig}")
+    @Value("${media.autoConfig:true}")
     private boolean autoConfig;
 
     @Value("${media.secret}")
     private String secret;
 
-    @Value("${media.streamNoneReaderDelayMS}")
+    @Value("${media.streamNoneReaderDelayMS:18000}")
     private String streamNoneReaderDelayMS;
 
     @Value("${media.rtp.enable}")
@@ -60,14 +62,6 @@
 
     public void setIp(String ip) {
         this.ip = ip;
-    }
-
-    public String getWanIp() {
-        return wanIp;
-    }
-
-    public void setWanIp(String wanIp) {
-        this.wanIp = wanIp;
     }
 
     public String getHookIp() {
@@ -185,4 +179,16 @@
     public void setRecordAssistPort(int recordAssistPort) {
         this.recordAssistPort = recordAssistPort;
     }
+
+    public String getSdpIp() {
+        if (StringUtils.isEmpty(sdpIp)) {
+            return ip;
+        }else {
+            return sdpIp;
+        }
+    }
+
+    public void setSdpIp(String sdpIp) {
+        this.sdpIp = sdpIp;
+    }
 }
diff --git a/src/main/java/com/genersoft/iot/vmp/conf/ProxyServletConfig.java b/src/main/java/com/genersoft/iot/vmp/conf/ProxyServletConfig.java
index 12b5736..253904c 100644
--- a/src/main/java/com/genersoft/iot/vmp/conf/ProxyServletConfig.java
+++ b/src/main/java/com/genersoft/iot/vmp/conf/ProxyServletConfig.java
@@ -2,6 +2,8 @@
 
 import org.apache.http.HttpRequest;
 import org.apache.http.HttpResponse;
+import org.apache.http.client.config.RequestConfig;
+import org.apache.http.impl.client.HttpClientBuilder;
 import org.mitre.dsmiley.httpproxy.ProxyServlet;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -12,9 +14,14 @@
 import org.springframework.util.StringUtils;
 
 import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.net.ConnectException;
 import java.util.Locale;
+import java.util.Map;
 
 
 @Configuration
@@ -27,10 +34,10 @@
 
     @Bean
     public ServletRegistrationBean zlmServletRegistrationBean(){
-        String ip = StringUtils.isEmpty(mediaConfig.getWanIp())? mediaConfig.getIp(): mediaConfig.getWanIp();
         ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new ZLMProxySerlet(),"/zlm/*");
         servletRegistrationBean.setName("zlm_Proxy");
-        servletRegistrationBean.addInitParameter("targetUri", String.format("http://%s:%s", ip, mediaConfig.getHttpPort()));
+        servletRegistrationBean.addInitParameter("targetUri", String.format("http://%s:%s", mediaConfig.getIp(), mediaConfig.getHttpPort()));
+        servletRegistrationBean.addUrlMappings();
         if (logger.isDebugEnabled()) {
             servletRegistrationBean.addInitParameter("log", "true");
         }
@@ -38,6 +45,21 @@
     }
 
     class  ZLMProxySerlet extends ProxyServlet{
+
+
+
+        @Override
+        protected String rewriteQueryStringFromRequest(HttpServletRequest servletRequest, String queryString) {
+            String queryStr = super.rewriteQueryStringFromRequest(servletRequest, queryString);
+            if (queryStr != null) {
+                queryStr += "&";
+            }else {
+                queryStr = "?";
+            }
+            queryStr += "secret=" + mediaConfig.getSecret();
+            return queryStr;
+        }
+
         @Override
         protected void handleRequestException(HttpRequest proxyRequest, HttpResponse proxyResonse, Exception e){
             System.out.println(e.getMessage());
diff --git a/src/main/java/com/genersoft/iot/vmp/conf/SipConfig.java b/src/main/java/com/genersoft/iot/vmp/conf/SipConfig.java
index b88778e..32352c7 100644
--- a/src/main/java/com/genersoft/iot/vmp/conf/SipConfig.java
+++ b/src/main/java/com/genersoft/iot/vmp/conf/SipConfig.java
@@ -9,18 +9,32 @@
 
 	@Value("${sip.ip}")
 	private String sipIp;
+
+	/**
+	 * 榛樿浣跨敤sip.ip
+	 */
+	@Value("${sip.monitorIp:0.0.0.0}")
+	private String monitorIp;
+
 	@Value("${sip.port}")
 	private Integer sipPort;
+
 	@Value("${sip.domain}")
 	private String sipDomain;
+
 	@Value("${sip.id}")
 	private String sipId;
+
 	@Value("${sip.password}")
 	private String sipPassword;
 	
 	@Value("${sip.ptz.speed:50}")
 	Integer speed;
 
+	public String getMonitorIp() {
+		return monitorIp;
+	}
+
 	public String getSipIp() {
 		return sipIp;
 	}
diff --git a/src/main/java/com/genersoft/iot/vmp/conf/UserSetup.java b/src/main/java/com/genersoft/iot/vmp/conf/UserSetup.java
index 0357bd0..3c94d86 100644
--- a/src/main/java/com/genersoft/iot/vmp/conf/UserSetup.java
+++ b/src/main/java/com/genersoft/iot/vmp/conf/UserSetup.java
@@ -5,19 +5,19 @@
 
 @Configuration("userSetup")
 public class UserSetup {
-    @Value("${userSettings.savePositionHistory}")
+    @Value("${userSettings.savePositionHistory:false}")
     boolean savePositionHistory;
 
     @Value("${userSettings.autoApplyPlay}")
     private boolean autoApplyPlay;
 
-    @Value("${userSettings.seniorSdp}")
+    @Value("${userSettings.seniorSdp:false}")
     private boolean seniorSdp;
 
-    @Value("${userSettings.playTimeout}")
+    @Value("${userSettings.playTimeout:18000}")
     private long playTimeout;
 
-    @Value("${userSettings.waitTrack}")
+    @Value("${userSettings.waitTrack:false}")
     private boolean waitTrack;
 
     @Value("${userSettings.interfaceAuthentication}")
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/bean/Device.java b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/Device.java
index 9393106..f587e75 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/bean/Device.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/Device.java
@@ -68,6 +68,12 @@
 	 */
 	private Long registerTimeMillis;
 
+
+	/**
+	 * 蹇冭烦鏃堕棿
+	 */
+	private Long KeepaliveTimeMillis;
+
 	/**
 	 * 閫氶亾涓暟
 	 */
@@ -176,4 +182,12 @@
 	public void setRegisterTimeMillis(Long registerTimeMillis) {
 		this.registerTimeMillis = registerTimeMillis;
 	}
+
+	public Long getKeepaliveTimeMillis() {
+		return KeepaliveTimeMillis;
+	}
+
+	public void setKeepaliveTimeMillis(Long keepaliveTimeMillis) {
+		KeepaliveTimeMillis = keepaliveTimeMillis;
+	}
 }
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java
index 85f11f5..bb9a9f0 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java
@@ -379,9 +379,9 @@
 			StringBuffer content = new StringBuffer(200);
 			content.append("v=0\r\n");
 //			content.append("o=" + sipConfig.getSipId() + " 0 0 IN IP4 "+mediaInfo.getWanIp()+"\r\n");
-			content.append("o="+"00000"+" 0 0 IN IP4 "+mediaInfo.getWanIp()+"\r\n");
+			content.append("o="+"00000"+" 0 0 IN IP4 "+mediaInfo.getSdpIp()+"\r\n");
 			content.append("s=Play\r\n");
-			content.append("c=IN IP4 "+mediaInfo.getWanIp()+"\r\n");
+			content.append("c=IN IP4 "+mediaInfo.getSdpIp()+"\r\n");
 			content.append("t=0 0\r\n");
 
 			if (userSetup.isSeniorSdp()) {
@@ -482,7 +482,7 @@
 	        content.append("o="+sipConfig.getSipId()+" 0 0 IN IP4 "+sipConfig.getSipIp()+"\r\n");
 	        content.append("s=Playback\r\n");
 	        content.append("u="+channelId+":0\r\n");
-	        content.append("c=IN IP4 "+mediaInfo.getWanIp()+"\r\n");
+	        content.append("c=IN IP4 "+mediaInfo.getSdpIp()+"\r\n");
 	        content.append("t="+DateUtil.yyyy_MM_dd_HH_mm_ssToTimestamp(startTime)+" "
 					+DateUtil.yyyy_MM_dd_HH_mm_ssToTimestamp(endTime) +"\r\n");
 			String mediaPort = null;
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/InviteRequestProcessor.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/InviteRequestProcessor.java
index a6f0ae7..7602c06 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/InviteRequestProcessor.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/InviteRequestProcessor.java
@@ -198,9 +198,9 @@
 						ZLMServerConfig mediaInfo = redisCatchStorage.getMediaInfo();
 						StringBuffer content = new StringBuffer(200);
 						content.append("v=0\r\n");
-						content.append("o="+"00000"+" 0 0 IN IP4 "+mediaInfo.getWanIp()+"\r\n");
+						content.append("o="+"00000"+" 0 0 IN IP4 "+mediaInfo.getSdpIp()+"\r\n");
 						content.append("s=Play\r\n");
-						content.append("c=IN IP4 "+mediaInfo.getWanIp()+"\r\n");
+						content.append("c=IN IP4 "+mediaInfo.getSdpIp()+"\r\n");
 						content.append("t=0 0\r\n");
 						content.append("m=video "+ sendRtpItem.getLocalPort()+" RTP/AVP 96\r\n");
 						content.append("a=sendonly\r\n");
@@ -254,9 +254,9 @@
 					ZLMServerConfig mediaInfo = redisCatchStorage.getMediaInfo();
 					StringBuffer content = new StringBuffer(200);
 					content.append("v=0\r\n");
-					content.append("o="+"00000"+" 0 0 IN IP4 "+mediaInfo.getWanIp()+"\r\n");
+					content.append("o="+"00000"+" 0 0 IN IP4 "+mediaInfo.getSdpIp()+"\r\n");
 					content.append("s=Play\r\n");
-					content.append("c=IN IP4 "+mediaInfo.getWanIp()+"\r\n");
+					content.append("c=IN IP4 "+mediaInfo.getSdpIp()+"\r\n");
 					content.append("t=0 0\r\n");
 					content.append("m=video "+ sendRtpItem.getLocalPort()+" RTP/AVP 96\r\n");
 					content.append("a=sendonly\r\n");
diff --git a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMServerConfig.java b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMServerConfig.java
index b20437b..10b368c 100644
--- a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMServerConfig.java
+++ b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMServerConfig.java
@@ -1,6 +1,7 @@
 package com.genersoft.iot.vmp.media.zlm;
 
 import com.alibaba.fastjson.annotation.JSONField;
+import org.springframework.util.StringUtils;
 
 public class ZLMServerConfig {
 
@@ -34,9 +35,9 @@
     @JSONField(name = "general.streamNoneReaderDelayMS")
     private String generalStreamNoneReaderDelayMS;
 
-    private String localIP;
+    private String ip;
 
-    private String wanIp;
+    private String sdpIp;
 
     private long updateTime;
 
@@ -281,12 +282,12 @@
         this.generalStreamNoneReaderDelayMS = generalStreamNoneReaderDelayMS;
     }
 
-    public String getLocalIP() {
-        return localIP;
+    public String getIp() {
+        return ip;
     }
 
-    public void setLocalIP(String localIP) {
-        this.localIP = localIP;
+    public void setIp(String ip) {
+        this.ip = ip;
     }
 
     public String getHlsFileBufSize() {
@@ -729,14 +730,6 @@
         this.shellPhell = shellPhell;
     }
 
-    public String getWanIp() {
-        return wanIp;
-    }
-
-    public void setWanIp(String wanIp) {
-        this.wanIp = wanIp;
-    }
-
     public long getUpdateTime() {
         return updateTime;
     }
@@ -760,4 +753,16 @@
     public void setRtmpSslPort(String rtmpSslPort) {
         this.rtmpSslPort = rtmpSslPort;
     }
+
+    public String getSdpIp() {
+        if (StringUtils.isEmpty(sdpIp)) {
+            return ip;
+        }else {
+            return sdpIp;
+        }
+    }
+
+    public void setSdpIp(String sdpIp) {
+        this.sdpIp = sdpIp;
+    }
 }
diff --git a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMServerManger.java b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMServerManger.java
index e73ee34..4018993 100644
--- a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMServerManger.java
+++ b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMServerManger.java
@@ -18,8 +18,8 @@
 
     public void updateServerCatch(ZLMServerConfig zlmServerConfig) {
 
-        zlmServerConfig.setLocalIP(mediaConfig.getIp());
-        zlmServerConfig.setWanIp(StringUtils.isEmpty(mediaConfig.getWanIp())? mediaConfig.getIp(): mediaConfig.getWanIp());
+        zlmServerConfig.setIp(mediaConfig.getIp());
+        zlmServerConfig.setSdpIp(mediaConfig.getSdpIp());
         zlmServerConfig.setHttpPort(mediaConfig.getHttpPort());
 
         if(!StringUtils.isEmpty(mediaConfig.getHttpSSlPort()))
diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/MediaServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/MediaServiceImpl.java
index b2626e3..19cba05 100644
--- a/src/main/java/com/genersoft/iot/vmp/service/impl/MediaServiceImpl.java
+++ b/src/main/java/com/genersoft/iot/vmp/service/impl/MediaServiceImpl.java
@@ -32,17 +32,17 @@
         StreamInfo streamInfoResult = new StreamInfo();
         streamInfoResult.setStreamId(stream);
         streamInfoResult.setApp(app);
-        streamInfoResult.setRtmp(String.format("rtmp://%s:%s/%s/%s", mediaInfo.getWanIp(), mediaInfo.getRtmpPort(), app,  stream));
-        streamInfoResult.setRtsp(String.format("rtsp://%s:%s/%s/%s", mediaInfo.getWanIp(), mediaInfo.getRtspPort(), app,  stream));
-        streamInfoResult.setFlv(String.format("http://%s:%s/%s/%s.flv", mediaInfo.getWanIp(), mediaInfo.getHttpPort(), app,  stream));
-        streamInfoResult.setWs_flv(String.format("ws://%s:%s/%s/%s.flv", mediaInfo.getWanIp(), mediaInfo.getHttpPort(), app,  stream));
-        streamInfoResult.setHls(String.format("http://%s:%s/%s/%s/hls.m3u8", mediaInfo.getWanIp(), mediaInfo.getHttpPort(), app,  stream));
-        streamInfoResult.setWs_hls(String.format("ws://%s:%s/%s/%s/hls.m3u8", mediaInfo.getWanIp(), mediaInfo.getHttpPort(), app,  stream));
-        streamInfoResult.setFmp4(String.format("http://%s:%s/%s/%s.live.mp4", mediaInfo.getWanIp(), mediaInfo.getHttpPort(), app,  stream));
-        streamInfoResult.setWs_fmp4(String.format("ws://%s:%s/%s/%s.live.mp4", mediaInfo.getWanIp(), mediaInfo.getHttpPort(), app,  stream));
-        streamInfoResult.setTs(String.format("http://%s:%s/%s/%s.live.ts", mediaInfo.getWanIp(), mediaInfo.getHttpPort(), app,  stream));
-        streamInfoResult.setWs_ts(String.format("ws://%s:%s/%s/%s.live.ts", mediaInfo.getWanIp(), mediaInfo.getHttpPort(), app,  stream));
-        streamInfoResult.setRtc(String.format("http://%s:%s/index/api/webrtc?app=%s&stream=%s&type=play", mediaInfo.getWanIp(), mediaInfo.getHttpPort(), app,  stream));
+        streamInfoResult.setRtmp(String.format("rtmp://%s:%s/%s/%s", mediaInfo.getIp(), mediaInfo.getRtmpPort(), app,  stream));
+        streamInfoResult.setRtsp(String.format("rtsp://%s:%s/%s/%s", mediaInfo.getIp(), mediaInfo.getRtspPort(), app,  stream));
+        streamInfoResult.setFlv(String.format("http://%s:%s/%s/%s.flv", mediaInfo.getIp(), mediaInfo.getHttpPort(), app,  stream));
+        streamInfoResult.setWs_flv(String.format("ws://%s:%s/%s/%s.flv", mediaInfo.getIp(), mediaInfo.getHttpPort(), app,  stream));
+        streamInfoResult.setHls(String.format("http://%s:%s/%s/%s/hls.m3u8", mediaInfo.getIp(), mediaInfo.getHttpPort(), app,  stream));
+        streamInfoResult.setWs_hls(String.format("ws://%s:%s/%s/%s/hls.m3u8", mediaInfo.getIp(), mediaInfo.getHttpPort(), app,  stream));
+        streamInfoResult.setFmp4(String.format("http://%s:%s/%s/%s.live.mp4", mediaInfo.getIp(), mediaInfo.getHttpPort(), app,  stream));
+        streamInfoResult.setWs_fmp4(String.format("ws://%s:%s/%s/%s.live.mp4", mediaInfo.getIp(), mediaInfo.getHttpPort(), app,  stream));
+        streamInfoResult.setTs(String.format("http://%s:%s/%s/%s.live.ts", mediaInfo.getIp(), mediaInfo.getHttpPort(), app,  stream));
+        streamInfoResult.setWs_ts(String.format("ws://%s:%s/%s/%s.live.ts", mediaInfo.getIp(), mediaInfo.getHttpPort(), app,  stream));
+        streamInfoResult.setRtc(String.format("http://%s:%s/index/api/webrtc?app=%s&stream=%s&type=play", mediaInfo.getIp(), mediaInfo.getHttpPort(), app,  stream));
         streamInfoResult.setTracks(tracks);
         return streamInfoResult;
     }
diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/record/RecoderProxyController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/record/RecoderProxyController.java
index 8626205..a0df19b 100644
--- a/src/main/java/com/genersoft/iot/vmp/vmanager/record/RecoderProxyController.java
+++ b/src/main/java/com/genersoft/iot/vmp/vmanager/record/RecoderProxyController.java
@@ -48,7 +48,7 @@
         // 鍚庣画鏀逛负鏍规嵁Id鑾峰彇瀵瑰簲鐨刏LM
         ZLMServerConfig mediaInfo = redisCatchStorage.getMediaInfo();
         String requestURI = String.format("http://%s:%s%s?%s",
-                mediaInfo.getLocalIP(),
+                mediaInfo.getSdpIp(),
                 mediaConfig.getRecordAssistPort(),
                 baseRequestURI.substring(baseRequestURI.indexOf(mediaId) + mediaId.length()),
                 URLDecoder.decode(request.getQueryString())
diff --git a/src/main/resources/all-application.yml b/src/main/resources/all-application.yml
new file mode 100644
index 0000000..10667be
--- /dev/null
+++ b/src/main/resources/all-application.yml
@@ -0,0 +1,140 @@
+
+
+
+# 姝ら厤缃枃浠跺彧鏄敤浣滃睍绀烘墍鏈夐厤缃」锛� 涓嶅彲涓嶇洿鎺ヤ娇鐢�
+
+
+spring:
+    # REDIS鏁版嵁搴撻厤缃�
+    redis:
+        # [蹇呴』淇敼] Redis鏈嶅姟鍣↖P, REDIS瀹夎鍦ㄦ湰鏈虹殑,浣跨敤127.0.0.1
+        host: 127.0.0.1
+        # [蹇呴』淇敼] 绔彛鍙�
+        port: 6379
+        # [鍙�塢 鏁版嵁搴� DB
+        database: 6
+        # [鍙�塢 璁块棶瀵嗙爜,鑻ヤ綘鐨剅edis鏈嶅姟鍣ㄦ病鏈夎缃瘑鐮侊紝灏变笉闇�瑕佺敤瀵嗙爜鍘昏繛鎺�
+        password:
+        # [鍙�塢 瓒呮椂鏃堕棿
+        timeout: 10000
+    # [鍙�塢 jdbc鏁版嵁搴撻厤缃�, 椤圭洰浣跨敤sqlite浣滀负鏁版嵁搴擄紝涓�鑸笉闇�瑕侀厤缃�
+    datasource:
+        # name: wvp
+        # url: jdbc:mysql://127.0.0.1:3306/wvp?useUnicode=true&characterEncoding=UTF8&rewriteBatchedStatements=true
+        # username:
+        # password:
+        # type: com.alibaba.druid.pool.DruidDataSource
+        # driver-class-name: com.mysql.cj.jdbc.Driver
+        name: eiot
+        url: jdbc:sqlite::resource:wvp.sqlite
+        username:
+        password:
+        type: com.alibaba.druid.pool.DruidDataSource
+        driver-class-name:  org.sqlite.JDBC
+        max-active: 1
+        min-idle: 1
+
+# [鍙�塢 WVP鐩戝惉鐨凥TTP绔彛, 缃戦〉鍜屾帴鍙h皟鐢ㄩ兘鏄繖涓鍙�
+server:
+    port: 18080
+    # [鍙�塢 HTTPS閰嶇疆锛� 榛樿涓嶅紑鍚�
+    ssl:
+        # [鍙�塢 鏄惁寮�鍚疕TTPS璁块棶
+        enabled: false
+        # [鍙�塢 璇佷功鏂囦欢璺緞锛屾斁缃湪resource/鐩綍涓嬪嵆鍙紝淇敼xxx涓烘枃浠跺悕
+        key-store: classpath:xxx.jks
+        # [鍙�塢 璇佷功瀵嗙爜
+        key-password: password
+        # [鍙�塢 璇佷功绫诲瀷锛� 榛樿涓簀ks锛屾牴鎹疄闄呬慨鏀�
+        key-store-type: JKS
+
+# 浣滀负28181鏈嶅姟鍣ㄧ殑閰嶇疆
+sip:
+    # [蹇呴』淇敼] 鏈満鐨処P, 蹇呴』鏄綉鍗′笂鐨処P锛岀敤浜巗ip涓嬪崗璁爤鐩戝惉ip锛屽鏋滅洃鍚墍鏈夎缃负0.0.0.0
+    monitorIp: 0.0.0.0
+    # [蹇呴』淇敼] 鏈満鐨処P
+    ip: 192.168.0.100
+    # [鍙�塢 28181鏈嶅姟鐩戝惉鐨勭鍙�
+    port: 5060
+    # 鏍规嵁鍥芥爣6.1.2涓瀹氾紝domain瀹滈噰鐢↖D缁熶竴缂栫爜鐨勫墠鍗佷綅缂栫爜銆傚浗鏍囬檮褰旸涓畾涔夊墠8浣嶄负涓績缂栫爜锛堢敱鐪佺骇銆佸競绾с�佸尯绾с�佸熀灞傜紪鍙风粍鎴愶紝鍙傜収GB/T 2260-2007锛�
+    # 鍚庝袱浣嶄负琛屼笟缂栫爜锛屽畾涔夊弬鐓ч檮褰旸.3
+    # 3701020049鏍囪瘑灞变笢娴庡崡鍘嗕笅鍖� 淇℃伅琛屼笟鎺ュ叆
+    # [鍙�塢
+    domain: 4401020049
+    # [鍙�塢
+    id: 44010200492000000001
+    # [鍙�塢 榛樿璁惧璁よ瘉瀵嗙爜锛屽悗缁墿灞曚娇鐢ㄨ澶囧崟鐙瘑鐮�
+    password: admin123
+
+#zlm鏈嶅姟鍣ㄩ厤缃�
+media:
+    # [蹇呴』淇敼] 鏈満鐨処P, 蹇呴』鏄綉鍗′笂鐨処P锛岀敤浜巗ip涓嬪崗璁爤鐩戝惉ip锛屽鏋滅洃鍚墍鏈夎缃负0.0.0.0
+    monitorIp: 0.0.0.0
+    # [蹇呴』淇敼] zlm鏈嶅姟鍣ㄧ殑鍐呯綉IP
+    ip: 192.168.0.100
+    # [鍙�塢 wvp鍦ㄥ浗鏍囦俊浠や腑浣跨敤鐨刬p锛屾ip涓烘憚鍍忔満鍙互璁块棶鍒扮殑ip锛� 缃┖浣跨敤 media.ip
+    sdpIp:
+    # [鍙�塢 zlm鏈嶅姟鍣ㄧ殑hook鎵�浣跨敤鐨処P, 榛樿浣跨敤sip.ip
+    hookIp:
+    # [蹇呴』淇敼] zlm鏈嶅姟鍣ㄧ殑http.port
+    httpPort: 80
+    # [鍙�塢 zlm鏈嶅姟鍣ㄧ殑http.sslport, 缃┖浣跨敤zlm閰嶇疆鏂囦欢閰嶇疆
+    httpSSlPort:
+    # [鍙�塢 zlm鏈嶅姟鍣ㄧ殑rtmp.port, 缃┖浣跨敤zlm閰嶇疆鏂囦欢閰嶇疆
+    rtmpPort:
+    # [鍙�塢 zlm鏈嶅姟鍣ㄧ殑rtmp.sslport, 缃┖浣跨敤zlm閰嶇疆鏂囦欢閰嶇疆
+    rtmpSSlPort:
+    # [鍙�塢 zlm鏈嶅姟鍣ㄧ殑 rtp_proxy.port, 缃┖浣跨敤zlm閰嶇疆鏂囦欢閰嶇疆
+    rtpProxyPort:
+    # [鍙�塢 zlm鏈嶅姟鍣ㄧ殑 rtsp.port, 缃┖浣跨敤zlm閰嶇疆鏂囦欢閰嶇疆
+    rtspPort:
+    # [鍙�塢 zlm鏈嶅姟鍣ㄧ殑 rtsp.sslport, 缃┖浣跨敤zlm閰嶇疆鏂囦欢閰嶇疆
+    rtspSSLPort:
+    # [鍙�塢 鏄惁鑷姩閰嶇疆ZLM, 濡傛灉甯屾湜鎵嬪姩閰嶇疆ZLM, 鍙互璁句负false, 涓嶅缓璁柊鎺ヨЕ鐨勭敤鎴蜂慨鏀�
+    autoConfig: true
+    # [鍙�塢 zlm鏈嶅姟鍣ㄧ殑hook.admin_params=secret
+    secret: 035c73f7-bb6b-4889-a715-d9eb2d1925cc
+    # [鍙�塢 zlm鏈嶅姟鍣ㄧ殑general.streamNoneReaderDelayMS
+    streamNoneReaderDelayMS:  18000  # 鏃犱汉瑙傜湅澶氫箙鑷姩鍏抽棴娴�, -1琛ㄧず姘镐笉鑷姩鍏抽棴,鍗� 鍏抽棴鎸夐渶鎷夋祦
+    # 鍚敤澶氱鍙fā寮�, 澶氱鍙fā寮忎娇鐢ㄧ鍙e尯鍒嗘瘡璺祦锛屽吋瀹规�ф洿濂姐�� 鍗曠鍙d娇鐢ㄦ祦鐨剆src鍖哄垎锛� 鐐规挱瓒呮椂寤鸿浣跨敤澶氱鍙f祴璇�
+    rtp:
+        # [鍙�塢 鏄惁鍚敤澶氱鍙fā寮�, 寮�鍚悗浼氬湪portRange鑼冨洿鍐呴�夋嫨绔彛鐢ㄤ簬濯掍綋娴佷紶杈�
+        enable: true
+        # [鍙�塢 鍦ㄦ鑼冨洿鍐呴�夋嫨绔彛鐢ㄤ簬濯掍綋娴佷紶杈�,
+        portRange: 30000,30500 # 绔彛鑼冨洿
+    # 褰曞儚杈呭姪鏈嶅姟锛� 閮ㄧ讲姝ゆ湇鍔″彲浠ュ疄鐜皕lm褰曞儚鐨勭鐞嗕笌涓嬭浇锛� 0 琛ㄧず涓嶄娇鐢�
+    recordAssistPort: 0
+
+# [鍙�塢 鏃ュ織閰嶇疆, 涓�鑸笉闇�瑕佹敼
+logging:
+    file:
+        name: logs/wvp.log
+        max-history: 30
+        max-size: 10MB
+        total-size-cap: 300MB
+    level:
+        com:
+            genersoft:
+                iot: info
+# [鏍规嵁涓氬姟闇�姹傞厤缃甝
+userSettings:
+    # [鍙�塢 鑷姩鐐规挱锛� 浣跨敤鍥哄畾娴佸湴鍧�杩涜鎾斁鏃讹紝濡傛灉鏈偣鎾垯鑷姩杩涜鐐规挱, 闇�瑕乺tp.enable=true
+    autoApplyPlay: false
+    # [鍙�塢 閮ㄥ垎璁惧闇�瑕佹墿灞昐DP锛岄渶瑕佹墦寮�姝よ缃�
+    seniorSdp: false
+    # 淇濆瓨绉诲姩浣嶇疆鍘嗗彶杞ㄨ抗锛歵rue:淇濈暀鍘嗗彶鏁版嵁锛宖alse:浠呬繚鐣欐渶鍚庣殑浣嶇疆(榛樿)
+    savePositionHistory: false
+    # 鐐规挱绛夊緟瓒呮椂鏃堕棿,鍗曚綅锛氭绉�
+    playTimeout: 3000
+    # 绛夊緟闊宠棰戠紪鐮佷俊鎭啀杩斿洖锛� true锛� 鍙互鏍规嵁缂栫爜閫夋嫨鍚堥�傜殑鎾斁鍣紝false锛� 鍙互鏇村揩鐐规挱
+    waitTrack: false
+    # 鏄惁寮�鍚帴鍙i壌鏉�
+    interfaceAuthentication: true
+    # 鎺ㄦ祦鐩存挱鏄惁褰曞埗
+    recordPushLive: true
+
+# 鍦ㄧ嚎鏂囨。锛� swagger-ui锛堢敓浜х幆澧冨缓璁叧闂級
+springfox:
+    documentation:
+        swagger-ui:
+            enabled: true
\ No newline at end of file
diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml
index e36c3fa..b494769 100644
--- a/src/main/resources/application-dev.yml
+++ b/src/main/resources/application-dev.yml
@@ -13,12 +13,6 @@
         timeout: 10000
     # [鍙�塢 jdbc鏁版嵁搴撻厤缃�, 椤圭洰浣跨敤sqlite浣滀负鏁版嵁搴擄紝涓�鑸笉闇�瑕侀厤缃�
     datasource:
-        # name: wvp
-        # url: jdbc:mysql://127.0.0.1:3306/wvp?useUnicode=true&characterEncoding=UTF8&rewriteBatchedStatements=true
-        # username:
-        # password:
-        # type: com.alibaba.druid.pool.DruidDataSource
-        # driver-class-name: com.mysql.cj.jdbc.Driver
         name: eiot
         url: jdbc:sqlite::resource:wvp.sqlite
         username:
@@ -31,20 +25,10 @@
 # [鍙�塢 WVP鐩戝惉鐨凥TTP绔彛, 缃戦〉鍜屾帴鍙h皟鐢ㄩ兘鏄繖涓鍙�
 server:
     port: 18080
-    # [鍙�塢 HTTPS閰嶇疆锛� 榛樿涓嶅紑鍚�
-    ssl:
-        # [鍙�塢 鏄惁寮�鍚疕TTPS璁块棶
-        enabled: false
-        # [鍙�塢 璇佷功鏂囦欢璺緞锛屾斁缃湪resource/鐩綍涓嬪嵆鍙紝淇敼xxx涓烘枃浠跺悕
-        key-store: classpath:xxx.jks
-        # [鍙�塢 璇佷功瀵嗙爜
-        key-password: password
-        # [鍙�塢 璇佷功绫诲瀷锛� 榛樿涓簀ks锛屾牴鎹疄闄呬慨鏀�
-        key-store-type: JKS
 
 # 浣滀负28181鏈嶅姟鍣ㄧ殑閰嶇疆
 sip:
-    # [蹇呴』淇敼] 鏈満鐨処P, 蹇呴』鏄綉鍗′笂鐨処P
+    # [蹇呴』淇敼] 鏈満鐨処P
     ip: 192.168.0.100
     # [鍙�塢 28181鏈嶅姟鐩戝惉鐨勭鍙�
     port: 5060
@@ -62,30 +46,10 @@
 media:
     # [蹇呴』淇敼] zlm鏈嶅姟鍣ㄧ殑鍐呯綉IP
     ip: 192.168.0.100
-    # [鍙�塢 zlm鏈嶅姟鍣ㄧ殑鍏綉IP, 鍐呯綉閮ㄧ讲缃┖鍗冲彲
-    wanIp: 
-    # [鍙�塢 zlm鏈嶅姟鍣ㄧ殑hook鎵�浣跨敤鐨処P, 榛樿浣跨敤sip.ip
-    hookIp:
     # [蹇呴』淇敼] zlm鏈嶅姟鍣ㄧ殑http.port
     httpPort: 80
-    # [鍙�塢 zlm鏈嶅姟鍣ㄧ殑http.sslport, 缃┖浣跨敤zlm閰嶇疆鏂囦欢閰嶇疆
-    httpSSlPort:
-    # [鍙�塢 zlm鏈嶅姟鍣ㄧ殑rtmp.port, 缃┖浣跨敤zlm閰嶇疆鏂囦欢閰嶇疆
-    rtmpPort:
-    # [鍙�塢 zlm鏈嶅姟鍣ㄧ殑rtmp.sslport, 缃┖浣跨敤zlm閰嶇疆鏂囦欢閰嶇疆
-    rtmpSSlPort:
-    # [鍙�塢 zlm鏈嶅姟鍣ㄧ殑 rtp_proxy.port, 缃┖浣跨敤zlm閰嶇疆鏂囦欢閰嶇疆
-    rtpProxyPort:
-    # [鍙�塢 zlm鏈嶅姟鍣ㄧ殑 rtsp.port, 缃┖浣跨敤zlm閰嶇疆鏂囦欢閰嶇疆
-    rtspPort:
-    # [鍙�塢 zlm鏈嶅姟鍣ㄧ殑 rtsp.sslport, 缃┖浣跨敤zlm閰嶇疆鏂囦欢閰嶇疆
-    rtspSSLPort:
-    # [鍙�塢 鏄惁鑷姩閰嶇疆ZLM, 濡傛灉甯屾湜鎵嬪姩閰嶇疆ZLM, 鍙互璁句负false, 涓嶅缓璁柊鎺ヨЕ鐨勭敤鎴蜂慨鏀�
-    autoConfig: true
     # [鍙�塢 zlm鏈嶅姟鍣ㄧ殑hook.admin_params=secret
     secret: 035c73f7-bb6b-4889-a715-d9eb2d1925cc
-    # [鍙�塢 zlm鏈嶅姟鍣ㄧ殑general.streamNoneReaderDelayMS
-    streamNoneReaderDelayMS:  18000  # 鏃犱汉瑙傜湅澶氫箙鑷姩鍏抽棴娴�, -1琛ㄧず姘镐笉鑷姩鍏抽棴,鍗� 鍏抽棴鎸夐渶鎷夋祦
     # 鍚敤澶氱鍙fā寮�, 澶氱鍙fā寮忎娇鐢ㄧ鍙e尯鍒嗘瘡璺祦锛屽吋瀹规�ф洿濂姐�� 鍗曠鍙d娇鐢ㄦ祦鐨剆src鍖哄垎锛� 鐐规挱瓒呮椂寤鸿浣跨敤澶氱鍙f祴璇�
     rtp:
         # [鍙�塢 鏄惁鍚敤澶氱鍙fā寮�, 寮�鍚悗浼氬湪portRange鑼冨洿鍐呴�夋嫨绔彛鐢ㄤ簬濯掍綋娴佷紶杈�
@@ -94,6 +58,21 @@
         portRange: 30000,30500 # 绔彛鑼冨洿
     # 褰曞儚杈呭姪鏈嶅姟锛� 閮ㄧ讲姝ゆ湇鍔″彲浠ュ疄鐜皕lm褰曞儚鐨勭鐞嗕笌涓嬭浇锛� 0 琛ㄧず涓嶄娇鐢�
     recordAssistPort: 0
+
+# [鏍规嵁涓氬姟闇�姹傞厤缃甝
+userSettings:
+    # [鍙�塢 鑷姩鐐规挱锛� 浣跨敤鍥哄畾娴佸湴鍧�杩涜鎾斁鏃讹紝濡傛灉鏈偣鎾垯鑷姩杩涜鐐规挱, 闇�瑕乺tp.enable=true
+    autoApplyPlay: false
+    # 鏄惁寮�鍚帴鍙i壌鏉�
+    interfaceAuthentication: true
+    # 鎺ㄦ祦鐩存挱鏄惁褰曞埗
+    recordPushLive: true
+
+# 鍦ㄧ嚎鏂囨。锛� swagger-ui锛堢敓浜х幆澧冨缓璁叧闂級
+springfox:
+    documentation:
+        swagger-ui:
+            enabled: true
 
 # [鍙�塢 鏃ュ織閰嶇疆, 涓�鑸笉闇�瑕佹敼
 logging:
@@ -105,26 +84,4 @@
     level:
         com:
             genersoft:
-                iot: info
-# [鏍规嵁涓氬姟闇�姹傞厤缃甝
-userSettings:
-    # [鍙�塢 鑷姩鐐规挱锛� 浣跨敤鍥哄畾娴佸湴鍧�杩涜鎾斁鏃讹紝濡傛灉鏈偣鎾垯鑷姩杩涜鐐规挱, 闇�瑕乺tp.enable=true
-    autoApplyPlay: false
-    # [鍙�塢 閮ㄥ垎璁惧闇�瑕佹墿灞昐DP锛岄渶瑕佹墦寮�姝よ缃�
-    seniorSdp: false
-    # 淇濆瓨绉诲姩浣嶇疆鍘嗗彶杞ㄨ抗锛歵rue:淇濈暀鍘嗗彶鏁版嵁锛宖alse:浠呬繚鐣欐渶鍚庣殑浣嶇疆(榛樿)
-    savePositionHistory: false
-    # 鐐规挱绛夊緟瓒呮椂鏃堕棿,鍗曚綅锛氭绉�
-    playTimeout: 3000
-    # 绛夊緟闊宠棰戠紪鐮佷俊鎭啀杩斿洖锛� true锛� 鍙互鏍规嵁缂栫爜閫夋嫨鍚堥�傜殑鎾斁鍣紝false锛� 鍙互鏇村揩鐐规挱
-    waitTrack: false
-    # 鏄惁寮�鍚帴鍙i壌鏉�
-    interfaceAuthentication: true
-    # 鎺ㄦ祦鐩存挱鏄惁褰曞埗
-    recordPushLive: true
-
-# 鍦ㄧ嚎鏂囨。锛� swagger-ui锛堢敓浜х幆澧冨缓璁叧闂級
-springfox:
-    documentation:
-        swagger-ui:
-            enabled: true
\ No newline at end of file
+                iot: info
\ No newline at end of file
diff --git a/web_src/src/components/dialog/devicePlayer.vue b/web_src/src/components/dialog/devicePlayer.vue
index 02fe283..bc6d3e8 100644
--- a/web_src/src/components/dialog/devicePlayer.vue
+++ b/web_src/src/components/dialog/devicePlayer.vue
@@ -270,10 +270,17 @@
             this.hasaudio = hasAudio;
             this.isLoging = false;
             // this.videoUrl = streamInfo.rtc;
-            this.videoUrl = streamInfo.ws_flv;
+            this.videoUrl = this.getUrlByStreamInfo(streamInfo);
             this.streamId = streamInfo.streamId;
             this.app = streamInfo.app;
             this.playFromStreamInfo(false, streamInfo)
+        },
+        getUrlByStreamInfo(streamInfo){
+            let baseZlmApi = process.env.NODE_ENV === 'development'?`${location.host}/debug/zlm`:`${location.host}/zlm`
+            console.log(12121212)
+            console.log(baseZlmApi)
+            // return `${baseZlmApi}/${streamInfo.app}/${streamInfo.streamId}.flv`;
+            return `http://${baseZlmApi}/${streamInfo.app}/${streamInfo.streamId}.flv`;
         },
         coverPlay: function () {
             var that = this;
@@ -335,7 +342,7 @@
         playFromStreamInfo: function (realHasAudio, streamInfo) {
           this.showVideoDialog = true;
           this.hasaudio = realHasAudio && this.hasaudio;
-          this.$refs.videoPlayer.play(streamInfo.ws_flv)
+          this.$refs.videoPlayer.play(this.getUrlByStreamInfo(streamInfo))
         },
         close: function () {
             console.log('鍏抽棴瑙嗛');
@@ -418,7 +425,7 @@
                 }).then(function (res) {
                     var streamInfo = res.data;
                     that.streamId = streamInfo.streamId;
-                    that.videoUrl = streamInfo.ws_flv;
+                    that.videoUrl = this.getUrlByStreamInfo(streamInfo);
                     that.recordPlay = true;
                 });
             }
diff --git a/web_src/src/main.js b/web_src/src/main.js
index 70a674e..472a5f6 100644
--- a/web_src/src/main.js
+++ b/web_src/src/main.js
@@ -55,7 +55,6 @@
 
 Vue.prototype.$cookies.config(60*30);
 
-
 new Vue({
 	router: router,
 	render: h => h(App),

--
Gitblit v1.8.0