2024-03-19 17:52:11 +08:00
|
|
|
|
package com.genersoft.iot.vmp.media;
|
2020-10-13 17:16:38 +08:00
|
|
|
|
|
2021-04-28 15:10:35 +08:00
|
|
|
|
import com.genersoft.iot.vmp.conf.MediaConfig;
|
2024-12-11 18:26:18 +08:00
|
|
|
|
import com.genersoft.iot.vmp.conf.UserSetting;
|
2024-06-13 18:10:01 +08:00
|
|
|
|
import com.genersoft.iot.vmp.media.bean.MediaServer;
|
2024-03-31 00:28:45 +08:00
|
|
|
|
import com.genersoft.iot.vmp.media.event.mediaServer.MediaServerChangeEvent;
|
2024-03-19 17:52:11 +08:00
|
|
|
|
import com.genersoft.iot.vmp.media.service.IMediaServerService;
|
2024-07-03 17:24:35 +08:00
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
2020-10-13 17:16:38 +08:00
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
|
import org.springframework.boot.CommandLineRunner;
|
2024-03-19 18:29:58 +08:00
|
|
|
|
import org.springframework.context.ApplicationEventPublisher;
|
2020-10-13 17:16:38 +08:00
|
|
|
|
import org.springframework.core.annotation.Order;
|
|
|
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
|
2022-11-16 09:39:27 +08:00
|
|
|
|
import java.util.List;
|
2020-10-13 17:16:38 +08:00
|
|
|
|
|
2024-03-20 11:07:08 +08:00
|
|
|
|
/**
|
|
|
|
|
* 启动是从配置文件加载节点信息,以及发送个节点状态管理去控制节点状态
|
|
|
|
|
*/
|
2024-07-03 17:24:35 +08:00
|
|
|
|
@Slf4j
|
2020-10-13 17:16:38 +08:00
|
|
|
|
@Component
|
2023-02-22 18:01:30 +08:00
|
|
|
|
@Order(value=12)
|
2024-03-19 17:52:11 +08:00
|
|
|
|
public class MediaServerConfig implements CommandLineRunner {
|
2020-10-13 17:16:38 +08:00
|
|
|
|
|
2024-03-19 18:29:58 +08:00
|
|
|
|
@Autowired
|
|
|
|
|
private ApplicationEventPublisher applicationEventPublisher;
|
2020-10-13 18:55:42 +08:00
|
|
|
|
|
2021-04-28 15:10:35 +08:00
|
|
|
|
@Autowired
|
2021-07-16 16:34:51 +08:00
|
|
|
|
private IMediaServerService mediaServerService;
|
2021-04-28 15:10:35 +08:00
|
|
|
|
|
2021-03-30 18:46:34 +08:00
|
|
|
|
@Autowired
|
2021-07-16 16:34:51 +08:00
|
|
|
|
private MediaConfig mediaConfig;
|
2021-03-30 18:46:34 +08:00
|
|
|
|
|
2024-12-11 18:26:18 +08:00
|
|
|
|
@Autowired
|
|
|
|
|
private UserSetting userSetting;
|
|
|
|
|
|
2021-12-03 10:18:50 +08:00
|
|
|
|
|
2020-10-13 17:16:38 +08:00
|
|
|
|
@Override
|
|
|
|
|
public void run(String... strings) throws Exception {
|
2024-03-20 11:07:08 +08:00
|
|
|
|
// 清理所有在线节点的缓存信息
|
2021-12-03 10:18:50 +08:00
|
|
|
|
mediaServerService.clearMediaServerForOnline();
|
2024-03-21 23:39:32 +08:00
|
|
|
|
MediaServer defaultMediaServer = mediaServerService.getDefaultMediaServer();
|
|
|
|
|
MediaServer mediaSerItemInConfig = mediaConfig.getMediaSerItem();
|
2024-12-11 18:26:18 +08:00
|
|
|
|
mediaSerItemInConfig.setServerId(userSetting.getServerId());
|
2024-03-20 18:54:39 +08:00
|
|
|
|
if (defaultMediaServer != null && mediaSerItemInConfig.getId().equals(defaultMediaServer.getId())) {
|
|
|
|
|
mediaServerService.update(mediaSerItemInConfig);
|
2021-12-07 17:43:55 +08:00
|
|
|
|
}else {
|
2024-03-20 18:54:39 +08:00
|
|
|
|
if (defaultMediaServer != null) {
|
2024-10-25 17:41:50 +08:00
|
|
|
|
mediaServerService.delete(defaultMediaServer);
|
2024-03-20 18:54:39 +08:00
|
|
|
|
}
|
2024-03-21 23:39:32 +08:00
|
|
|
|
MediaServer mediaServerItem = mediaServerService.getOneFromDatabase(mediaSerItemInConfig.getId());
|
2024-03-20 18:54:39 +08:00
|
|
|
|
if (mediaServerItem == null) {
|
|
|
|
|
mediaServerService.add(mediaSerItemInConfig);
|
|
|
|
|
}else {
|
|
|
|
|
mediaServerService.update(mediaSerItemInConfig);
|
|
|
|
|
}
|
2021-12-02 17:37:29 +08:00
|
|
|
|
}
|
2024-03-19 18:29:58 +08:00
|
|
|
|
// 发送媒体节点变化事件
|
2022-02-20 16:22:43 +08:00
|
|
|
|
mediaServerService.syncCatchFromDatabase();
|
2024-03-20 00:26:04 +08:00
|
|
|
|
// 获取所有的zlm, 并开启主动连接
|
2024-03-21 23:39:32 +08:00
|
|
|
|
List<MediaServer> all = mediaServerService.getAllFromDatabase();
|
2024-07-03 17:24:35 +08:00
|
|
|
|
log.info("[媒体节点] 加载节点列表, 共{}个节点", all.size());
|
2024-03-19 18:29:58 +08:00
|
|
|
|
MediaServerChangeEvent event = new MediaServerChangeEvent(this);
|
2024-03-20 11:07:08 +08:00
|
|
|
|
event.setMediaServerItemList(all);
|
2024-03-19 18:29:58 +08:00
|
|
|
|
applicationEventPublisher.publishEvent(event);
|
2020-10-13 17:16:38 +08:00
|
|
|
|
}
|
|
|
|
|
}
|