|
@@ -12,7 +12,9 @@ import com.ozs.common.utils.DateUtils;
|
|
|
import com.ozs.common.utils.http.HttpUtils;
|
|
|
import com.ozs.framework.config.ServerConfig;
|
|
|
import com.ozs.service.entity.BaseCameraManagement;
|
|
|
+import com.ozs.service.entity.MsgAlarm;
|
|
|
import com.ozs.service.service.BaseCameraManagementService;
|
|
|
+import com.ozs.service.service.MsgAlarmService;
|
|
|
import com.ozs.system.mapper.SysDictDataMapper;
|
|
|
import com.ozs.web.core.config.CaneraConfig;
|
|
|
import lombok.SneakyThrows;
|
|
@@ -54,8 +56,6 @@ public class CameraUtil {
|
|
|
private static RedisCache rc;
|
|
|
private static ServerConfig sc;
|
|
|
|
|
|
- public final static String mvkey = "WAIT_MERGE_VIDEO_ALARM_ID";
|
|
|
-
|
|
|
public final static String tsFilekey = "mergeVideoTsFile";
|
|
|
|
|
|
// 相机配置
|
|
@@ -77,7 +77,8 @@ public class CameraUtil {
|
|
|
// redis
|
|
|
@Autowired
|
|
|
private ServerConfig serverConfig;
|
|
|
-
|
|
|
+ @Autowired
|
|
|
+ private MsgAlarmService msgAlarmService;
|
|
|
|
|
|
@Resource
|
|
|
BaseCameraManagementService baseCameraManagementService;
|
|
@@ -766,46 +767,21 @@ ffmpeg -i "concat:1.ts|2.ts" -c copy output.mp4
|
|
|
* ----------------------------废弃
|
|
|
*/
|
|
|
public void mergeVideo() {
|
|
|
- Date date = new Date();
|
|
|
- Calendar calendar = new GregorianCalendar();
|
|
|
- Map<String, Object> alarmIdMap = redisCache.getCacheMap(mvkey);
|
|
|
- List<String> dl = new ArrayList<>();
|
|
|
- log.info("WAIT_MERGE_VIDEO_ALARM_ID:{}", alarmIdMap);
|
|
|
- if (!ObjectUtils.isEmpty(alarmIdMap)) {
|
|
|
- Set<String> alarmIds = alarmIdMap.keySet();
|
|
|
- log.info("mergeVideo方法:alarmIds:{}", alarmIds);
|
|
|
- if (!ObjectUtils.isEmpty(alarmIds) && alarmIds.size() > 0) {
|
|
|
- for (String alarmId : alarmIds) {
|
|
|
- Object oTime = alarmIdMap.get(alarmId);
|
|
|
- Date alarmTime = (Date) oTime;
|
|
|
- // 判断当前时间是否超过报警时间 20分钟
|
|
|
- calendar.setTime(alarmTime);
|
|
|
- calendar.add(calendar.MINUTE, 20); //把日期往后增加一天,整数 往后推,负数往前移动
|
|
|
- alarmTime = calendar.getTime(); //这个时间就是日期往后推一天的结果
|
|
|
- if (date.compareTo(alarmTime) > 0) {
|
|
|
- // 表示已经超过报警时间20分钟,可以合成视频
|
|
|
- Map<String, Object> map = baseCameraManagementService.getCameraChannelByAlarmId(alarmId);
|
|
|
- if (!StringUtils.isBlank(map.get("channel").toString())) {
|
|
|
- log.info("报警UUID:{},相机通道:{},开始时间:{},结束时间:{}", alarmId, map.get("channel").toString(), (Date) oTime, date);
|
|
|
- String url = historyPlayListStr(map.get("channel").toString(), (Date) oTime, date, false);
|
|
|
-
|
|
|
- redisCache.setCacheObject("STREAMING_ALARM_VIDEO:" + alarmId, url);
|
|
|
- redisCache.expire("STREAMING_ALARM_VIDEO:" + alarmId, 365L, TimeUnit.DAYS);
|
|
|
- dl.add(alarmId);
|
|
|
- }
|
|
|
- }
|
|
|
+ // todo 查询没有URl 和 未解除的 报警信息 且过报警时间10 分钟
|
|
|
+ List<MsgAlarm> msgAlarms = msgAlarmService.queryAlarmInfoByAfterTenMinute();
|
|
|
+ if (!ObjectUtils.isEmpty(msgAlarms)) {
|
|
|
+ for (MsgAlarm msgAlarm : msgAlarms) {
|
|
|
+ // 表示已经超过报警时间10分钟,且没有解除报警、也没有报警Url 的可以合成视频
|
|
|
+ Map<String, Object> map = baseCameraManagementService.getCameraChannelByAlarmId(msgAlarm.getAlarmId());
|
|
|
+ if (!StringUtils.isBlank(map.get("channel").toString())) {
|
|
|
+ log.info("报警UUID:{},相机通道:{},开始时间:{},结束时间:{}", msgAlarm.getAlarmId(), map.get("channel").toString(), (Date) oTime, date);
|
|
|
+ String url = historyPlayListStr(map.get("channel").toString(), msgAlarm.getAlarmTime(), new Date(), false);
|
|
|
+ MsgAlarm byId = msgAlarmService.getById(msgAlarm.getId());
|
|
|
+ byId.setReleasedUrl(url);
|
|
|
+ msgAlarmService.updateById(byId);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- if (dl.size() > 0) {
|
|
|
- for (String s : dl) {
|
|
|
- alarmIdMap.remove(s);
|
|
|
- }
|
|
|
- }
|
|
|
- log.info("删除后的alarmIdMap:{}", alarmIdMap);
|
|
|
- redisCache.deleteObject(mvkey);
|
|
|
- redisCache.setCacheMap(mvkey, alarmIdMap);
|
|
|
-
|
|
|
}
|
|
|
|
|
|
|