|  |  |  | 
|---|
|  |  |  | 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.springframework.beans.factory.annotation.Value; | 
|---|
|  |  |  | import org.springframework.context.annotation.Configuration; | 
|---|
|  |  |  | import org.springframework.util.StringUtils; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Configuration("mediaConfig") | 
|---|
|  |  |  | public class MediaConfig implements IMediaServerItem { | 
|---|
|  |  |  | import java.net.InetAddress; | 
|---|
|  |  |  | import java.net.UnknownHostException; | 
|---|
|  |  |  | import java.util.regex.Pattern; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Value("${media.id:}") | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Configuration("mediaConfig") | 
|---|
|  |  |  | public class MediaConfig{ | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 修改必须配置,不再支持自动获取 | 
|---|
|  |  |  | @Value("${media.id}") | 
|---|
|  |  |  | private String id; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Value("${media.ip}") | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Value("${sip.ip}") | 
|---|
|  |  |  | private String sipIp; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Value("${sip.domain}") | 
|---|
|  |  |  | private String sipDomain; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Value("${media.sdp-ip:${media.ip}}") | 
|---|
|  |  |  | private String sdpIp; | 
|---|
|  |  |  | 
|---|
|  |  |  | @Value("${media.secret}") | 
|---|
|  |  |  | private String secret; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Value("${media.stream-none-reader-delay-ms:18000}") | 
|---|
|  |  |  | private String streamNoneReaderDelayMS = "18000"; | 
|---|
|  |  |  | @Value("${media.stream-none-reader-delay-ms:10000}") | 
|---|
|  |  |  | private int streamNoneReaderDelayMS = 10000; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Value("${media.rtp.enable}") | 
|---|
|  |  |  | private boolean rtpEnable; | 
|---|
|  |  |  | 
|---|
|  |  |  | @Value("${media.rtp.port-range}") | 
|---|
|  |  |  | private String rtpPortRange; | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Value("${media.rtp.send-port-range}") | 
|---|
|  |  |  | private String sendRtpPortRange; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @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() { | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 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() { | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @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() { | 
|---|
|  |  |  | public int 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)){ | 
|---|
|  |  |  | return ip; | 
|---|
|  |  |  | }else { | 
|---|
|  |  |  | return sdpIp; | 
|---|
|  |  |  | if (isValidIPAddress(sdpIp)) { | 
|---|
|  |  |  | return sdpIp; | 
|---|
|  |  |  | }else { | 
|---|
|  |  |  | // 按照域名解析 | 
|---|
|  |  |  | String hostAddress = null; | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | hostAddress = InetAddress.getByName(sdpIp).getHostAddress(); | 
|---|
|  |  |  | } catch (UnknownHostException e) { | 
|---|
|  |  |  | throw new RuntimeException(e); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return hostAddress; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public String getSipDomain() { | 
|---|
|  |  |  | return sipDomain; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public String getSendRtpPortRange() { | 
|---|
|  |  |  | return sendRtpPortRange; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 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.setStreamNoneReaderDelayMS(streamNoneReaderDelayMS); | 
|---|
|  |  |  | mediaServerItem.setRtpEnable(rtpEnable); | 
|---|
|  |  |  | mediaServerItem.setRtpPortRange(rtpPortRange); | 
|---|
|  |  |  | mediaServerItem.setSendRtpPortRange(sendRtpPortRange); | 
|---|
|  |  |  | mediaServerItem.setRecordAssistPort(recordAssistPort); | 
|---|
|  |  |  | mediaServerItem.setCreateTime(createTime); | 
|---|
|  |  |  | mediaServerItem.setUpdateTime(updateTime); | 
|---|
|  |  |  | mediaServerItem.setCount(count); | 
|---|
|  |  |  | mediaServerItem.setHookAliveInterval(120); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 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; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|