648540858
2020-11-09 81f9119da6a5472603abb7dc76609388942593b4
支持公网部署
6个文件已修改
43 ■■■■■ 已修改文件
src/main/java/com/genersoft/iot/vmp/conf/MediaServerConfig.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRunner.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/vmanager/play/PlayController.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application.yml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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;
    }
}
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");
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);
        }
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后重试");
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 @@
        }
    }
}
src/main/resources/application.yml
@@ -41,6 +41,7 @@
media: #zlm服务器的ip与http端口, 重点: 这是http端口
    ip: 192.168.1.44
    wanIp:
    port: 80
    secret: 035c73f7-bb6b-4889-a715-d9eb2d1925cc
    streamNoneReaderDelayMS:  1800000  # 无人观看多久自动关闭流