Commit 81f9119da6a5472603abb7dc76609388942593b4

Authored by 648540858
1 parent ce1aa613

支持公网部署

src/main/java/com/genersoft/iot/vmp/conf/MediaServerConfig.java
@@ -31,9 +31,10 @@ public class MediaServerConfig { @@ -31,9 +31,10 @@ public class MediaServerConfig {
31 @JSONField(name = "general.streamNoneReaderDelayMS") 31 @JSONField(name = "general.streamNoneReaderDelayMS")
32 private String generalStreamNoneReaderDelayMS; 32 private String generalStreamNoneReaderDelayMS;
33 33
34 - @JSONField(name = "general.localIP")  
35 private String localIP; 34 private String localIP;
36 35
  36 + private String wanIp;
  37 +
37 @JSONField(name = "hls.fileBufSize") 38 @JSONField(name = "hls.fileBufSize")
38 private String hlsFileBufSize; 39 private String hlsFileBufSize;
39 40
@@ -719,4 +720,12 @@ public class MediaServerConfig { @@ -719,4 +720,12 @@ public class MediaServerConfig {
719 public void setShellPhell(String shellPhell) { 720 public void setShellPhell(String shellPhell) {
720 this.shellPhell = shellPhell; 721 this.shellPhell = shellPhell;
721 } 722 }
  723 +
  724 + public String getWanIp() {
  725 + return wanIp;
  726 + }
  727 +
  728 + public void setWanIp(String wanIp) {
  729 + this.wanIp = wanIp;
  730 + }
722 } 731 }
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java
@@ -285,9 +285,9 @@ public class SIPCommander implements ISIPCommander { @@ -285,9 +285,9 @@ public class SIPCommander implements ISIPCommander {
285 // 285 //
286 StringBuffer content = new StringBuffer(200); 286 StringBuffer content = new StringBuffer(200);
287 content.append("v=0\r\n"); 287 content.append("v=0\r\n");
288 - content.append("o="+channelId+" 0 0 IN IP4 "+mediaInfo.getLocalIP()+"\r\n"); 288 + content.append("o="+channelId+" 0 0 IN IP4 "+mediaInfo.getWanIp()+"\r\n");
289 content.append("s=Play\r\n"); 289 content.append("s=Play\r\n");
290 - content.append("c=IN IP4 "+mediaInfo.getLocalIP()+"\r\n"); 290 + content.append("c=IN IP4 "+mediaInfo.getWanIp()+"\r\n");
291 content.append("t=0 0\r\n"); 291 content.append("t=0 0\r\n");
292 if("TCP-PASSIVE".equals(streamMode)) { 292 if("TCP-PASSIVE".equals(streamMode)) {
293 content.append("m=video "+ mediaPort +" TCP/RTP/AVP 96 98 97\r\n"); 293 content.append("m=video "+ mediaPort +" TCP/RTP/AVP 96 98 97\r\n");
src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java
@@ -134,22 +134,22 @@ public class ZLMHttpHookListener { @@ -134,22 +134,22 @@ public class ZLMHttpHookListener {
134 StreamInfo streamInfoForPlay = storager.queryPlayBySSRC(ssrc); 134 StreamInfo streamInfoForPlay = storager.queryPlayBySSRC(ssrc);
135 if ("rtp".equals(app) && streamInfoForPlay != null ) { 135 if ("rtp".equals(app) && streamInfoForPlay != null ) {
136 MediaServerConfig mediaInfo = storager.getMediaInfo(); 136 MediaServerConfig mediaInfo = storager.getMediaInfo();
137 - streamInfoForPlay.setFlv(String.format("http://%s:%s/rtp/%s.flv", mediaInfo.getLocalIP(), mediaInfo.getHttpPort(), streamId));  
138 - streamInfoForPlay.setWs_flv(String.format("ws://%s:%s/rtp/%s.flv", mediaInfo.getLocalIP(), mediaInfo.getHttpPort(), streamId));  
139 - streamInfoForPlay.setRtmp(String.format("rtmp://%s:%s/rtp/%s", mediaInfo.getLocalIP(), mediaInfo.getRtmpPort(), streamId));  
140 - streamInfoForPlay.setHls(String.format("http://%s:%s/rtp/%s/hls.m3u8", mediaInfo.getLocalIP(), mediaInfo.getHttpPort(), streamId));  
141 - streamInfoForPlay.setRtsp(String.format("rtsp://%s:%s/rtp/%s", mediaInfo.getLocalIP(), mediaInfo.getRtspPort(), streamId)); 137 + streamInfoForPlay.setFlv(String.format("http://%s:%s/rtp/%s.flv", mediaInfo.getWanIp(), mediaInfo.getHttpPort(), streamId));
  138 + streamInfoForPlay.setWs_flv(String.format("ws://%s:%s/rtp/%s.flv", mediaInfo.getWanIp(), mediaInfo.getHttpPort(), streamId));
  139 + streamInfoForPlay.setRtmp(String.format("rtmp://%s:%s/rtp/%s", mediaInfo.getWanIp(), mediaInfo.getRtmpPort(), streamId));
  140 + streamInfoForPlay.setHls(String.format("http://%s:%s/rtp/%s/hls.m3u8", mediaInfo.getWanIp(), mediaInfo.getHttpPort(), streamId));
  141 + streamInfoForPlay.setRtsp(String.format("rtsp://%s:%s/rtp/%s", mediaInfo.getWanIp(), mediaInfo.getRtspPort(), streamId));
142 storager.startPlay(streamInfoForPlay); 142 storager.startPlay(streamInfoForPlay);
143 } 143 }
144 144
145 StreamInfo streamInfoForPlayBack = storager.queryPlaybackBySSRC(ssrc); 145 StreamInfo streamInfoForPlayBack = storager.queryPlaybackBySSRC(ssrc);
146 if ("rtp".equals(app) && streamInfoForPlayBack != null ) { 146 if ("rtp".equals(app) && streamInfoForPlayBack != null ) {
147 MediaServerConfig mediaInfo = storager.getMediaInfo(); 147 MediaServerConfig mediaInfo = storager.getMediaInfo();
148 - streamInfoForPlayBack.setFlv(String.format("http://%s:%s/rtp/%s.flv", mediaInfo.getLocalIP(), mediaInfo.getHttpPort(), streamId));  
149 - streamInfoForPlayBack.setWs_flv(String.format("ws://%s:%s/rtp/%s.flv", mediaInfo.getLocalIP(), mediaInfo.getHttpPort(), streamId));  
150 - streamInfoForPlayBack.setRtmp(String.format("rtmp://%s:%s/rtp/%s", mediaInfo.getLocalIP(), mediaInfo.getRtmpPort(), streamId));  
151 - streamInfoForPlayBack.setHls(String.format("http://%s:%s/rtp/%s/hls.m3u8", mediaInfo.getLocalIP(), mediaInfo.getHttpPort(), streamId));  
152 - streamInfoForPlayBack.setRtsp(String.format("rtsp://%s:%s/rtp/%s", mediaInfo.getLocalIP(), mediaInfo.getRtspPort(), streamId)); 148 + streamInfoForPlayBack.setFlv(String.format("http://%s:%s/rtp/%s.flv", mediaInfo.getWanIp(), mediaInfo.getHttpPort(), streamId));
  149 + streamInfoForPlayBack.setWs_flv(String.format("ws://%s:%s/rtp/%s.flv", mediaInfo.getWanIp(), mediaInfo.getHttpPort(), streamId));
  150 + streamInfoForPlayBack.setRtmp(String.format("rtmp://%s:%s/rtp/%s", mediaInfo.getWanIp(), mediaInfo.getRtmpPort(), streamId));
  151 + streamInfoForPlayBack.setHls(String.format("http://%s:%s/rtp/%s/hls.m3u8", mediaInfo.getWanIp(), mediaInfo.getHttpPort(), streamId));
  152 + streamInfoForPlayBack.setRtsp(String.format("rtsp://%s:%s/rtp/%s", mediaInfo.getWanIp(), mediaInfo.getRtspPort(), streamId));
153 storager.startPlayback(streamInfoForPlayBack); 153 storager.startPlayback(streamInfoForPlayBack);
154 } 154 }
155 155
src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRunner.java
@@ -13,6 +13,7 @@ import org.springframework.beans.factory.annotation.Value; @@ -13,6 +13,7 @@ import org.springframework.beans.factory.annotation.Value;
13 import org.springframework.boot.CommandLineRunner; 13 import org.springframework.boot.CommandLineRunner;
14 import org.springframework.core.annotation.Order; 14 import org.springframework.core.annotation.Order;
15 import org.springframework.stereotype.Component; 15 import org.springframework.stereotype.Component;
  16 +import org.springframework.util.StringUtils;
16 17
17 import java.io.IOException; 18 import java.io.IOException;
18 import java.io.UnsupportedEncodingException; 19 import java.io.UnsupportedEncodingException;
@@ -32,6 +33,9 @@ public class ZLMRunner implements CommandLineRunner { @@ -32,6 +33,9 @@ public class ZLMRunner implements CommandLineRunner {
32 @Value("${media.ip}") 33 @Value("${media.ip}")
33 private String mediaIp; 34 private String mediaIp;
34 35
  36 + @Value("${media.wanIp}")
  37 + private String mediaWanIp;
  38 +
35 @Value("${media.port}") 39 @Value("${media.port}")
36 private int mediaPort; 40 private int mediaPort;
37 41
@@ -75,6 +79,7 @@ public class ZLMRunner implements CommandLineRunner { @@ -75,6 +79,7 @@ public class ZLMRunner implements CommandLineRunner {
75 if (data != null && data.size() > 0) { 79 if (data != null && data.size() > 0) {
76 mediaServerConfig = JSON.parseObject(JSON.toJSONString(data.get(0)), MediaServerConfig.class); 80 mediaServerConfig = JSON.parseObject(JSON.toJSONString(data.get(0)), MediaServerConfig.class);
77 mediaServerConfig.setLocalIP(mediaIp); 81 mediaServerConfig.setLocalIP(mediaIp);
  82 + mediaServerConfig.setWanIp(StringUtils.isEmpty(mediaWanIp)? mediaIp: mediaWanIp);
78 } 83 }
79 } else { 84 } else {
80 logger.error("getMediaServerConfig失败, 1s后重试"); 85 logger.error("getMediaServerConfig失败, 1s后重试");
src/main/java/com/genersoft/iot/vmp/vmanager/play/PlayController.java
@@ -42,6 +42,7 @@ public class PlayController { @@ -42,6 +42,7 @@ public class PlayController {
42 public ResponseEntity<String> play(@PathVariable String deviceId, @PathVariable String channelId, 42 public ResponseEntity<String> play(@PathVariable String deviceId, @PathVariable String channelId,
43 Integer getEncoding) { 43 Integer getEncoding) {
44 44
  45 + if (getEncoding == null) getEncoding = 0;
45 Device device = storager.queryVideoDevice(deviceId); 46 Device device = storager.queryVideoDevice(deviceId);
46 StreamInfo streamInfo = storager.queryPlayByDevice(deviceId, channelId); 47 StreamInfo streamInfo = storager.queryPlayByDevice(deviceId, channelId);
47 48
@@ -146,3 +147,4 @@ public class PlayController { @@ -146,3 +147,4 @@ public class PlayController {
146 } 147 }
147 } 148 }
148 } 149 }
  150 +
src/main/resources/application.yml
@@ -41,6 +41,7 @@ auth: #32位小写md5加密(默认密码为admin) @@ -41,6 +41,7 @@ auth: #32位小写md5加密(默认密码为admin)
41 41
42 media: #zlm服务器的ip与http端口, 重点: 这是http端口 42 media: #zlm服务器的ip与http端口, 重点: 这是http端口
43 ip: 192.168.1.44 43 ip: 192.168.1.44
  44 + wanIp:
44 port: 80 45 port: 80
45 secret: 035c73f7-bb6b-4889-a715-d9eb2d1925cc 46 secret: 035c73f7-bb6b-4889-a715-d9eb2d1925cc
46 streamNoneReaderDelayMS: 1800000 # 无人观看多久自动关闭流 47 streamNoneReaderDelayMS: 1800000 # 无人观看多久自动关闭流