Commit 81f9119da6a5472603abb7dc76609388942593b4
1 parent
ce1aa613
支持公网部署
Showing
6 changed files
with
30 additions
and
13 deletions
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