| | |
| | | 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); |
| | | } |
| | |
| | | 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)); |
| | | } |
| | |
| | | */ |
| | | @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); |
| | | } |
| | | |
| | |
| | | new SsrcConfig( |
| | | mediaServerItemInDataBase.getId(), |
| | | null, |
| | | sipConfig.getSipDomain() |
| | | sipConfig.getDomain() |
| | | ) |
| | | ); |
| | | } |
| | |
| | | result.add((MediaServerItem)redisUtil.get(key)); |
| | | } |
| | | return result; |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public List<MediaServerItem> getAllFromDatabase() { |
| | | return mediaServerMapper.queryAll(); |
| | | } |
| | | |
| | | @Override |
| | |
| | | if (mediaConfig.getRtspSSLPort() == 0) serverItemFromConfig.setRtspSSLPort(zlmServerConfig.getRtspSSlport()); |
| | | if (mediaConfig.getRtpProxyPort() == 0) serverItemFromConfig.setRtpProxyPort(zlmServerConfig.getRtpProxyPort()); |
| | | if (serverItem != null){ |
| | | // 可能是同一个zlm但id发生了变化 |
| | | if (!serverItem.getId().equals(zlmServerConfig.getGeneralMediaServerId())) { |
| | | mediaServerMapper.delOne(serverItem.getId()); |
| | | redisUtil.del(VideoManagerConstants.MEDIA_SERVER_PREFIX + serverItem.getId()); |
| | | |
| | | String key = VideoManagerConstants.MEDIA_SERVER_PREFIX + serverItemFromConfig.getId(); |
| | | serverItemFromConfig.setSsrcConfig(new SsrcConfig(serverItemFromConfig.getId(), null, sipConfig.getSipDomain())); |
| | | redisUtil.set(key, serverItemFromConfig); |
| | | mediaServerMapper.add(serverItemFromConfig); |
| | | mediaServerMapper.delDefault(); |
| | | mediaServerMapper.add(serverItemFromConfig); |
| | | String key = VideoManagerConstants.MEDIA_SERVER_PREFIX + serverItemFromConfig.getId(); |
| | | MediaServerItem serverItemInRedis = (MediaServerItem)redisUtil.get(key); |
| | | if (serverItemInRedis != null) { |
| | | serverItemFromConfig.setSsrcConfig(serverItemInRedis.getSsrcConfig()); |
| | | }else { |
| | | mediaServerMapper.update(serverItemFromConfig); |
| | | 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); |
| | |
| | | |
| | | 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); |
| | | } |
| | | |