| | |
| | | |
| | | @Scheduled(cron = "0/5 * * * * ?") |
| | | public void syncVtdu() { |
| | | log.info("定时同步Vtdu任务"); |
| | | log.debug("定时同步Vtdu任务"); |
| | | List<ArdChannel> channels = this.selectArdChannelList(new ArdChannel()); |
| | | if (channels == null || channels.isEmpty()) { |
| | | log.warn("没有获取到通道数据,退出同步"); |
| | |
| | | // 2. 合并操作:增、删、改 |
| | | channels.forEach(channel -> { |
| | | String name = channel.getDeviceId() + "_" + channel.getChanNo(); // 生成媒体表的 name |
| | | int isCode = "标准h264".equals(channel.getVideoCode()) ? 0 : 1; // 根据 videoCode 生成 isCode |
| | | String cameraId = channel.getDeviceId(); // cameraId 就是通道的 deviceId |
| | | String rtspSourceUrl = getRtspSource(channel); |
| | | String rtspUrl = "rtsp://" + mediamtxConfig.getPlayHost() + ":8554" + "/" + name; // 拼接 webrtcUrl |
| | |
| | | // 3. 删除操作:删除媒体表中多余的记录 |
| | | List<String> invalidNames = ardVtduList.stream() |
| | | .filter(vtdu -> !validNames.contains(vtdu.getName())) |
| | | .filter(vtdu -> !"publisher".equalsIgnoreCase(vtdu.getRtspSource())) // 不是机场流 |
| | | .map(ArdVtdu::getName) |
| | | .collect(Collectors.toList()); |
| | | |