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 31 @JSONField(name = "general.streamNoneReaderDelayMS")
32 32 private String generalStreamNoneReaderDelayMS;
33 33  
34   - @JSONField(name = "general.localIP")
35 34 private String localIP;
36 35  
  36 + private String wanIp;
  37 +
37 38 @JSONField(name = "hls.fileBufSize")
38 39 private String hlsFileBufSize;
39 40  
... ... @@ -719,4 +720,12 @@ public class MediaServerConfig {
719 720 public void setShellPhell(String shellPhell) {
720 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 285 //
286 286 StringBuffer content = new StringBuffer(200);
287 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 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 291 content.append("t=0 0\r\n");
292 292 if("TCP-PASSIVE".equals(streamMode)) {
293 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 134 StreamInfo streamInfoForPlay = storager.queryPlayBySSRC(ssrc);
135 135 if ("rtp".equals(app) && streamInfoForPlay != null ) {
136 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 142 storager.startPlay(streamInfoForPlay);
143 143 }
144 144  
145 145 StreamInfo streamInfoForPlayBack = storager.queryPlaybackBySSRC(ssrc);
146 146 if ("rtp".equals(app) && streamInfoForPlayBack != null ) {
147 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 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 13 import org.springframework.boot.CommandLineRunner;
14 14 import org.springframework.core.annotation.Order;
15 15 import org.springframework.stereotype.Component;
  16 +import org.springframework.util.StringUtils;
16 17  
17 18 import java.io.IOException;
18 19 import java.io.UnsupportedEncodingException;
... ... @@ -32,6 +33,9 @@ public class ZLMRunner implements CommandLineRunner {
32 33 @Value("${media.ip}")
33 34 private String mediaIp;
34 35  
  36 + @Value("${media.wanIp}")
  37 + private String mediaWanIp;
  38 +
35 39 @Value("${media.port}")
36 40 private int mediaPort;
37 41  
... ... @@ -75,6 +79,7 @@ public class ZLMRunner implements CommandLineRunner {
75 79 if (data != null && data.size() > 0) {
76 80 mediaServerConfig = JSON.parseObject(JSON.toJSONString(data.get(0)), MediaServerConfig.class);
77 81 mediaServerConfig.setLocalIP(mediaIp);
  82 + mediaServerConfig.setWanIp(StringUtils.isEmpty(mediaWanIp)? mediaIp: mediaWanIp);
78 83 }
79 84 } else {
80 85 logger.error("getMediaServerConfig失败, 1s后重试");
... ...
src/main/java/com/genersoft/iot/vmp/vmanager/play/PlayController.java
... ... @@ -42,6 +42,7 @@ public class PlayController {
42 42 public ResponseEntity<String> play(@PathVariable String deviceId, @PathVariable String channelId,
43 43 Integer getEncoding) {
44 44  
  45 + if (getEncoding == null) getEncoding = 0;
45 46 Device device = storager.queryVideoDevice(deviceId);
46 47 StreamInfo streamInfo = storager.queryPlayByDevice(deviceId, channelId);
47 48  
... ... @@ -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 41  
42 42 media: #zlm服务器的ip与http端口, 重点: 这是http端口
43 43 ip: 192.168.1.44
  44 + wanIp:
44 45 port: 80
45 46 secret: 035c73f7-bb6b-4889-a715-d9eb2d1925cc
46 47 streamNoneReaderDelayMS: 1800000 # 无人观看多久自动关闭流
... ...