From 10ae1bba597e562a20f44f777ae5afdefb5da6af Mon Sep 17 00:00:00 2001
From: panlinlin <648540858@qq.com>
Date: 星期三, 28 四月 2021 15:10:35 +0800
Subject: [PATCH] 增加对zlm使用docker容器的支持
---
src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRunner.java | 83 +++-----
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java | 26 +-
src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRTPServerFactory.java | 7
src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMServerConfig.java | 15 +
src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRESTfulUtils.java | 17 -
src/main/java/com/genersoft/iot/vmp/service/impl/MediaServiceImpl.java | 4
pom.xml | 1
src/main/java/com/genersoft/iot/vmp/conf/ApplicationCheckRunner.java | 42 ---
src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMServerManger.java | 45 ++++
src/main/java/com/genersoft/iot/vmp/conf/security/WebSecurityConfig.java | 3
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/InviteRequestProcessor.java | 6
src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java | 25 -
src/main/java/com/genersoft/iot/vmp/storager/impl/RedisCatchStorageImpl.java | 14
src/main/java/com/genersoft/iot/vmp/conf/MediaConfig.java | 177 +++++++++++++++++
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/RegisterRequestProcessor.java | 14
src/main/java/com/genersoft/iot/vmp/storager/IRedisCatchStorage.java | 8
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommanderFroPlatform.java | 4
src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHTTPProxyController.java | 13
src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/play/PlayController.java | 4
src/main/java/com/genersoft/iot/vmp/gb28181/event/offline/KeepaliveTimeoutListenerForPlatform.java | 2
src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMMediaListManager.java | 4
src/main/resources/application-dev.yml | 24 +
src/main/java/com/genersoft/iot/vmp/service/impl/StreamProxyServiceImpl.java | 4
23 files changed, 367 insertions(+), 175 deletions(-)
diff --git a/pom.xml b/pom.xml
index 7f19522..1b82c43 100644
--- a/pom.xml
+++ b/pom.xml
@@ -45,6 +45,7 @@
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.build.timestamp.format>yyyyMMddHHmmss</maven.build.timestamp.format>
+ <maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
<!-- 渚濊禆鐗堟湰 -->
<pagehelper.version>5.2.0</pagehelper.version>
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 108b434..626aff1 100644
--- a/src/main/java/com/genersoft/iot/vmp/conf/ApplicationCheckRunner.java
+++ b/src/main/java/com/genersoft/iot/vmp/conf/ApplicationCheckRunner.java
@@ -2,6 +2,7 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.CommandLineRunner;
import org.springframework.core.annotation.Order;
@@ -17,46 +18,21 @@
private Logger logger = LoggerFactory.getLogger("ApplicationCheckRunner");
- @Value("${sip.ip}")
- private String sipIp;
+ @Autowired
+ private MediaConfig mediaConfig;
- @Value("${media.ip}")
- private String mediaIp;
-
- @Value("${media.wanIp}")
- private String mediaWanIp;
-
- @Value("${media.hookIp}")
- private String mediaHookIp;
-
- @Value("${media.port}")
- private int mediaPort;
-
- @Value("${media.secret}")
- private String mediaSecret;
-
- @Value("${media.streamNoneReaderDelayMS}")
- private String streamNoneReaderDelayMS;
-
- @Value("${sip.ip}")
- private String sipIP;
-
- @Value("${server.port}")
- private String serverPort;
-
- @Value("${media.autoConfig}")
- private boolean autoConfig;
-
+ @Autowired
+ private SipConfig sipConfig;
@Override
public void run(String... args) throws Exception {
- if (sipIP.equals("localhost") || sipIP.equals("127.0.0.1")) {
- logger.error("sip.ip涓嶈兘浣跨敤 {} ,璇蜂娇鐢ㄧ被浼�192.168.1.44杩欐牱鐨勬潵鑷綉鍗$殑IP!!!", sipIP );
+ if (sipConfig.getSipIp().equals("localhost") || sipConfig.getSipIp().equals("127.0.0.1")) {
+ logger.error("sip.ip涓嶈兘浣跨敤 {} ,璇蜂娇鐢ㄧ被浼�192.168.1.44杩欐牱鐨勬潵鑷綉鍗$殑IP!!!", sipConfig.getSipIp() );
System.exit(1);
}
- if (mediaIp.equals("localhost") || (mediaIp.equals("127.0.0.1") && mediaWanIp == null)) {
- logger.warn("mediaIp.ip浣跨敤 {} ,灏嗘棤娉曟敹鍒扮綉缁滃唴鍏朵粬璁惧鐨勬帹娴�!!!", mediaIp );
+ 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
new file mode 100644
index 0000000..9d3ed7e
--- /dev/null
+++ b/src/main/java/com/genersoft/iot/vmp/conf/MediaConfig.java
@@ -0,0 +1,177 @@
+package com.genersoft.iot.vmp.conf;
+
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration("mediaConfig")
+public class MediaConfig {
+
+ @Value("${media.ip}")
+ private String ip;
+
+ @Value("${media.wanIp}")
+ private String wanIp;
+
+ @Value("${media.hookIp}")
+ private String hookIp;
+
+ @Value("${media.httpPort}")
+ private String httpPort;
+
+ @Value("${media.httpSSlPort}")
+ private String httpSSlPort;
+
+ @Value("${media.rtmpPort}")
+ private String rtmpPort;
+
+ @Value("${media.rtmpSSlPort}")
+ private String rtmpSSlPort;
+
+ @Value("${media.rtpProxyPort}")
+ private String rtpProxyPort;
+
+ @Value("${media.rtspPort}")
+ private String rtspPort;
+
+ @Value("${media.rtspSSLPort}")
+ private String rtspSSLPort;
+
+ @Value("${media.autoConfig}")
+ private boolean autoConfig;
+
+ @Value("${media.secret}")
+ private String secret;
+
+ @Value("${media.streamNoneReaderDelayMS}")
+ private String streamNoneReaderDelayMS;
+
+ @Value("${media.rtp.enable}")
+ private boolean rtpEnable;
+
+ @Value("${media.rtp.portRange}")
+ private String rtpPortRange;
+
+ public String getIp() {
+ return ip;
+ }
+
+ public void setIp(String ip) {
+ this.ip = ip;
+ }
+
+ public String getWanIp() {
+ return wanIp;
+ }
+
+ public void setWanIp(String wanIp) {
+ this.wanIp = wanIp;
+ }
+
+ public String getHookIp() {
+ return hookIp;
+ }
+
+ public void setHookIp(String hookIp) {
+ this.hookIp = hookIp;
+ }
+
+ public String getHttpPort() {
+ return httpPort;
+ }
+
+ public void setHttpPort(String httpPort) {
+ this.httpPort = httpPort;
+ }
+
+ public boolean isAutoConfig() {
+ return autoConfig;
+ }
+
+ public boolean getAutoConfig() {
+ return autoConfig;
+ }
+
+ public void setAutoConfig(boolean autoConfig) {
+ this.autoConfig = autoConfig;
+ }
+
+ public String getSecret() {
+ return secret;
+ }
+
+ public void setSecret(String secret) {
+ this.secret = secret;
+ }
+
+ public String getStreamNoneReaderDelayMS() {
+ return streamNoneReaderDelayMS;
+ }
+
+ public void setStreamNoneReaderDelayMS(String streamNoneReaderDelayMS) {
+ this.streamNoneReaderDelayMS = streamNoneReaderDelayMS;
+ }
+
+ public boolean isRtpEnable() {
+ return rtpEnable;
+ }
+
+ public void setRtpEnable(boolean rtpEnable) {
+ this.rtpEnable = rtpEnable;
+ }
+
+ public String getRtpPortRange() {
+ return rtpPortRange;
+ }
+
+ public void setRtpPortRange(String rtpPortRange) {
+ this.rtpPortRange = rtpPortRange;
+ }
+
+ public String getHttpSSlPort() {
+ return httpSSlPort;
+ }
+
+ public void setHttpSSlPort(String httpSSlPort) {
+ this.httpSSlPort = httpSSlPort;
+ }
+
+ public String getRtmpPort() {
+ return rtmpPort;
+ }
+
+ public void setRtmpPort(String rtmpPort) {
+ this.rtmpPort = rtmpPort;
+ }
+
+ public String getRtmpSSlPort() {
+ return rtmpSSlPort;
+ }
+
+ public void setRtmpSSlPort(String rtmpSSlPort) {
+ this.rtmpSSlPort = rtmpSSlPort;
+ }
+
+ public String getRtpProxyPort() {
+ return rtpProxyPort;
+ }
+
+ public void setRtpProxyPort(String rtpProxyPort) {
+ this.rtpProxyPort = rtpProxyPort;
+ }
+
+ public String getRtspPort() {
+ return rtspPort;
+ }
+
+ public void setRtspPort(String rtspPort) {
+ this.rtspPort = rtspPort;
+ }
+
+ public String getRtspSSLPort() {
+ return rtspSSLPort;
+ }
+
+ public void setRtspSSLPort(String rtspSSLPort) {
+ this.rtspSSLPort = rtspSSLPort;
+ }
+}
diff --git a/src/main/java/com/genersoft/iot/vmp/conf/security/WebSecurityConfig.java b/src/main/java/com/genersoft/iot/vmp/conf/security/WebSecurityConfig.java
index c6e77ca..ee6a30e 100644
--- a/src/main/java/com/genersoft/iot/vmp/conf/security/WebSecurityConfig.java
+++ b/src/main/java/com/genersoft/iot/vmp/conf/security/WebSecurityConfig.java
@@ -77,6 +77,7 @@
// 鍙互鐩存帴璁块棶鐨勯潤鎬佹暟鎹�
web.ignoring()
.antMatchers("/")
+ .antMatchers("/#/**")
.antMatchers("/static/**")
.antMatchers("/index.html")
.antMatchers("/doc.html") // "/webjars/**", "/swagger-resources/**", "/v3/api-docs/**"
@@ -111,7 +112,7 @@
http.headers().contentTypeOptions().disable();
http.authorizeRequests()
// 鏀捐鎺ュ彛
- .antMatchers("/#/**", "/api/user/login","/index/hook/**").permitAll()
+ .antMatchers("/api/user/login","/index/hook/**").permitAll()
// 闄や笂闈㈠鐨勬墍鏈夎姹傚叏閮ㄩ渶瑕侀壌鏉冭璇�
.anyRequest().authenticated()
// 寮傚父澶勭悊(鏉冮檺鎷掔粷銆佺櫥褰曞け鏁堢瓑)
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/event/offline/KeepaliveTimeoutListenerForPlatform.java b/src/main/java/com/genersoft/iot/vmp/gb28181/event/offline/KeepaliveTimeoutListenerForPlatform.java
index 0999736..f0680a7 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/event/offline/KeepaliveTimeoutListenerForPlatform.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/event/offline/KeepaliveTimeoutListenerForPlatform.java
@@ -38,7 +38,7 @@
public void onMessage(Message message, byte[] pattern) {
// 鑾峰彇澶辨晥鐨刱ey
String expiredKey = message.toString();
- logger.info(expiredKey);
+ logger.debug(expiredKey);
if(!expiredKey.startsWith(VideoManagerConstants.PLATFORM_KEEPLIVEKEY_PREFIX)){
logger.debug("鏀跺埌redis杩囨湡鐩戝惉锛屼絾寮�澶翠笉鏄�"+VideoManagerConstants.PLATFORM_KEEPLIVEKEY_PREFIX+"锛屽拷鐣�");
return;
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 dfc6c16..ca85e3c 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
@@ -1,8 +1,6 @@
package com.genersoft.iot.vmp.gb28181.transmit.cmd.impl;
import java.text.ParseException;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
import javax.sip.*;
import javax.sip.address.SipURI;
@@ -10,11 +8,11 @@
import javax.sip.header.ViaHeader;
import javax.sip.message.Request;
-import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.genersoft.iot.vmp.common.StreamInfo;
-import com.genersoft.iot.vmp.conf.MediaServerConfig;
+import com.genersoft.iot.vmp.conf.MediaConfig;
+import com.genersoft.iot.vmp.media.zlm.ZLMServerConfig;
import com.genersoft.iot.vmp.gb28181.event.SipSubscribe;
import com.genersoft.iot.vmp.media.zlm.ZLMHttpHookSubscribe;
import com.genersoft.iot.vmp.media.zlm.ZLMRESTfulUtils;
@@ -82,13 +80,13 @@
@Autowired
private ZLMRESTfulUtils zlmresTfulUtils;
- @Value("${media.rtp.enable}")
- private boolean rtpEnable;
+ @Autowired
+ private MediaConfig mediaConfig;
- @Value("${media.seniorSdp}")
+ @Value("${userSettings.seniorSdp}")
private boolean seniorSdp;
- @Value("${media.autoApplyPlay}")
+ @Value("${userSettings.autoApplyPlay}")
private boolean autoApplyPlay;
@Value("${userSettings.waitTrack}")
@@ -353,20 +351,20 @@
try {
if (device == null) return;
String ssrc = streamSession.createPlaySsrc();
- if (rtpEnable) {
+ if (mediaConfig.isRtpEnable()) {
streamId = String.format("gb_play_%s_%s", device.getDeviceId(), channelId);
}else {
streamId = String.format("%08x", Integer.parseInt(ssrc)).toUpperCase();
}
String streamMode = device.getStreamMode().toUpperCase();
- MediaServerConfig mediaInfo = redisCatchStorage.getMediaInfo();
+ ZLMServerConfig mediaInfo = redisCatchStorage.getMediaInfo();
if (mediaInfo == null) {
logger.warn("鐐规挱鏃跺彂鐜癦LM灏氭湭杩炴帴...");
return;
}
String mediaPort = null;
// 浣跨敤鍔ㄦ�乽dp绔彛
- if (rtpEnable) {
+ if (mediaConfig.isRtpEnable()) {
mediaPort = zlmrtpServerFactory.createRTPServer(streamId) + "";
}else {
mediaPort = mediaInfo.getRtpProxyPort();
@@ -470,7 +468,7 @@
public void playbackStreamCmd(Device device, String channelId, String startTime, String endTime, ZLMHttpHookSubscribe.Event event
, SipSubscribe.Event errorEvent) {
try {
- MediaServerConfig mediaInfo = redisCatchStorage.getMediaInfo();
+ ZLMServerConfig mediaInfo = redisCatchStorage.getMediaInfo();
String ssrc = streamSession.createPlayBackSsrc();
String streamId = String.format("%08x", Integer.parseInt(ssrc)).toUpperCase();
// 娣诲姞璁㈤槄
@@ -495,7 +493,7 @@
+DateUtil.yyyy_MM_dd_HH_mm_ssToTimestamp(endTime) +"\r\n");
String mediaPort = null;
// 浣跨敤鍔ㄦ�乽dp绔彛
- if (rtpEnable) {
+ if (mediaConfig.isRtpEnable()) {
mediaPort = zlmrtpServerFactory.createRTPServer(streamId) + "";
}else {
mediaPort = mediaInfo.getRtpProxyPort();
@@ -1445,7 +1443,7 @@
@Override
public void closeRTPServer(Device device, String channelId) {
- if (rtpEnable) {
+ if (mediaConfig.isRtpEnable()) {
String streamId = String.format("gb_play_%s_%s", device.getDeviceId(), channelId);
zlmrtpServerFactory.closeRTPServer(streamId);
}
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommanderFroPlatform.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommanderFroPlatform.java
index cb99c3c..c781a09 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommanderFroPlatform.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommanderFroPlatform.java
@@ -1,5 +1,6 @@
package com.genersoft.iot.vmp.gb28181.transmit.cmd.impl;
+import com.genersoft.iot.vmp.conf.MediaConfig;
import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel;
import com.genersoft.iot.vmp.gb28181.bean.ParentPlatform;
import com.genersoft.iot.vmp.gb28181.bean.ParentPlatformCatch;
@@ -62,9 +63,6 @@
@Autowired
@Qualifier(value="udpSipProvider")
private SipProvider udpSipProvider;
-
- @Value("${media.rtp.enable}")
- private boolean rtpEnable;
@Override
public boolean register(ParentPlatform parentPlatform, SipSubscribe.Event errorEvent , SipSubscribe.Event okEvent) {
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 43be89d..f2a2dec 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
@@ -11,7 +11,7 @@
import javax.sip.message.Request;
import javax.sip.message.Response;
-import com.genersoft.iot.vmp.conf.MediaServerConfig;
+import com.genersoft.iot.vmp.media.zlm.ZLMServerConfig;
import com.genersoft.iot.vmp.gb28181.bean.*;
import com.genersoft.iot.vmp.gb28181.transmit.cmd.impl.SIPCommander;
import com.genersoft.iot.vmp.gb28181.transmit.cmd.impl.SIPCommanderFroPlatform;
@@ -187,7 +187,7 @@
sendRtpItem.setStatus(1);
redisCatchStorage.updateSendRTPSever(sendRtpItem);
// TODO 娣诲姞瀵箃cp鐨勬敮鎸�
- MediaServerConfig mediaInfo = redisCatchStorage.getMediaInfo();
+ 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");
@@ -246,7 +246,7 @@
sendRtpItem.setStatus(1);
redisCatchStorage.updateSendRTPSever(sendRtpItem);
// TODO 娣诲姞瀵箃cp鐨勬敮鎸�
- MediaServerConfig mediaInfo = redisCatchStorage.getMediaInfo();
+ 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");
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/RegisterRequestProcessor.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/RegisterRequestProcessor.java
index 7ad18c1..a4d7816 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/RegisterRequestProcessor.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/RegisterRequestProcessor.java
@@ -17,7 +17,9 @@
import javax.sip.message.Response;
import com.genersoft.iot.vmp.gb28181.bean.WvpSipDate;
+import gov.nist.javax.sip.RequestEventExt;
import gov.nist.javax.sip.header.SIPDateHeader;
+import gov.nist.javax.sip.message.SIPRequest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.util.StringUtils;
@@ -59,7 +61,9 @@
@Override
public void process(RequestEvent evt) {
try {
- logger.info("鏀跺埌娉ㄥ唽璇锋眰锛屽紑濮嬪鐞�");
+ RequestEventExt evtExt = (RequestEventExt)evt;
+ String requestAddress = evtExt.getRemoteIpAddress() + ":" + evtExt.getRemotePort();
+ logger.info("[{}] 鏀跺埌娉ㄥ唽璇锋眰锛屽紑濮嬪鐞�", requestAddress);
Request request = evt.getRequest();
Response response = null;
@@ -78,9 +82,9 @@
if (authorhead == null || !passwordCorrect) {
if (authorhead == null) {
- logger.info("鏈惡甯︽巿鏉冨ご 鍥炲401");
+ logger.info("[{}] 鏈惡甯︽巿鏉冨ご 鍥炲401", requestAddress);
} else if (!passwordCorrect) {
- logger.info("瀵嗙爜閿欒 鍥炲401");
+ logger.info("[{}] 瀵嗙爜閿欒 鍥炲401", requestAddress);
}
response = getMessageFactory().createResponse(Response.UNAUTHORIZED, request);
new DigestServerAuthenticationHelper().generateChallenge(getHeaderFactory(), response, sipConfig.getSipDomain());
@@ -147,7 +151,7 @@
// 淇濆瓨鍒皉edis
// 涓嬪彂catelog鏌ヨ鐩綍
if (registerFlag == 1 ) {
- logger.info("娉ㄥ唽鎴愬姛! deviceId:" + device.getDeviceId());
+ logger.info("[{}] 娉ㄥ唽鎴愬姛! deviceId:" + device.getDeviceId(), requestAddress);
// boolean exists = storager.exists(device.getDeviceId());
device.setRegisterTimeMillis(System.currentTimeMillis());
storager.updateDevice(device);
@@ -158,7 +162,7 @@
handler.onRegister(device);
//}
} else if (registerFlag == 2) {
- logger.info("娉ㄩ攢鎴愬姛! deviceId:" + device.getDeviceId());
+ logger.info("[{}] 娉ㄩ攢鎴愬姛! deviceId:" + device.getDeviceId(), requestAddress);
publisher.outlineEventPublish(device.getDeviceId(), VideoManagerConstants.EVENT_OUTLINE_UNREGISTER);
}
} catch (SipException | InvalidArgumentException | NoSuchAlgorithmException | ParseException e) {
diff --git a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHTTPProxyController.java b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHTTPProxyController.java
index b7e0e9a..05d10b5 100644
--- a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHTTPProxyController.java
+++ b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHTTPProxyController.java
@@ -1,6 +1,6 @@
package com.genersoft.iot.vmp.media.zlm;
-import com.genersoft.iot.vmp.conf.MediaServerConfig;
+import com.genersoft.iot.vmp.conf.MediaConfig;
import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
@@ -18,14 +18,11 @@
// private final static Logger logger = LoggerFactory.getLogger(ZLMHTTPProxyController.class);
- // @Autowired
- // private IVideoManagerStorager storager;
-
@Autowired
private IRedisCatchStorage redisCatchStorage;
- @Value("${media.port}")
- private int mediaHttpPort;
+ @Autowired
+ private MediaConfig mediaConfig;
@ResponseBody
@RequestMapping(value = "/**/**/**", produces = "application/json;charset=UTF-8")
@@ -34,10 +31,10 @@
if (redisCatchStorage.getMediaInfo() == null) {
return "鏈帴鍏ユ祦濯掍綋";
}
- MediaServerConfig mediaInfo = redisCatchStorage.getMediaInfo();
+ ZLMServerConfig mediaInfo = redisCatchStorage.getMediaInfo();
String requestURI = String.format("http://%s:%s%s?%s&%s",
mediaInfo.getLocalIP(),
- mediaHttpPort,
+ mediaConfig.getHttpPort(),
request.getRequestURI().replace("/zlm",""),
mediaInfo.getHookAdminParams(),
request.getQueryString()
diff --git a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java
index fe84f70..7fa0a47 100644
--- a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java
+++ b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java
@@ -6,7 +6,7 @@
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.genersoft.iot.vmp.common.StreamInfo;
-import com.genersoft.iot.vmp.conf.MediaServerConfig;
+import com.genersoft.iot.vmp.conf.MediaConfig;
import com.genersoft.iot.vmp.gb28181.bean.Device;
import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
import com.genersoft.iot.vmp.storager.IVideoManagerStorager;
@@ -53,23 +53,20 @@
@Autowired
private IRedisCatchStorage redisCatchStorage;
+ @Autowired
+ private ZLMServerManger zlmServerManger;
+
@Autowired
private ZLMMediaListManager zlmMediaListManager;
@Autowired
private ZLMHttpHookSubscribe subscribe;
- @Value("${media.autoApplyPlay}")
+ @Value("${userSettings.autoApplyPlay}")
private boolean autoApplyPlay;
- @Value("${media.ip}")
- private String mediaIp;
-
- @Value("${media.wanIp}")
- private String mediaWanIp;
-
- @Value("${media.port}")
- private int mediaPort;
+ @Autowired
+ private MediaConfig mediaConfig;
/**
* 娴侀噺缁熻浜嬩欢锛屾挱鏀惧櫒鎴栨帹娴佸櫒鏂紑鏃跺苟涓旇�楃敤娴侀噺瓒呰繃鐗瑰畾闃堝�兼椂浼氳Е鍙戞浜嬩欢锛岄槇鍊奸�氳繃閰嶇疆鏂囦欢general.flowThreshold閰嶇疆锛涙浜嬩欢瀵瑰洖澶嶄笉鏁忔劅銆�
@@ -388,12 +385,8 @@
subscribe.response(json);
}
}
-
- MediaServerConfig mediaServerConfig = JSON.toJavaObject(json, MediaServerConfig.class);
- mediaServerConfig.setWanIp(StringUtils.isEmpty(mediaWanIp)? mediaIp: mediaWanIp);
- mediaServerConfig.setLocalIP(mediaIp);
- redisCatchStorage.updateMediaInfo(mediaServerConfig);
-
+ ZLMServerConfig ZLMServerConfig = JSON.toJavaObject(json, ZLMServerConfig.class);
+ zlmServerManger.updateServerCatch(ZLMServerConfig);
// 閲嶆柊鍙戣捣浠g悊
JSONObject ret = new JSONObject();
diff --git a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMMediaListManager.java b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMMediaListManager.java
index a50b170..77add28 100644
--- a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMMediaListManager.java
+++ b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMMediaListManager.java
@@ -1,9 +1,7 @@
package com.genersoft.iot.vmp.media.zlm;
-import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
-import com.genersoft.iot.vmp.conf.MediaServerConfig;
import com.genersoft.iot.vmp.media.zlm.dto.StreamProxyItem;
import com.genersoft.iot.vmp.media.zlm.dto.StreamPushItem;
import com.genersoft.iot.vmp.gb28181.bean.GbStream;
@@ -126,7 +124,7 @@
public void clearAllSessions() {
logger.info("娓呯┖鎵�鏈夊浗鏍囩浉鍏崇殑session");
JSONObject allSessionJSON = zlmresTfulUtils.getAllSession();
- MediaServerConfig mediaInfo = redisCatchStorage.getMediaInfo();
+ ZLMServerConfig mediaInfo = redisCatchStorage.getMediaInfo();
HashSet<String> allLocalPorts = new HashSet();
if (allSessionJSON.getInteger("code") == 0) {
JSONArray data = allSessionJSON.getJSONArray("data");
diff --git a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRESTfulUtils.java b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRESTfulUtils.java
index a864f3c..b41ef6d 100644
--- a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRESTfulUtils.java
+++ b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRESTfulUtils.java
@@ -2,10 +2,13 @@
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
+import com.genersoft.iot.vmp.conf.MediaConfig;
import okhttp3.*;
+import org.checkerframework.checker.units.qual.A;
import org.jetbrains.annotations.NotNull;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@@ -20,14 +23,8 @@
private final static Logger logger = LoggerFactory.getLogger(ZLMRESTfulUtils.class);
- @Value("${media.ip}")
- private String mediaIp;
-
- @Value("${media.port}")
- private int mediaPort;
-
- @Value("${media.secret}")
- private String mediaSecret;
+ @Autowired
+ private MediaConfig mediaConfig;
public interface RequestCallback{
void run(JSONObject response);
@@ -35,12 +32,12 @@
public JSONObject sendPost(String api, Map<String, Object> param, RequestCallback callback) {
OkHttpClient client = new OkHttpClient();
- String url = String.format("http://%s:%s/index/api/%s", mediaIp, mediaPort, api);
+ String url = String.format("http://%s:%s/index/api/%s", mediaConfig.getIp(), mediaConfig.getHttpPort(), api);
JSONObject responseJSON = null;
logger.debug(url);
FormBody.Builder builder = new FormBody.Builder();
- builder.add("secret",mediaSecret);
+ builder.add("secret",mediaConfig.getSecret());
if (param != null && param.keySet().size() > 0) {
for (String key : param.keySet()){
if (param.get(key) != null) {
diff --git a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRTPServerFactory.java b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRTPServerFactory.java
index 430c690..63102b1 100644
--- a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRTPServerFactory.java
+++ b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRTPServerFactory.java
@@ -2,6 +2,7 @@
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
+import com.genersoft.iot.vmp.conf.MediaConfig;
import com.genersoft.iot.vmp.gb28181.bean.SendRtpItem;
import com.genersoft.iot.vmp.gb28181.session.SsrcUtil;
import org.slf4j.Logger;
@@ -18,8 +19,8 @@
private Logger logger = LoggerFactory.getLogger("ZLMRTPServerFactory");
- @Value("${media.rtp.portRange}")
- private String portRange;
+ @Autowired
+ private MediaConfig mediaConfig;
@Autowired
private ZLMRESTfulUtils zlmresTfulUtils;
@@ -103,7 +104,7 @@
private int getPortFromportRange() {
if (currentPort == 0) {
- String[] portRangeStrArray = portRange.split(",");
+ String[] portRangeStrArray = mediaConfig.getRtpPortRange().split(",");
portRangeArray[0] = Integer.parseInt(portRangeStrArray[0]);
portRangeArray[1] = Integer.parseInt(portRangeStrArray[1]);
}
diff --git a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRunner.java b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRunner.java
index 2bbc1be..2570c1b 100644
--- a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRunner.java
+++ b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRunner.java
@@ -3,7 +3,8 @@
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
-import com.genersoft.iot.vmp.conf.MediaServerConfig;
+import com.genersoft.iot.vmp.conf.MediaConfig;
+import com.genersoft.iot.vmp.conf.SipConfig;
import com.genersoft.iot.vmp.media.zlm.dto.StreamProxyItem;
import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
//import com.genersoft.iot.vmp.storager.IVideoManagerStorager;
@@ -34,35 +35,19 @@
@Autowired
private IRedisCatchStorage redisCatchStorage;
- @Value("${media.ip}")
- private String mediaIp;
+ @Autowired
+ private MediaConfig mediaConfig;
- @Value("${media.wanIp}")
- private String mediaWanIp;
-
- @Value("${media.hookIp}")
- private String mediaHookIp;
-
- @Value("${media.port}")
- private int mediaPort;
-
- @Value("${media.secret}")
- private String mediaSecret;
-
- @Value("${media.streamNoneReaderDelayMS}")
- private String streamNoneReaderDelayMS;
-
- @Value("${sip.ip}")
- private String sipIP;
+ @Autowired
+ private SipConfig sipConfig;
@Value("${server.port}")
private String serverPort;
- @Value("${media.autoConfig}")
- private boolean autoConfig;
-
@Value("${server.ssl.enabled}")
private boolean sslEnabled;
+
+ private boolean startGetMedia = false;
@Autowired
private ZLMRESTfulUtils zlmresTfulUtils;
@@ -74,32 +59,37 @@
private ZLMHttpHookSubscribe hookSubscribe;
@Autowired
+ private ZLMServerManger zlmServerManger;
+
+ @Autowired
private IStreamProxyService streamProxyService;
@Override
public void run(String... strings) throws Exception {
// 璁㈤槄 zlm鍚姩浜嬩欢
hookSubscribe.addSubscribe(ZLMHttpHookSubscribe.HookType.on_server_started,null,(response)->{
- MediaServerConfig mediaServerConfig = JSONObject.toJavaObject(response, MediaServerConfig.class);
- zLmRunning(mediaServerConfig);
+ ZLMServerConfig ZLMServerConfig = JSONObject.toJavaObject(response, ZLMServerConfig.class);
+ zLmRunning(ZLMServerConfig);
});
// 鑾峰彇zlm淇℃伅
logger.info("绛夊緟zlm鎺ュ叆...");
- MediaServerConfig mediaServerConfig = getMediaServerConfig();
+ startGetMedia = true;
+ ZLMServerConfig ZLMServerConfig = getMediaServerConfig();
- if (mediaServerConfig != null) {
- zLmRunning(mediaServerConfig);
+ if (ZLMServerConfig != null) {
+ zLmRunning(ZLMServerConfig);
}
}
- public MediaServerConfig getMediaServerConfig() {
+ public ZLMServerConfig getMediaServerConfig() {
+ if (!startGetMedia) return null;
JSONObject responseJSON = zlmresTfulUtils.getMediaServerConfig();
- MediaServerConfig mediaServerConfig = null;
+ ZLMServerConfig ZLMServerConfig = null;
if (responseJSON != null) {
JSONArray data = responseJSON.getJSONArray("data");
if (data != null && data.size() > 0) {
- mediaServerConfig = JSON.parseObject(JSON.toJSONString(data.get(0)), MediaServerConfig.class);
+ ZLMServerConfig = JSON.parseObject(JSON.toJSONString(data.get(0)), ZLMServerConfig.class);
}
} else {
@@ -109,20 +99,18 @@
} catch (InterruptedException e) {
e.printStackTrace();
}
- mediaServerConfig = getMediaServerConfig();
+ ZLMServerConfig = getMediaServerConfig();
}
- return mediaServerConfig;
+ return ZLMServerConfig;
}
private void saveZLMConfig() {
logger.info("璁剧疆zlm...");
- if (StringUtils.isEmpty(mediaHookIp)) {
- mediaHookIp = sipIP;
- }
+ if (StringUtils.isEmpty(mediaConfig.getHookIp())) mediaConfig.setHookIp(sipConfig.getSipIp());
String protocol = sslEnabled ? "https" : "http";
- String hookPrex = String.format("%s://%s:%s/index/hook", protocol, mediaHookIp, serverPort);
+ String hookPrex = String.format("%s://%s:%s/index/hook", protocol, mediaConfig.getHookIp(), serverPort);
Map<String, Object> param = new HashMap<>();
- param.put("api.secret",mediaSecret); // -profile:v Baseline
+ param.put("api.secret",mediaConfig.getSecret()); // -profile:v Baseline
param.put("ffmpeg.cmd","%s -fflags nobuffer -rtsp_transport tcp -i %s -c:a aac -strict -2 -ar 44100 -ab 48k -c:v libx264 -f flv %s");
param.put("hook.enable","1");
param.put("hook.on_flow_report","");
@@ -139,7 +127,7 @@
param.put("hook.on_stream_none_reader",String.format("%s/on_stream_none_reader", hookPrex));
param.put("hook.on_stream_not_found",String.format("%s/on_stream_not_found", hookPrex));
param.put("hook.timeoutSec","20");
- param.put("general.streamNoneReaderDelayMS",streamNoneReaderDelayMS);
+ param.put("general.streamNoneReaderDelayMS",mediaConfig.getStreamNoneReaderDelayMS());
JSONObject responseJSON = zlmresTfulUtils.setServerConfig(param);
@@ -153,17 +141,12 @@
/**
* zlm 杩炴帴鎴愬姛鎴栬�厇lm閲嶅惎鍚�
*/
- private void zLmRunning(MediaServerConfig mediaServerConfig){
- logger.info( "[ id: " + mediaServerConfig.getGeneralMediaServerId() + "] zlm鎺ュ叆鎴愬姛...");
- if (autoConfig) saveZLMConfig();
- MediaServerConfig mediaInfo = redisCatchStorage.getMediaInfo();
- if (mediaInfo != null && System.currentTimeMillis() - mediaInfo.getUpdateTime() < 50){
- logger.info("[ id: " + mediaServerConfig.getGeneralMediaServerId() + "]zlm鍒氬垰鏇存柊锛屽拷鐣ヨ繖娆℃洿鏂�");
- return;
- }
- mediaServerConfig.setLocalIP(mediaIp);
- mediaServerConfig.setWanIp(StringUtils.isEmpty(mediaWanIp)? mediaIp: mediaWanIp);
- redisCatchStorage.updateMediaInfo(mediaServerConfig);
+ private void zLmRunning(ZLMServerConfig zlmServerConfig){
+ logger.info( "[ id: " + zlmServerConfig.getGeneralMediaServerId() + "] zlm鎺ュ叆鎴愬姛...");
+ // 鍏抽棴寰幆鑾峰彇zlm閰嶇疆
+ startGetMedia = false;
+ if (mediaConfig.getAutoConfig()) saveZLMConfig();
+ zlmServerManger.updateServerCatch(zlmServerConfig);
// 娓呯┖鎵�鏈塻ession
// zlmMediaListManager.clearAllSessions();
diff --git a/src/main/java/com/genersoft/iot/vmp/conf/MediaServerConfig.java b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMServerConfig.java
similarity index 97%
rename from src/main/java/com/genersoft/iot/vmp/conf/MediaServerConfig.java
rename to src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMServerConfig.java
index e9d158c..b20437b 100644
--- a/src/main/java/com/genersoft/iot/vmp/conf/MediaServerConfig.java
+++ b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMServerConfig.java
@@ -1,8 +1,8 @@
-package com.genersoft.iot.vmp.conf;
+package com.genersoft.iot.vmp.media.zlm;
import com.alibaba.fastjson.annotation.JSONField;
-public class MediaServerConfig {
+public class ZLMServerConfig {
@JSONField(name = "api.apiDebug")
private String apiDebug;
@@ -156,6 +156,9 @@
@JSONField(name = "rtmp.port")
private String rtmpPort;
+
+ @JSONField(name = "rtmp.sslport")
+ private String rtmpSslPort;
@JSONField(name = "rtp.audioMtuSize")
private String rtpAudioMtuSize;
@@ -749,4 +752,12 @@
public void setGeneralMediaServerId(String generalMediaServerId) {
this.generalMediaServerId = generalMediaServerId;
}
+
+ public String getRtmpSslPort() {
+ return rtmpSslPort;
+ }
+
+ public void setRtmpSslPort(String rtmpSslPort) {
+ this.rtmpSslPort = rtmpSslPort;
+ }
}
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
new file mode 100644
index 0000000..e73ee34
--- /dev/null
+++ b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMServerManger.java
@@ -0,0 +1,45 @@
+package com.genersoft.iot.vmp.media.zlm;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import com.genersoft.iot.vmp.conf.MediaConfig;
+import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.springframework.util.StringUtils;
+
+@Component
+public class ZLMServerManger {
+
+ @Autowired
+ private IRedisCatchStorage redisCatchStorage;
+
+ @Autowired
+ private MediaConfig mediaConfig;
+
+ public void updateServerCatch(ZLMServerConfig zlmServerConfig) {
+
+ zlmServerConfig.setLocalIP(mediaConfig.getIp());
+ zlmServerConfig.setWanIp(StringUtils.isEmpty(mediaConfig.getWanIp())? mediaConfig.getIp(): mediaConfig.getWanIp());
+ zlmServerConfig.setHttpPort(mediaConfig.getHttpPort());
+
+ if(!StringUtils.isEmpty(mediaConfig.getHttpSSlPort()))
+ zlmServerConfig.setHttpSSLport(mediaConfig.getHttpSSlPort());
+
+ if(!StringUtils.isEmpty(mediaConfig.getRtspPort()))
+ zlmServerConfig.setRtspPort(mediaConfig.getRtspPort());
+
+ if(!StringUtils.isEmpty(mediaConfig.getRtspSSLPort()))
+ zlmServerConfig.setRtspSSlport(mediaConfig.getRtspSSLPort());
+
+ if(!StringUtils.isEmpty(mediaConfig.getRtmpPort()))
+ zlmServerConfig.setRtmpPort(mediaConfig.getRtmpPort());
+
+ if(!StringUtils.isEmpty(mediaConfig.getRtmpSSlPort()))
+ zlmServerConfig.setRtmpSslPort(mediaConfig.getRtmpSSlPort());
+
+ if(!StringUtils.isEmpty(mediaConfig.getRtpProxyPort()))
+ zlmServerConfig.setRtpProxyPort(mediaConfig.getRtpProxyPort());
+
+ redisCatchStorage.updateMediaInfo(zlmServerConfig);
+ }
+}
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 9154c09..ab23a11 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
@@ -4,7 +4,7 @@
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.genersoft.iot.vmp.common.StreamInfo;
-import com.genersoft.iot.vmp.conf.MediaServerConfig;
+import com.genersoft.iot.vmp.media.zlm.ZLMServerConfig;
import com.genersoft.iot.vmp.media.zlm.ZLMRESTfulUtils;
import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
import com.genersoft.iot.vmp.storager.IVideoManagerStorager;
@@ -28,7 +28,7 @@
@Override
public StreamInfo getStreamInfoByAppAndStream(String app, String stream, JSONArray tracks) {
- MediaServerConfig mediaInfo = redisCatchStorage.getMediaInfo();
+ ZLMServerConfig mediaInfo = redisCatchStorage.getMediaInfo();
StreamInfo streamInfoResult = new StreamInfo();
streamInfoResult.setStreamId(stream);
streamInfoResult.setApp(app);
diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/StreamProxyServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/StreamProxyServiceImpl.java
index c6286c5..b27970a 100644
--- a/src/main/java/com/genersoft/iot/vmp/service/impl/StreamProxyServiceImpl.java
+++ b/src/main/java/com/genersoft/iot/vmp/service/impl/StreamProxyServiceImpl.java
@@ -1,7 +1,7 @@
package com.genersoft.iot.vmp.service.impl;
import com.alibaba.fastjson.JSONObject;
-import com.genersoft.iot.vmp.conf.MediaServerConfig;
+import com.genersoft.iot.vmp.media.zlm.ZLMServerConfig;
import com.genersoft.iot.vmp.media.zlm.ZLMRESTfulUtils;
import com.genersoft.iot.vmp.media.zlm.dto.StreamProxyItem;
import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
@@ -41,7 +41,7 @@
@Override
public String save(StreamProxyItem param) {
- MediaServerConfig mediaInfo = redisCatchStorage.getMediaInfo();
+ ZLMServerConfig mediaInfo = redisCatchStorage.getMediaInfo();
String dstUrl = String.format("rtmp://%s:%s/%s/%s", "127.0.0.1", mediaInfo.getRtmpPort(), param.getApp(),
param.getStream() );
param.setDst_url(dstUrl);
diff --git a/src/main/java/com/genersoft/iot/vmp/storager/IRedisCatchStorage.java b/src/main/java/com/genersoft/iot/vmp/storager/IRedisCatchStorage.java
index 978ddc3..be9fdff 100644
--- a/src/main/java/com/genersoft/iot/vmp/storager/IRedisCatchStorage.java
+++ b/src/main/java/com/genersoft/iot/vmp/storager/IRedisCatchStorage.java
@@ -1,7 +1,7 @@
package com.genersoft.iot.vmp.storager;
import com.genersoft.iot.vmp.common.StreamInfo;
-import com.genersoft.iot.vmp.conf.MediaServerConfig;
+import com.genersoft.iot.vmp.media.zlm.ZLMServerConfig;
import com.genersoft.iot.vmp.gb28181.bean.ParentPlatform;
import com.genersoft.iot.vmp.gb28181.bean.ParentPlatformCatch;
import com.genersoft.iot.vmp.gb28181.bean.SendRtpItem;
@@ -41,16 +41,16 @@
/**
* 鏇存柊娴佸獟浣撲俊鎭�
- * @param mediaServerConfig
+ * @param ZLMServerConfig
* @return
*/
- boolean updateMediaInfo(MediaServerConfig mediaServerConfig);
+ boolean updateMediaInfo(ZLMServerConfig ZLMServerConfig);
/**
* 鑾峰彇娴佸獟浣撲俊鎭�
* @return
*/
- MediaServerConfig getMediaInfo();
+ ZLMServerConfig getMediaInfo();
Map<String, StreamInfo> queryPlayByDeviceId(String deviceId);
diff --git a/src/main/java/com/genersoft/iot/vmp/storager/impl/RedisCatchStorageImpl.java b/src/main/java/com/genersoft/iot/vmp/storager/impl/RedisCatchStorageImpl.java
index 74d6779..0318772 100644
--- a/src/main/java/com/genersoft/iot/vmp/storager/impl/RedisCatchStorageImpl.java
+++ b/src/main/java/com/genersoft/iot/vmp/storager/impl/RedisCatchStorageImpl.java
@@ -2,7 +2,7 @@
import com.genersoft.iot.vmp.common.StreamInfo;
import com.genersoft.iot.vmp.common.VideoManagerConstants;
-import com.genersoft.iot.vmp.conf.MediaServerConfig;
+import com.genersoft.iot.vmp.media.zlm.ZLMServerConfig;
import com.genersoft.iot.vmp.gb28181.bean.*;
import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
import com.genersoft.iot.vmp.storager.dao.DeviceChannelMapper;
@@ -86,13 +86,13 @@
/**
* 鏇存柊娴佸獟浣撲俊鎭�
- * @param mediaServerConfig
+ * @param ZLMServerConfig
* @return
*/
@Override
- public boolean updateMediaInfo(MediaServerConfig mediaServerConfig) {
- mediaServerConfig.setUpdateTime(System.currentTimeMillis());
- return redis.set(VideoManagerConstants.MEDIA_SERVER_PREFIX,mediaServerConfig);
+ public boolean updateMediaInfo(ZLMServerConfig ZLMServerConfig) {
+ ZLMServerConfig.setUpdateTime(System.currentTimeMillis());
+ return redis.set(VideoManagerConstants.MEDIA_SERVER_PREFIX, ZLMServerConfig);
}
/**
@@ -100,8 +100,8 @@
* @return
*/
@Override
- public MediaServerConfig getMediaInfo() {
- return (MediaServerConfig)redis.get(VideoManagerConstants.MEDIA_SERVER_PREFIX);
+ public ZLMServerConfig getMediaInfo() {
+ return (ZLMServerConfig)redis.get(VideoManagerConstants.MEDIA_SERVER_PREFIX);
}
@Override
diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/play/PlayController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/play/PlayController.java
index 874aa5a..dce0732 100644
--- a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/play/PlayController.java
+++ b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/play/PlayController.java
@@ -1,7 +1,7 @@
package com.genersoft.iot.vmp.vmanager.gb28181.play;
import com.genersoft.iot.vmp.common.StreamInfo;
-import com.genersoft.iot.vmp.conf.MediaServerConfig;
+import com.genersoft.iot.vmp.media.zlm.ZLMServerConfig;
import com.genersoft.iot.vmp.gb28181.bean.Device;
import com.genersoft.iot.vmp.gb28181.transmit.callback.DeferredResultHolder;
import com.genersoft.iot.vmp.gb28181.transmit.callback.RequestMessage;
@@ -162,7 +162,7 @@
logger.warn("瑙嗛杞爜API璋冪敤澶辫触锛�, 瑙嗛娴佸凡鍋滄鎺ㄦ祦!");
return new ResponseEntity<String>("鎺ㄦ祦淇℃伅鍦ㄦ祦濯掍綋涓笉瀛樺湪, 瑙嗛娴佸彲鑳藉凡鍋滄鎺ㄦ祦", HttpStatus.OK);
} else {
- MediaServerConfig mediaInfo = redisCatchStorage.getMediaInfo();
+ ZLMServerConfig mediaInfo = redisCatchStorage.getMediaInfo();
String dstUrl = String.format("rtmp://%s:%s/convert/%s", "127.0.0.1", mediaInfo.getRtmpPort(),
streamId );
String srcUrl = String.format("rtsp://%s:%s/rtp/%s", "127.0.0.1", mediaInfo.getRtspPort(), streamId);
diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml
index cdab711..a0e8cc5 100644
--- a/src/main/resources/application-dev.yml
+++ b/src/main/resources/application-dev.yml
@@ -67,17 +67,25 @@
# [鍙�塢 zlm鏈嶅姟鍣ㄧ殑hook鎵�浣跨敤鐨処P, 榛樿浣跨敤sip.ip
hookIp:
# [蹇呴』淇敼] zlm鏈嶅姟鍣ㄧ殑http.port
- port: 80
+ 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琛ㄧず姘镐笉鑷姩鍏抽棴,鍗� 鍏抽棴鎸夐渶鎷夋祦
- # [鍙�塢 鑷姩鐐规挱锛� 浣跨敤鍥哄畾娴佸湴鍧�杩涜鎾斁鏃讹紝濡傛灉鏈偣鎾垯鑷姩杩涜鐐规挱, 闇�瑕乺tp.enable=true
- autoApplyPlay: false
- # [鍙�塢 閮ㄥ垎璁惧闇�瑕佹墿灞昐DP锛岄渶瑕佹墦寮�姝よ缃�
- seniorSdp: false
# 鍚敤澶氱鍙fā寮�, 澶氱鍙fā寮忎娇鐢ㄧ鍙e尯鍒嗘瘡璺祦锛屽吋瀹规�ф洿濂姐�� 鍗曠鍙d娇鐢ㄦ祦鐨剆src鍖哄垎锛� 鐐规挱瓒呮椂寤鸿浣跨敤澶氱鍙f祴璇�
rtp:
# [鍙�塢 鏄惁鍚敤澶氱鍙fā寮�, 寮�鍚悗浼氬湪portRange鑼冨洿鍐呴�夋嫨绔彛鐢ㄤ簬濯掍綋娴佷紶杈�
@@ -95,9 +103,13 @@
level:
com:
genersoft:
- iot: debug
+ iot: info
# [鏍规嵁涓氬姟闇�姹傞厤缃甝
userSettings:
+ # [鍙�塢 鑷姩鐐规挱锛� 浣跨敤鍥哄畾娴佸湴鍧�杩涜鎾斁鏃讹紝濡傛灉鏈偣鎾垯鑷姩杩涜鐐规挱, 闇�瑕乺tp.enable=true
+ autoApplyPlay: false
+ # [鍙�塢 閮ㄥ垎璁惧闇�瑕佹墿灞昐DP锛岄渶瑕佹墦寮�姝よ缃�
+ seniorSdp: false
# 淇濆瓨绉诲姩浣嶇疆鍘嗗彶杞ㄨ抗锛歵rue:淇濈暀鍘嗗彶鏁版嵁锛宖alse:浠呬繚鐣欐渶鍚庣殑浣嶇疆(榛樿)
savePositionHistory: false
# 鐐规挱绛夊緟瓒呮椂鏃堕棿,鍗曚綅锛氭绉�
--
Gitblit v1.8.0