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