| package com.genersoft.iot.vmp.conf; | 
|   | 
| import com.genersoft.iot.vmp.media.zlm.dto.MediaServerItem; | 
| import com.genersoft.iot.vmp.utils.DateUtil; | 
| import org.slf4j.Logger; | 
| import org.slf4j.LoggerFactory; | 
| import org.springframework.beans.factory.annotation.Value; | 
| import org.springframework.context.annotation.Configuration; | 
| import org.springframework.core.annotation.Order; | 
| import org.springframework.util.ObjectUtils; | 
|   | 
| import java.net.InetAddress; | 
| import java.net.UnknownHostException; | 
| import java.util.regex.Pattern; | 
|   | 
|   | 
| @Configuration("mediaConfig") | 
| @Order(0) | 
| public class MediaConfig{ | 
|   | 
|     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:}") | 
|     private String hookIp; | 
|   | 
|     @Value("${sip.ip}") | 
|     private String sipIp; | 
|   | 
|     @Value("${sip.domain}") | 
|     private String sipDomain; | 
|   | 
|     @Value("${media.sdp-ip:${media.ip}}") | 
|     private String sdpIp; | 
|   | 
|     @Value("${media.stream-ip:${media.ip}}") | 
|     private String streamIp; | 
|   | 
|     @Value("${media.http-port}") | 
|     private Integer httpPort; | 
|   | 
|     @Value("${media.http-ssl-port:0}") | 
|     private Integer httpSSlPort = 0; | 
|   | 
|     @Value("${media.rtmp-port:0}") | 
|     private Integer rtmpPort = 0; | 
|   | 
|     @Value("${media.rtmp-ssl-port:0}") | 
|     private Integer rtmpSSlPort = 0; | 
|   | 
|     @Value("${media.rtp-proxy-port:0}") | 
|     private Integer rtpProxyPort = 0; | 
|   | 
|     @Value("${media.rtsp-port:0}") | 
|     private Integer rtspPort = 0; | 
|   | 
|     @Value("${media.rtsp-ssl-port:0}") | 
|     private Integer rtspSSLPort = 0; | 
|   | 
|     @Value("${media.auto-config:true}") | 
|     private boolean autoConfig = true; | 
|   | 
|     @Value("${media.secret}") | 
|     private String secret; | 
|   | 
|     @Value("${media.rtp.enable}") | 
|     private boolean rtpEnable; | 
|   | 
|     @Value("${media.rtp.port-range}") | 
|     private String rtpPortRange; | 
|   | 
|     @Value("${media.rtp.send-port-range}") | 
|     private String rtpSendPortRange; | 
|   | 
|     @Value("${media.record-assist-port:0}") | 
|     private Integer recordAssistPort = 0; | 
|   | 
|     public String getId() { | 
|         return id; | 
|     } | 
|   | 
|     public String getIp() { | 
|         return ip; | 
|     } | 
|   | 
|     public String getHookIp() { | 
|         if (ObjectUtils.isEmpty(hookIp)){ | 
|             return sipIp.split(",")[0]; | 
|         }else { | 
|             return hookIp; | 
|         } | 
|   | 
|     } | 
|   | 
|     public String getSipIp() { | 
|         if (sipIp == null) { | 
|             return this.ip; | 
|         }else { | 
|             return sipIp; | 
|         } | 
|     } | 
|   | 
|     public int getHttpPort() { | 
|         return httpPort; | 
|     } | 
|   | 
|     public int getHttpSSlPort() { | 
|         return httpSSlPort; | 
|     } | 
|   | 
|     public int getRtmpPort() { | 
|         return rtmpPort; | 
|     } | 
|      | 
|     public int getRtmpSSlPort() { | 
|         return rtmpSSlPort; | 
|     } | 
|   | 
|     public int getRtpProxyPort() { | 
|         if (rtpProxyPort == null) { | 
|             return 0; | 
|         }else { | 
|             return rtpProxyPort; | 
|         } | 
|   | 
|     } | 
|   | 
|     public int getRtspPort() { | 
|         return rtspPort; | 
|     } | 
|   | 
|     public int getRtspSSLPort() { | 
|         return rtspSSLPort; | 
|     } | 
|   | 
|     public boolean isAutoConfig() { | 
|         return autoConfig; | 
|     } | 
|   | 
|     public String getSecret() { | 
|         return secret; | 
|     } | 
|   | 
|     public boolean isRtpEnable() { | 
|         return rtpEnable; | 
|     } | 
|   | 
|     public String getRtpPortRange() { | 
|         return rtpPortRange; | 
|     } | 
|      | 
|     public int getRecordAssistPort() { | 
|         return recordAssistPort; | 
|     } | 
|   | 
|     public String getSdpIp() { | 
|         if (ObjectUtils.isEmpty(sdpIp)){ | 
|             return ip; | 
|         }else { | 
|             if (isValidIPAddress(sdpIp)) { | 
|                 return sdpIp; | 
|             }else { | 
|                 // 按照域名解析 | 
|                 String hostAddress = null; | 
|                 try { | 
|                     hostAddress = InetAddress.getByName(sdpIp).getHostAddress(); | 
|                 } catch (UnknownHostException e) { | 
|                     logger.error("[获取SDP IP]: 域名解析失败"); | 
|                 } | 
|                 return hostAddress; | 
|             } | 
|         } | 
|     } | 
|   | 
|     public String getStreamIp() { | 
|         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.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(getRtpProxyPort()); | 
|         mediaServerItem.setRtspPort(rtspPort); | 
|         mediaServerItem.setRtspSSLPort(rtspSSLPort); | 
|         mediaServerItem.setAutoConfig(autoConfig); | 
|         mediaServerItem.setSecret(secret); | 
|         mediaServerItem.setRtpEnable(rtpEnable); | 
|         mediaServerItem.setRtpPortRange(rtpPortRange); | 
|         mediaServerItem.setSendRtpPortRange(rtpSendPortRange); | 
|         mediaServerItem.setRecordAssistPort(recordAssistPort); | 
|         mediaServerItem.setHookAliveInterval(30.00f); | 
|   | 
|         mediaServerItem.setCreateTime(DateUtil.getNow()); | 
|         mediaServerItem.setUpdateTime(DateUtil.getNow()); | 
|   | 
|         return mediaServerItem; | 
|     } | 
|   | 
|     public String getRtpSendPortRange() { | 
|         return rtpSendPortRange; | 
|     } | 
|   | 
|     public void setRtpSendPortRange(String rtpSendPortRange) { | 
|         this.rtpSendPortRange = rtpSendPortRange; | 
|     } | 
|   | 
|     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; | 
|     } | 
| } |