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,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 # 无人观看多久自动关闭流 |