From 81f9119da6a5472603abb7dc76609388942593b4 Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期一, 09 十一月 2020 13:33:00 +0800
Subject: [PATCH] 支持公网部署

---
 src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRunner.java                    |    5 +++++
 src/main/java/com/genersoft/iot/vmp/vmanager/play/PlayController.java           |    2 ++
 src/main/java/com/genersoft/iot/vmp/conf/MediaServerConfig.java                 |   11 ++++++++++-
 src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java |    4 ++--
 src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java          |   20 ++++++++++----------
 src/main/resources/application.yml                                              |    1 +
 6 files changed, 30 insertions(+), 13 deletions(-)

diff --git a/src/main/java/com/genersoft/iot/vmp/conf/MediaServerConfig.java b/src/main/java/com/genersoft/iot/vmp/conf/MediaServerConfig.java
index 8c101b4..76390e4 100644
--- a/src/main/java/com/genersoft/iot/vmp/conf/MediaServerConfig.java
+++ b/src/main/java/com/genersoft/iot/vmp/conf/MediaServerConfig.java
@@ -31,8 +31,9 @@
     @JSONField(name = "general.streamNoneReaderDelayMS")
     private String generalStreamNoneReaderDelayMS;
 
-    @JSONField(name = "general.localIP")
     private String localIP;
+
+    private String wanIp;
 
     @JSONField(name = "hls.fileBufSize")
     private String hlsFileBufSize;
@@ -719,4 +720,12 @@
     public void setShellPhell(String shellPhell) {
         this.shellPhell = shellPhell;
     }
+
+    public String getWanIp() {
+        return wanIp;
+    }
+
+    public void setWanIp(String wanIp) {
+        this.wanIp = wanIp;
+    }
 }
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 0f82eb6..2a2ffbc 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
@@ -285,9 +285,9 @@
 			//
 			StringBuffer content = new StringBuffer(200);
 	        content.append("v=0\r\n");
-	        content.append("o="+channelId+" 0 0 IN IP4 "+mediaInfo.getLocalIP()+"\r\n");
+	        content.append("o="+channelId+" 0 0 IN IP4 "+mediaInfo.getWanIp()+"\r\n");
 	        content.append("s=Play\r\n");
-	        content.append("c=IN IP4 "+mediaInfo.getLocalIP()+"\r\n");
+	        content.append("c=IN IP4 "+mediaInfo.getWanIp()+"\r\n");
 	        content.append("t=0 0\r\n");
 	        if("TCP-PASSIVE".equals(streamMode)) {
 	        	content.append("m=video "+ mediaPort +" TCP/RTP/AVP 96 98 97\r\n");
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 bb111a3..0c450a7 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
@@ -134,22 +134,22 @@
 		StreamInfo streamInfoForPlay = storager.queryPlayBySSRC(ssrc);
 		if ("rtp".equals(app) && streamInfoForPlay != null ) {
 			MediaServerConfig mediaInfo = storager.getMediaInfo();
-			streamInfoForPlay.setFlv(String.format("http://%s:%s/rtp/%s.flv", mediaInfo.getLocalIP(), mediaInfo.getHttpPort(), streamId));
-			streamInfoForPlay.setWs_flv(String.format("ws://%s:%s/rtp/%s.flv", mediaInfo.getLocalIP(), mediaInfo.getHttpPort(), streamId));
-			streamInfoForPlay.setRtmp(String.format("rtmp://%s:%s/rtp/%s", mediaInfo.getLocalIP(), mediaInfo.getRtmpPort(), streamId));
-			streamInfoForPlay.setHls(String.format("http://%s:%s/rtp/%s/hls.m3u8", mediaInfo.getLocalIP(), mediaInfo.getHttpPort(), streamId));
-			streamInfoForPlay.setRtsp(String.format("rtsp://%s:%s/rtp/%s", mediaInfo.getLocalIP(), mediaInfo.getRtspPort(), streamId));
+			streamInfoForPlay.setFlv(String.format("http://%s:%s/rtp/%s.flv", mediaInfo.getWanIp(), mediaInfo.getHttpPort(), streamId));
+			streamInfoForPlay.setWs_flv(String.format("ws://%s:%s/rtp/%s.flv", mediaInfo.getWanIp(), mediaInfo.getHttpPort(), streamId));
+			streamInfoForPlay.setRtmp(String.format("rtmp://%s:%s/rtp/%s", mediaInfo.getWanIp(), mediaInfo.getRtmpPort(), streamId));
+			streamInfoForPlay.setHls(String.format("http://%s:%s/rtp/%s/hls.m3u8", mediaInfo.getWanIp(), mediaInfo.getHttpPort(), streamId));
+			streamInfoForPlay.setRtsp(String.format("rtsp://%s:%s/rtp/%s", mediaInfo.getWanIp(), mediaInfo.getRtspPort(), streamId));
 			storager.startPlay(streamInfoForPlay);
 		}
 
 		StreamInfo streamInfoForPlayBack = storager.queryPlaybackBySSRC(ssrc);
 		if ("rtp".equals(app) && streamInfoForPlayBack != null ) {
 			MediaServerConfig mediaInfo = storager.getMediaInfo();
-			streamInfoForPlayBack.setFlv(String.format("http://%s:%s/rtp/%s.flv", mediaInfo.getLocalIP(), mediaInfo.getHttpPort(), streamId));
-			streamInfoForPlayBack.setWs_flv(String.format("ws://%s:%s/rtp/%s.flv", mediaInfo.getLocalIP(), mediaInfo.getHttpPort(), streamId));
-			streamInfoForPlayBack.setRtmp(String.format("rtmp://%s:%s/rtp/%s", mediaInfo.getLocalIP(), mediaInfo.getRtmpPort(), streamId));
-			streamInfoForPlayBack.setHls(String.format("http://%s:%s/rtp/%s/hls.m3u8", mediaInfo.getLocalIP(), mediaInfo.getHttpPort(), streamId));
-			streamInfoForPlayBack.setRtsp(String.format("rtsp://%s:%s/rtp/%s", mediaInfo.getLocalIP(), mediaInfo.getRtspPort(), streamId));
+			streamInfoForPlayBack.setFlv(String.format("http://%s:%s/rtp/%s.flv", mediaInfo.getWanIp(), mediaInfo.getHttpPort(), streamId));
+			streamInfoForPlayBack.setWs_flv(String.format("ws://%s:%s/rtp/%s.flv", mediaInfo.getWanIp(), mediaInfo.getHttpPort(), streamId));
+			streamInfoForPlayBack.setRtmp(String.format("rtmp://%s:%s/rtp/%s", mediaInfo.getWanIp(), mediaInfo.getRtmpPort(), streamId));
+			streamInfoForPlayBack.setHls(String.format("http://%s:%s/rtp/%s/hls.m3u8", mediaInfo.getWanIp(), mediaInfo.getHttpPort(), streamId));
+			streamInfoForPlayBack.setRtsp(String.format("rtsp://%s:%s/rtp/%s", mediaInfo.getWanIp(), mediaInfo.getRtspPort(), streamId));
 			storager.startPlayback(streamInfoForPlayBack);
 		}
 
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 5421206..fc519da 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
@@ -13,6 +13,7 @@
 import org.springframework.boot.CommandLineRunner;
 import org.springframework.core.annotation.Order;
 import org.springframework.stereotype.Component;
+import org.springframework.util.StringUtils;
 
 import java.io.IOException;
 import java.io.UnsupportedEncodingException;
@@ -31,6 +32,9 @@
 
     @Value("${media.ip}")
     private String mediaIp;
+
+    @Value("${media.wanIp}")
+    private String mediaWanIp;
 
     @Value("${media.port}")
     private int mediaPort;
@@ -75,6 +79,7 @@
             if (data != null && data.size() > 0) {
                 mediaServerConfig = JSON.parseObject(JSON.toJSONString(data.get(0)), MediaServerConfig.class);
                 mediaServerConfig.setLocalIP(mediaIp);
+                mediaServerConfig.setWanIp(StringUtils.isEmpty(mediaWanIp)? mediaIp: mediaWanIp);
             }
         } else {
             logger.error("getMediaServerConfig澶辫触, 1s鍚庨噸璇�");
diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/play/PlayController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/play/PlayController.java
index 780e950..978d152 100644
--- a/src/main/java/com/genersoft/iot/vmp/vmanager/play/PlayController.java
+++ b/src/main/java/com/genersoft/iot/vmp/vmanager/play/PlayController.java
@@ -42,6 +42,7 @@
 	public ResponseEntity<String> play(@PathVariable String deviceId, @PathVariable String channelId,
 	Integer getEncoding) {
 
+		if (getEncoding == null) getEncoding = 0;
 		Device device = storager.queryVideoDevice(deviceId);
 		StreamInfo streamInfo = storager.queryPlayByDevice(deviceId, channelId);
 
@@ -146,3 +147,4 @@
 		}
 	}
 }
+
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index ec49789..9d5e39c 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -41,6 +41,7 @@
 
 media: #zlm鏈嶅姟鍣ㄧ殑ip涓巋ttp绔彛, 閲嶇偣: 杩欐槸http绔彛
     ip: 192.168.1.44
+    wanIp:
     port: 80
     secret: 035c73f7-bb6b-4889-a715-d9eb2d1925cc
     streamNoneReaderDelayMS:  1800000  # 鏃犱汉瑙傜湅澶氫箙鑷姩鍏抽棴娴�

--
Gitblit v1.8.0