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