From 713aa00acc398e44cb2a59e4f5c3f55b4e0784d8 Mon Sep 17 00:00:00 2001 From: xiaoQQya <xiaoQQya@126.com> Date: 星期三, 22 三月 2023 15:21:22 +0800 Subject: [PATCH] perf(snap): 优化点播成功后截图使用 rtsp 流, 新增对 H265 编码视频截图的支持 --- src/main/java/com/genersoft/iot/vmp/conf/MediaConfig.java | 253 ++++++++++++-------------------------------------- 1 files changed, 61 insertions(+), 192 deletions(-) diff --git a/src/main/java/com/genersoft/iot/vmp/conf/MediaConfig.java b/src/main/java/com/genersoft/iot/vmp/conf/MediaConfig.java index f2a0bcd..fa12679 100644 --- a/src/main/java/com/genersoft/iot/vmp/conf/MediaConfig.java +++ b/src/main/java/com/genersoft/iot/vmp/conf/MediaConfig.java @@ -1,25 +1,40 @@ package com.genersoft.iot.vmp.conf; -import com.genersoft.iot.vmp.media.zlm.dto.IMediaServerItem; import com.genersoft.iot.vmp.media.zlm.dto.MediaServerItem; +import com.genersoft.iot.vmp.utils.DateUtil; +import org.junit.jupiter.api.Order; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Configuration; -import org.springframework.util.StringUtils; +import org.springframework.util.ObjectUtils; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.regex.Pattern; + @Configuration("mediaConfig") -public class MediaConfig implements IMediaServerItem { +@Order(0) +public class MediaConfig{ - @Value("${media.id:}") + private final static Logger logger = LoggerFactory.getLogger(MediaConfig.class); + + // 淇敼蹇呴』閰嶇疆锛屼笉鍐嶆敮鎸佽嚜鍔ㄨ幏鍙� + @Value("${media.id}") private String id; @Value("${media.ip}") private String ip; - @Value("${media.hook-ip:${sip.ip}}") + @Value("${media.hook-ip:}") private String hookIp; @Value("${sip.ip}") private String sipIp; + + @Value("${sip.domain}") + private String sipDomain; @Value("${media.sdp-ip:${media.ip}}") private String sdpIp; @@ -54,9 +69,6 @@ @Value("${media.secret}") private String secret; - @Value("${media.stream-none-reader-delay-ms:18000}") - private String streamNoneReaderDelayMS = "18000"; - @Value("${media.rtp.enable}") private boolean rtpEnable; @@ -66,110 +78,45 @@ @Value("${media.record-assist-port:0}") private Integer recordAssistPort = 0; - private String updateTime; - - private String createTime; - - private boolean docker = false; - - private int count; - - public String getId() { return id; } - public void setId(String id) { - this.id = id; - } - public String getIp() { return ip; } - public void setIp(String ip) { - this.ip = ip; - } - public String getHookIp() { - if (StringUtils.isEmpty(hookIp)){ - return sipIp; + if (ObjectUtils.isEmpty(hookIp)){ + return sipIp.split(",")[0]; }else { return hookIp; } } - public void setHookIp(String hookIp) { - this.hookIp = hookIp; - } - public String getSipIp() { - return sipIp; - } - - public void setSipIp(String sipIp) { - this.sipIp = sipIp; - } - - public void setSdpIp(String sdpIp) { - this.sdpIp = sdpIp; - } - - public void setStreamIp(String streamIp) { - this.streamIp = streamIp; + if (sipIp == null) { + return this.ip; + }else { + return sipIp; + } } public int getHttpPort() { return httpPort; } - @Override - public void setHttpPort(int httpPort) { - - } - - public void setHttpPort(Integer httpPort) { - this.httpPort = httpPort; - } - public int getHttpSSlPort() { return httpSSlPort; - } - - @Override - public void setHttpSSlPort(int httpSSlPort) { - - } - - public void setHttpSSlPort(Integer httpSSlPort) { - this.httpSSlPort = httpSSlPort; } public int getRtmpPort() { return rtmpPort; } - - @Override - public void setRtmpPort(int rtmpPort) { - - } - - public void setRtmpPort(Integer rtmpPort) { - this.rtmpPort = rtmpPort; - } - + public int getRtmpSSlPort() { return rtmpSSlPort; - } - - @Override - public void setRtmpSSlPort(int rtmpSSlPort) { - - } - - public void setRtmpSSlPort(Integer rtmpSSlPort) { - this.rtmpSSlPort = rtmpSSlPort; } public int getRtpProxyPort() { @@ -181,176 +128,98 @@ } - @Override - public void setRtpProxyPort(int rtpProxyPort) { - - } - - public void setRtpProxyPort(Integer rtpProxyPort) { - this.rtpProxyPort = rtpProxyPort; - } - public int getRtspPort() { return rtspPort; - } - - @Override - public void setRtspPort(int rtspPort) { - - } - - public void setRtspPort(Integer rtspPort) { - this.rtspPort = rtspPort; } public int getRtspSSLPort() { return rtspSSLPort; } - @Override - public void setRtspSSLPort(int rtspSSLPort) { - - } - - public void setRtspSSLPort(Integer rtspSSLPort) { - this.rtspSSLPort = rtspSSLPort; - } - public boolean isAutoConfig() { return autoConfig; - } - - public void setAutoConfig(boolean autoConfig) { - this.autoConfig = autoConfig; } public String getSecret() { return secret; } - public void setSecret(String secret) { - this.secret = secret; - } - - public String getStreamNoneReaderDelayMS() { - return streamNoneReaderDelayMS; - } - - public void setStreamNoneReaderDelayMS(String streamNoneReaderDelayMS) { - this.streamNoneReaderDelayMS = streamNoneReaderDelayMS; - } - public boolean isRtpEnable() { return rtpEnable; - } - - public void setRtpEnable(boolean rtpEnable) { - this.rtpEnable = rtpEnable; } public String getRtpPortRange() { return rtpPortRange; } - - public void setRtpPortRange(String rtpPortRange) { - this.rtpPortRange = rtpPortRange; - } - + public int getRecordAssistPort() { return recordAssistPort; } - @Override - public void setRecordAssistPort(int recordAssistPort) { - - } - - public void setRecordAssistPort(Integer recordAssistPort) { - this.recordAssistPort = recordAssistPort; - } - - @Override - public boolean isDocker() { - return docker; - } - - @Override - public void setDocker(boolean docker) { - this.docker = docker; - } - public String getSdpIp() { - if (StringUtils.isEmpty(sdpIp)){ + if (ObjectUtils.isEmpty(sdpIp)){ return ip; }else { - return sdpIp; + if (isValidIPAddress(sdpIp)) { + return sdpIp; + }else { + // 鎸夌収鍩熷悕瑙f瀽 + String hostAddress = null; + try { + hostAddress = InetAddress.getByName(sdpIp).getHostAddress(); + } catch (UnknownHostException e) { + logger.error("[鑾峰彇SDP IP]: 鍩熷悕瑙f瀽澶辫触"); + } + return hostAddress; + } } } public String getStreamIp() { - if (StringUtils.isEmpty(streamIp)){ + if (ObjectUtils.isEmpty(streamIp)){ return ip; }else { return streamIp; } } - + public String getSipDomain() { + return sipDomain; + } public MediaServerItem getMediaSerItem(){ MediaServerItem mediaServerItem = new MediaServerItem(); mediaServerItem.setId(id); mediaServerItem.setIp(ip); - mediaServerItem.setDocker(true); - mediaServerItem.setHookIp(hookIp); - mediaServerItem.setSdpIp(sdpIp); - mediaServerItem.setStreamIp(streamIp); + mediaServerItem.setDefaultServer(true); + mediaServerItem.setHookIp(getHookIp()); + mediaServerItem.setSdpIp(getSdpIp()); + mediaServerItem.setStreamIp(getStreamIp()); mediaServerItem.setHttpPort(httpPort); mediaServerItem.setHttpSSlPort(httpSSlPort); mediaServerItem.setRtmpPort(rtmpPort); mediaServerItem.setRtmpSSlPort(rtmpSSlPort); - mediaServerItem.setRtpProxyPort(rtpProxyPort); + mediaServerItem.setRtpProxyPort(getRtpProxyPort()); mediaServerItem.setRtspPort(rtspPort); mediaServerItem.setRtspSSLPort(rtspSSLPort); mediaServerItem.setAutoConfig(autoConfig); mediaServerItem.setSecret(secret); - mediaServerItem.setStreamNoneReaderDelayMS(streamNoneReaderDelayMS); mediaServerItem.setRtpEnable(rtpEnable); mediaServerItem.setRtpPortRange(rtpPortRange); mediaServerItem.setRecordAssistPort(recordAssistPort); - mediaServerItem.setCreateTime(createTime); - mediaServerItem.setUpdateTime(updateTime); - mediaServerItem.setCount(count); + mediaServerItem.setHookAliveInterval(30.00f); + + mediaServerItem.setCreateTime(DateUtil.getNow()); + mediaServerItem.setUpdateTime(DateUtil.getNow()); + return mediaServerItem; } - @Override - public String getUpdateTime() { - return updateTime; + private boolean isValidIPAddress(String ipAddress) { + if ((ipAddress != null) && (!ipAddress.isEmpty())) { + return Pattern.matches("^([1-9]|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])(\\.(\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])){3}$", ipAddress); + } + return false; } - @Override - public void setUpdateTime(String updateTime) { - this.updateTime = updateTime; - } - - @Override - public String getCreateTime() { - return createTime; - } - - @Override - public void setCreateTime(String createTime) { - this.createTime = createTime; - } - - @Override - public int getCount() { - return count; - } - - @Override - public void setCount(int count) { - this.count = count; - } } -- Gitblit v1.8.0