MediaConfig.java 7.2 KB

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