MediaConfig.java 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234
  1. package com.genersoft.iot.vmp.conf;
  2. import com.genersoft.iot.vmp.media.zlm.dto.MediaServerItem;
  3. import com.genersoft.iot.vmp.utils.DateUtil;
  4. import com.genersoft.iot.vmp.vmanager.gb28181.device.DeviceQuery;
  5. import org.slf4j.Logger;
  6. import org.slf4j.LoggerFactory;
  7. import org.springframework.beans.factory.annotation.Value;
  8. import org.springframework.context.annotation.Configuration;
  9. import org.springframework.util.ObjectUtils;
  10. import org.springframework.util.StringUtils;
  11. import java.net.InetAddress;
  12. import java.net.UnknownHostException;
  13. import java.util.regex.Pattern;
  14. @Configuration("mediaConfig")
  15. public class MediaConfig{
  16. private final static Logger logger = LoggerFactory.getLogger(MediaConfig.class);
  17. // 修改必须配置,不再支持自动获取
  18. @Value("${media.id}")
  19. private String id;
  20. @Value("${media.ip}")
  21. private String ip;
  22. @Value("${media.hook-ip:${sip.ip}}")
  23. private String hookIp;
  24. @Value("${sip.ip}")
  25. private String sipIp;
  26. @Value("${sip.domain}")
  27. private String sipDomain;
  28. @Value("${media.sdp-ip:${media.ip}}")
  29. private String sdpIp;
  30. @Value("${media.stream-ip:${media.ip}}")
  31. private String streamIp;
  32. @Value("${media.http-port}")
  33. private Integer httpPort;
  34. @Value("${media.http-ssl-port:0}")
  35. private Integer httpSSlPort = 0;
  36. @Value("${media.rtmp-port:0}")
  37. private Integer rtmpPort = 0;
  38. @Value("${media.rtmp-ssl-port:0}")
  39. private Integer rtmpSSlPort = 0;
  40. @Value("${media.rtp-proxy-port:0}")
  41. private Integer rtpProxyPort = 0;
  42. @Value("${media.rtsp-port:0}")
  43. private Integer rtspPort = 0;
  44. @Value("${media.rtsp-ssl-port:0}")
  45. private Integer rtspSSLPort = 0;
  46. @Value("${media.auto-config:true}")
  47. private boolean autoConfig = true;
  48. @Value("${media.secret}")
  49. private String secret;
  50. @Value("${media.rtp.enable}")
  51. private boolean rtpEnable;
  52. @Value("${media.rtp.port-range}")
  53. private String rtpPortRange;
  54. @Value("${media.rtp.send-port-range}")
  55. private String sendRtpPortRange;
  56. @Value("${media.record-assist-port:0}")
  57. private Integer recordAssistPort = 0;
  58. public String getId() {
  59. return id;
  60. }
  61. public String getIp() {
  62. return ip;
  63. }
  64. public String getHookIp() {
  65. if (ObjectUtils.isEmpty(hookIp)){
  66. return sipIp;
  67. }else {
  68. return hookIp;
  69. }
  70. }
  71. public String getSipIp() {
  72. if (sipIp == null) {
  73. return this.ip;
  74. }else {
  75. return sipIp;
  76. }
  77. }
  78. public int getHttpPort() {
  79. return httpPort;
  80. }
  81. public int getHttpSSlPort() {
  82. return httpSSlPort;
  83. }
  84. public int getRtmpPort() {
  85. return rtmpPort;
  86. }
  87. public int getRtmpSSlPort() {
  88. return rtmpSSlPort;
  89. }
  90. public int getRtpProxyPort() {
  91. if (rtpProxyPort == null) {
  92. return 0;
  93. }else {
  94. return rtpProxyPort;
  95. }
  96. }
  97. public int getRtspPort() {
  98. return rtspPort;
  99. }
  100. public int getRtspSSLPort() {
  101. return rtspSSLPort;
  102. }
  103. public boolean isAutoConfig() {
  104. return autoConfig;
  105. }
  106. public String getSecret() {
  107. return secret;
  108. }
  109. public boolean isRtpEnable() {
  110. return rtpEnable;
  111. }
  112. public String getRtpPortRange() {
  113. return rtpPortRange;
  114. }
  115. public int getRecordAssistPort() {
  116. return recordAssistPort;
  117. }
  118. public String getSdpIp() {
  119. if (ObjectUtils.isEmpty(sdpIp)){
  120. return ip;
  121. }else {
  122. if (isValidIPAddress(sdpIp)) {
  123. return sdpIp;
  124. }else {
  125. // 按照域名解析
  126. String hostAddress = null;
  127. try {
  128. hostAddress = InetAddress.getByName(sdpIp).getHostAddress();
  129. } catch (UnknownHostException e) {
  130. logger.error("[获取SDP IP]: 域名解析失败");
  131. }
  132. return hostAddress;
  133. }
  134. }
  135. }
  136. public String getStreamIp() {
  137. if (ObjectUtils.isEmpty(streamIp)){
  138. return ip;
  139. }else {
  140. return streamIp;
  141. }
  142. }
  143. public String getSipDomain() {
  144. return sipDomain;
  145. }
  146. public String getSendRtpPortRange() {
  147. return sendRtpPortRange;
  148. }
  149. public MediaServerItem getMediaSerItem(){
  150. MediaServerItem mediaServerItem = new MediaServerItem();
  151. mediaServerItem.setId(id);
  152. mediaServerItem.setIp(ip);
  153. mediaServerItem.setDefaultServer(true);
  154. mediaServerItem.setHookIp(getHookIp());
  155. mediaServerItem.setSdpIp(getSdpIp());
  156. mediaServerItem.setStreamIp(getStreamIp());
  157. mediaServerItem.setHttpPort(httpPort);
  158. mediaServerItem.setHttpSSlPort(httpSSlPort);
  159. mediaServerItem.setRtmpPort(rtmpPort);
  160. mediaServerItem.setRtmpSSlPort(rtmpSSlPort);
  161. mediaServerItem.setRtpProxyPort(getRtpProxyPort());
  162. mediaServerItem.setRtspPort(rtspPort);
  163. mediaServerItem.setRtspSSLPort(rtspSSLPort);
  164. mediaServerItem.setAutoConfig(autoConfig);
  165. mediaServerItem.setSecret(secret);
  166. mediaServerItem.setRtpEnable(rtpEnable);
  167. mediaServerItem.setRtpPortRange(rtpPortRange);
  168. mediaServerItem.setSendRtpPortRange(sendRtpPortRange);
  169. mediaServerItem.setRecordAssistPort(recordAssistPort);
  170. mediaServerItem.setHookAliveInterval(120);
  171. mediaServerItem.setCreateTime(DateUtil.getNow());
  172. mediaServerItem.setUpdateTime(DateUtil.getNow());
  173. return mediaServerItem;
  174. }
  175. private boolean isValidIPAddress(String ipAddress) {
  176. if ((ipAddress != null) && (!ipAddress.isEmpty())) {
  177. 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);
  178. }
  179. return false;
  180. }
  181. }