|  |  | 
 |  |  | import com.alibaba.fastjson2.JSON; | 
 |  |  | import com.alibaba.fastjson2.JSONArray; | 
 |  |  | import com.alibaba.fastjson2.JSONObject; | 
 |  |  | import com.baomidou.dynamic.datasource.annotation.DS; | 
 |  |  | import com.genersoft.iot.vmp.common.CommonCallback; | 
 |  |  | import com.genersoft.iot.vmp.common.VideoManagerConstants; | 
 |  |  | import com.genersoft.iot.vmp.conf.DynamicTask; | 
 |  |  | 
 |  |  |  * 媒体服务器节点管理 | 
 |  |  |  */ | 
 |  |  | @Service | 
 |  |  | @DS("master") | 
 |  |  | public class MediaServerServiceImpl implements IMediaServerService { | 
 |  |  |  | 
 |  |  |     private final static Logger logger = LoggerFactory.getLogger(MediaServerServiceImpl.class); | 
 |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 初始化 | 
 |  |  |      */ | 
 |  |  | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public SSRCInfo openRTPServer(MediaServerItem mediaServerItem, String streamId, String presetSsrc, boolean ssrcCheck, | 
 |  |  |                                   boolean isPlayback, Integer port, Boolean reUsePort, Integer tcpMode) { | 
 |  |  |                                   boolean isPlayback, Integer port, Boolean onlyAuto, Boolean reUsePort, Integer tcpMode) { | 
 |  |  |         if (mediaServerItem == null || mediaServerItem.getId() == null) { | 
 |  |  |             logger.info("[openRTPServer] 失败, mediaServerItem == null || mediaServerItem.getId() == null"); | 
 |  |  |             return null; | 
 |  |  | 
 |  |  |         } | 
 |  |  |         int rtpServerPort; | 
 |  |  |         if (mediaServerItem.isRtpEnable()) { | 
 |  |  |             rtpServerPort = zlmServerFactory.createRTPServer(mediaServerItem, streamId, ssrcCheck ? Long.parseLong(ssrc) : 0, port, reUsePort, tcpMode); | 
 |  |  |             rtpServerPort = zlmServerFactory.createRTPServer(mediaServerItem, streamId, ssrcCheck ? Long.parseLong(ssrc) : 0, port, onlyAuto, reUsePort, tcpMode); | 
 |  |  |         } else { | 
 |  |  |             rtpServerPort = mediaServerItem.getRtpProxyPort(); | 
 |  |  |         } | 
 |  |  |         return new SSRCInfo(rtpServerPort, ssrc, streamId); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public SSRCInfo openRTPServer(MediaServerItem mediaServerItem, String streamId, String ssrc, boolean ssrcCheck, boolean isPlayback, Integer port, Boolean onlyAuto) { | 
 |  |  |         return openRTPServer(mediaServerItem, streamId, ssrc, ssrcCheck, isPlayback, port, onlyAuto, null, 0); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public void closeRTPServer(MediaServerItem mediaServerItem, String streamId) { | 
 |  |  | 
 |  |  |     @Override | 
 |  |  |     public void closeRTPServer(String mediaServerId, String streamId) { | 
 |  |  |         MediaServerItem mediaServerItem = this.getOne(mediaServerId); | 
 |  |  |         if (mediaServerItem.isRtpEnable()) { | 
 |  |  |         if (mediaServerItem != null && mediaServerItem.isRtpEnable()) { | 
 |  |  |             closeRTPServer(mediaServerItem, streamId); | 
 |  |  |         } | 
 |  |  |         zlmresTfulUtils.closeStreams(mediaServerItem, "rtp", streamId); | 
 |  |  | 
 |  |  |         return JsonUtil.redisJsonToObject(redisTemplate, key, MediaServerItem.class); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public MediaServerItem getDefaultMediaServer() { | 
 |  |  |  | 
 |  |  |         return mediaServerMapper.queryDefault(); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | 
 |  |  |             param.put("rtp_proxy.port_range", mediaServerItem.getRtpPortRange().replace(",", "-")); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         if (mediaServerItem.getRecordPath() != null) { | 
 |  |  |         if (!ObjectUtils.isEmpty(mediaServerItem.getRecordPath())) { | 
 |  |  |             File recordPathFile = new File(mediaServerItem.getRecordPath()); | 
 |  |  |             param.put("protocol.mp4_save_path", recordPathFile.getParentFile().getPath()); | 
 |  |  |             param.put("protocol.downloadRoot", recordPathFile.getParentFile().getPath()); |