648540858
2021-09-02 77bf85342b9d5a7954c85f05a54e6a46d41f0bf6
src/main/java/com/genersoft/iot/vmp/service/impl/MediaServerServiceImpl.java
@@ -83,7 +83,7 @@
        for (MediaServerItem mediaServerItem : mediaServerItemList) {
            // 更新
            if (mediaServerItem.getSsrcConfig() == null) {
                SsrcConfig ssrcConfig = new SsrcConfig(mediaServerItem.getId(), null, sipConfig.getSipDomain());
                SsrcConfig ssrcConfig = new SsrcConfig(mediaServerItem.getId(), null, sipConfig.getDomain());
                mediaServerItem.setSsrcConfig(ssrcConfig);
                redisUtil.set(VideoManagerConstants.MEDIA_SERVER_PREFIX + mediaServerItem.getId(), mediaServerItem);
            }
@@ -122,7 +122,7 @@
        String mediaServerId = streamSession.getMediaServerId(device.getDeviceId(), channelId);
        MediaServerItem mediaServerItem = this.getOne(mediaServerId);
        if (mediaServerItem != null) {
            String streamId = String.format("%s/%s", device.getDeviceId(), channelId);
            String streamId = String.format("%s_%s", device.getDeviceId(), channelId);
            zlmrtpServerFactory.closeRTPServer(mediaServerItem, streamId);
            releaseSsrc(mediaServerItem, streamSession.getSSRC(device.getDeviceId(), channelId));
        }
@@ -145,7 +145,7 @@
     */
    @Override
    public void clearRTPServer(MediaServerItem mediaServerItem) {
        mediaServerItem.setSsrcConfig(new SsrcConfig(mediaServerItem.getId(), null, sipConfig.getSipDomain()));
        mediaServerItem.setSsrcConfig(new SsrcConfig(mediaServerItem.getId(), null, sipConfig.getDomain()));
        redisUtil.zAdd(VideoManagerConstants.MEDIA_SERVERS_ONLINE_PREFIX, mediaServerItem.getId(), 0);
    }
@@ -162,7 +162,7 @@
                    new SsrcConfig(
                            mediaServerItemInDataBase.getId(),
                            null,
                            sipConfig.getSipDomain()
                            sipConfig.getDomain()
                    )
            );
        }
@@ -264,26 +264,26 @@
                if (serverItemInRedis != null) {
                    serverItemFromConfig.setSsrcConfig(serverItemInRedis.getSsrcConfig());
                }else {
                    serverItemFromConfig.setSsrcConfig(new SsrcConfig(serverItemFromConfig.getId(), null, sipConfig.getSipDomain()));
                    serverItemFromConfig.setSsrcConfig(new SsrcConfig(serverItemFromConfig.getId(), null, sipConfig.getDomain()));
                }
                redisUtil.set(key, serverItemFromConfig);
            }else {
                String key = VideoManagerConstants.MEDIA_SERVER_PREFIX + serverItemFromConfig.getId();
                serverItemFromConfig.setSsrcConfig(new SsrcConfig(serverItemFromConfig.getId(), null, sipConfig.getSipDomain()));
                serverItemFromConfig.setSsrcConfig(new SsrcConfig(serverItemFromConfig.getId(), null, sipConfig.getDomain()));
                redisUtil.set(key, serverItemFromConfig);
                mediaServerMapper.add(serverItemFromConfig);
            }
            resetOnlineServerItem(serverItemFromConfig);
            setZLMConfig(serverItemFromConfig);
        }else {
            String now = this.format.format(new Date(System.currentTimeMillis()));
            String now = this.format.format(System.currentTimeMillis());
            if (serverItem == null){
                    // 一个新的zlm接入wvp
                    serverItem = new MediaServerItem(zlmServerConfig, sipConfig.getSipIp());
                    serverItem = new MediaServerItem(zlmServerConfig, sipConfig.getIp());
                    serverItem.setCreateTime(now);
                    serverItem.setUpdateTime(now);
                String key = VideoManagerConstants.MEDIA_SERVER_PREFIX + serverItem.getId();
                serverItem.setSsrcConfig(new SsrcConfig(serverItem.getId(), null, sipConfig.getSipDomain()));
                serverItem.setSsrcConfig(new SsrcConfig(serverItem.getId(), null, sipConfig.getDomain()));
                redisUtil.set(key, serverItem);
                // 存入数据库
                mediaServerMapper.add(serverItem);
@@ -342,12 +342,14 @@
        if (redisUtil.zSize(key)  == null || redisUtil.zSize(key) == 0) {
            logger.info("获取负载最低的节点时无在线节点");
            return null;
        }
        // 获取分数最低的,及并发最低的
        Set<Object> objects = redisUtil.ZRange(key, 0, -1);
        ArrayList<Object> MediaServerObjectS = new ArrayList<>(objects);
        String mediaServerId = (String)MediaServerObjectS.get(0);
        ArrayList<Object> mediaServerObjectS = new ArrayList<>(objects);
        String mediaServerId = (String)mediaServerObjectS.get(0);
        return getOne(mediaServerId);
    }