MediaConfig.java 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286
  1. package com.genersoft.iot.vmp.conf;
  2. import com.genersoft.iot.vmp.media.bean.MediaServer;
  3. import com.genersoft.iot.vmp.utils.DateUtil;
  4. import org.slf4j.Logger;
  5. import org.slf4j.LoggerFactory;
  6. import org.springframework.beans.factory.annotation.Value;
  7. import org.springframework.context.annotation.Configuration;
  8. import org.springframework.core.annotation.Order;
  9. import org.springframework.util.ObjectUtils;
  10. import java.net.InetAddress;
  11. import java.net.UnknownHostException;
  12. import java.util.regex.Pattern;
  13. @Configuration("mediaConfig")
  14. @Order(0)
  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.wan_ip}")
  23. private String wanIp;
  24. @Value("${media.hook-ip:127.0.0.1}")
  25. private String hookIp;
  26. @Value("${sip.domain}")
  27. private String sipDomain;
  28. @Value("${media.sdp-ip:${media.wan_ip}}")
  29. private String sdpIp;
  30. @Value("${media.stream-ip:${media.wan_ip}}")
  31. private String streamIp;
  32. @Value("${media.http-port:0}")
  33. private Integer httpPort;
  34. @Value("${media.flv-port:0}")
  35. private Integer flvPort = 0;
  36. @Value("${media.ws-flv-port:0}")
  37. private Integer wsFlvPort = 0;
  38. @Value("${media.http-ssl-port:0}")
  39. private Integer httpSSlPort = 0;
  40. @Value("${media.flv-ssl-port:0}")
  41. private Integer flvSSlPort = 0;
  42. @Value("${media.ws-flv-ssl-port:0}")
  43. private Integer wsFlvSSlPort = 0;
  44. @Value("${media.rtmp-port:0}")
  45. private Integer rtmpPort = 0;
  46. @Value("${media.rtmp-ssl-port:0}")
  47. private Integer rtmpSSlPort = 0;
  48. @Value("${media.rtp-proxy-port:0}")
  49. private Integer rtpProxyPort = 0;
  50. @Value("${media.rtsp-port:0}")
  51. private Integer rtspPort = 0;
  52. @Value("${media.rtsp-ssl-port:0}")
  53. private Integer rtspSSLPort = 0;
  54. @Value("${media.auto-config:true}")
  55. private boolean autoConfig = true;
  56. @Value("${media.secret}")
  57. private String secret;
  58. @Value("${media.rtp.enable}")
  59. private boolean rtpEnable;
  60. @Value("${media.rtp.port-range}")
  61. private String rtpPortRange;
  62. @Value("${media.rtp.send-port-range}")
  63. private String rtpSendPortRange;
  64. @Value("${media.record-assist-port:0}")
  65. private Integer recordAssistPort = 0;
  66. @Value("${media.record-day:7}")
  67. private Integer recordDay;
  68. @Value("${media.record-path:}")
  69. private String recordPath;
  70. @Value("${media.type:zlm}")
  71. private String type;
  72. public String getId() {
  73. return id;
  74. }
  75. public String getIp() {
  76. return ip;
  77. }
  78. public String getHookIp() {
  79. return hookIp;
  80. }
  81. public int getHttpPort() {
  82. return httpPort;
  83. }
  84. public int getHttpSSlPort() {
  85. return httpSSlPort;
  86. }
  87. public int getRtmpPort() {
  88. return rtmpPort;
  89. }
  90. public int getRtmpSSlPort() {
  91. return rtmpSSlPort;
  92. }
  93. public int getRtpProxyPort() {
  94. if (rtpProxyPort == null) {
  95. return 0;
  96. }else {
  97. return rtpProxyPort;
  98. }
  99. }
  100. public int getRtspPort() {
  101. return rtspPort;
  102. }
  103. public int getRtspSSLPort() {
  104. return rtspSSLPort;
  105. }
  106. public boolean isAutoConfig() {
  107. return autoConfig;
  108. }
  109. public String getSecret() {
  110. return secret;
  111. }
  112. public boolean isRtpEnable() {
  113. return rtpEnable;
  114. }
  115. public String getRtpPortRange() {
  116. return rtpPortRange;
  117. }
  118. public int getRecordAssistPort() {
  119. return recordAssistPort;
  120. }
  121. public String getSdpIp() {
  122. if (ObjectUtils.isEmpty(sdpIp)){
  123. return ip;
  124. }else {
  125. if (isValidIPAddress(sdpIp)) {
  126. return sdpIp;
  127. }else {
  128. // 按照域名解析
  129. String hostAddress = null;
  130. try {
  131. hostAddress = InetAddress.getByName(sdpIp).getHostAddress();
  132. } catch (UnknownHostException e) {
  133. logger.error("[获取SDP IP]: 域名解析失败");
  134. }
  135. return hostAddress;
  136. }
  137. }
  138. }
  139. public String getStreamIp() {
  140. if (ObjectUtils.isEmpty(streamIp)){
  141. return ip;
  142. }else {
  143. return streamIp;
  144. }
  145. }
  146. public String getSipDomain() {
  147. return sipDomain;
  148. }
  149. public MediaServer getMediaSerItem(){
  150. MediaServer mediaServer = new MediaServer();
  151. mediaServer.setId(id);
  152. mediaServer.setIp(ip);
  153. mediaServer.setDefaultServer(true);
  154. mediaServer.setHookIp(getHookIp());
  155. mediaServer.setSdpIp(getSdpIp());
  156. mediaServer.setStreamIp(getStreamIp());
  157. mediaServer.setHttpPort(httpPort);
  158. if (flvPort == 0) {
  159. mediaServer.setFlvPort(httpPort);
  160. }else {
  161. mediaServer.setFlvPort(flvPort);
  162. }
  163. if (wsFlvPort == 0) {
  164. mediaServer.setWsFlvPort(httpPort);
  165. }else {
  166. mediaServer.setWsFlvPort(wsFlvPort);
  167. }
  168. if (flvSSlPort == 0) {
  169. mediaServer.setFlvSSLPort(httpSSlPort);
  170. }else {
  171. mediaServer.setFlvSSLPort(flvSSlPort);
  172. }
  173. if (wsFlvSSlPort == 0) {
  174. mediaServer.setWsFlvSSLPort(httpSSlPort);
  175. }else {
  176. mediaServer.setWsFlvSSLPort(wsFlvSSlPort);
  177. }
  178. mediaServer.setHttpSSlPort(httpSSlPort);
  179. mediaServer.setRtmpPort(rtmpPort);
  180. mediaServer.setRtmpSSlPort(rtmpSSlPort);
  181. mediaServer.setRtpProxyPort(getRtpProxyPort());
  182. mediaServer.setRtspPort(rtspPort);
  183. mediaServer.setRtspSSLPort(rtspSSLPort);
  184. mediaServer.setAutoConfig(autoConfig);
  185. mediaServer.setSecret(secret);
  186. mediaServer.setRtpEnable(rtpEnable);
  187. mediaServer.setRtpPortRange(rtpPortRange);
  188. mediaServer.setSendRtpPortRange(rtpSendPortRange);
  189. mediaServer.setRecordAssistPort(recordAssistPort);
  190. mediaServer.setHookAliveInterval(10f);
  191. mediaServer.setRecordDay(recordDay);
  192. mediaServer.setStatus(false);
  193. mediaServer.setType(type);
  194. if (recordPath != null) {
  195. mediaServer.setRecordPath(recordPath);
  196. }
  197. mediaServer.setCreateTime(DateUtil.getNow());
  198. mediaServer.setUpdateTime(DateUtil.getNow());
  199. return mediaServer;
  200. }
  201. public Integer getRecordDay() {
  202. return recordDay;
  203. }
  204. public void setRecordDay(Integer recordDay) {
  205. this.recordDay = recordDay;
  206. }
  207. public String getRecordPath() {
  208. return recordPath;
  209. }
  210. public void setRecordPath(String recordPath) {
  211. this.recordPath = recordPath;
  212. }
  213. public String getRtpSendPortRange() {
  214. return rtpSendPortRange;
  215. }
  216. public void setRtpSendPortRange(String rtpSendPortRange) {
  217. this.rtpSendPortRange = rtpSendPortRange;
  218. }
  219. private boolean isValidIPAddress(String ipAddress) {
  220. if ((ipAddress != null) && (!ipAddress.isEmpty())) {
  221. 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);
  222. }
  223. return false;
  224. }
  225. }