dengming
2022-03-10 f88c70d38ce1c9c0d04460d0c225373c84dc2eca
src/main/java/com/genersoft/iot/vmp/service/impl/MediaServerServiceImpl.java
@@ -46,8 +46,7 @@
 * 媒体服务器节点管理
 */
@Service
@Order(value=2)
public class MediaServerServiceImpl implements IMediaServerService, CommandLineRunner {
public class MediaServerServiceImpl implements IMediaServerService {
    private final static Logger logger = LoggerFactory.getLogger(MediaServerServiceImpl.class);
@@ -102,9 +101,8 @@
     * 初始化
     */
    @Override
    public void run(String... args) throws Exception {
    public void updateVmServer(List<MediaServerItem>  mediaServerItemList) {
        logger.info("[缓存初始化] Media Server ");
        List<MediaServerItem> mediaServerItemList = mediaServerMapper.queryAll();
        for (MediaServerItem mediaServerItem : mediaServerItemList) {
            if (StringUtils.isEmpty(mediaServerItem.getId())) {
                continue;
@@ -162,19 +160,21 @@
    }
    @Override
    public void closeRTPServer(Device device, String channelId) {
        String mediaServerId = streamSession.getMediaServerId(device.getDeviceId(), channelId);
    public void closeRTPServer(String deviceId, String channelId, String stream) {
        String mediaServerId = streamSession.getMediaServerId(deviceId, channelId, stream);
        String ssrc = streamSession.getSSRC(deviceId, channelId, stream);
        MediaServerItem mediaServerItem = this.getOne(mediaServerId);
        if (mediaServerItem != null) {
            String streamId = String.format("%s_%s", device.getDeviceId(), channelId);
            String streamId = String.format("%s_%s", deviceId, channelId);
            zlmrtpServerFactory.closeRTPServer(mediaServerItem, streamId);
            releaseSsrc(mediaServerItem, streamSession.getSSRC(device.getDeviceId(), channelId));
            releaseSsrc(mediaServerItem.getId(), ssrc);
        }
        streamSession.remove(device.getDeviceId(), channelId);
        streamSession.remove(deviceId, channelId, stream);
    }
    @Override
    public void releaseSsrc(MediaServerItem mediaServerItem, String ssrc) {
    public void releaseSsrc(String mediaServerItemId, String ssrc) {
        MediaServerItem mediaServerItem = getOne(mediaServerItemId);
        if (mediaServerItem == null || ssrc == null) {
            return;
        }
@@ -224,7 +224,8 @@
            String key = (String) mediaServerKey;
            MediaServerItem mediaServerItem = (MediaServerItem) redisUtil.get(key);
            // 检查状态
            if (redisUtil.zScore(onlineKey, mediaServerItem.getId()) != null) {
            Double aDouble = redisUtil.zScore(onlineKey, mediaServerItem.getId());
            if (aDouble != null) {
                mediaServerItem.setStatus(true);
            }
            result.add(mediaServerItem);
@@ -511,7 +512,7 @@
        param.put("hook.on_stream_not_found",String.format("%s/on_stream_not_found", hookPrex));
        param.put("hook.on_server_keepalive",String.format("%s/on_server_keepalive", hookPrex));
        param.put("hook.timeoutSec","20");
        param.put("general.streamNoneReaderDelayMS","-1".equals(mediaServerItem.getStreamNoneReaderDelayMS())?"3600000":mediaServerItem.getStreamNoneReaderDelayMS() );
        param.put("general.streamNoneReaderDelayMS",mediaServerItem.getStreamNoneReaderDelayMS()==-1?"3600000":mediaServerItem.getStreamNoneReaderDelayMS() );
        JSONObject responseJSON = zlmresTfulUtils.setServerConfig(mediaServerItem, param);
@@ -609,6 +610,11 @@
        String key = VideoManagerConstants.MEDIA_SERVER_PREFIX + userSetup.getServerId() + "_" + id;
        redisUtil.del(key);
    }
    @Override
    public void deleteDb(String id){
        //同步删除数据库中的数据
        mediaServerMapper.delOne(id);
    }
    @Override
    public void updateMediaServerKeepalive(String mediaServerId, JSONObject data) {