|
@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.ozs.common.config.BaseConfig;
|
|
|
import com.ozs.common.constant.Constants;
|
|
|
import com.ozs.common.core.domain.entity.SysDictData;
|
|
|
+import com.ozs.common.core.redis.RedisCache;
|
|
|
import com.ozs.common.exception.base.BaseException;
|
|
|
import com.ozs.common.utils.DateUtils;
|
|
|
import com.ozs.common.utils.http.HttpUtils;
|
|
@@ -63,6 +64,9 @@ public class CameraUtil {
|
|
|
|
|
|
@Autowired
|
|
|
private SysDictDataMapper dictDataMapper;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private RedisCache redisCache;
|
|
|
@Resource
|
|
|
BaseCameraManagementService baseCameraManagementService;
|
|
|
|
|
@@ -770,4 +774,42 @@ ffmpeg -i "concat:1.ts|2.ts" -c copy output.flv
|
|
|
return null;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 定时合成视频
|
|
|
+ */
|
|
|
+ public void mergeVideo() {
|
|
|
+ Date date = new Date();
|
|
|
+ Calendar calendar = new GregorianCalendar();
|
|
|
+
|
|
|
+
|
|
|
+ Map<String, Object> alarmIdMap = redisCache.getCacheMap("WAIT_MERGE_VIDEO_ALARM_ID");
|
|
|
+ log.info("WAIT_MERGE_VIDEO_ALARM_ID:{}", alarmIdMap);
|
|
|
+ if (!ObjectUtils.isEmpty(alarmIdMap)) {
|
|
|
+ Set<String> alarmIds = alarmIdMap.keySet();
|
|
|
+ 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分钟,可以合成视频
|
|
|
+ String cameraChannelByAlarmId = baseCameraManagementService.getCameraChannelByAlarmId(alarmId);
|
|
|
+ if (!StringUtils.isBlank(cameraChannelByAlarmId)) {
|
|
|
+ log.info("报警UUID:{},相机通道:{},开始时间:{},结束时间:{}", alarmId, cameraChannelByAlarmId, (Date) oTime, date);
|
|
|
+ String url = historyPlayListStr(cameraChannelByAlarmId, (Date) oTime, date);
|
|
|
+ redisCache.setCacheObject("STREAMING_ALARM_VIDEO:" + alarmId, url);
|
|
|
+ redisCache.expire("STREAMING_ALARM_VIDEO:" + alarmId, 365L, TimeUnit.DAYS);
|
|
|
+ alarmIdMap.remove(alarmId);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ redisCache.setCacheMap("WAIT_MERGE_VIDEO_ALARM_ID", alarmIdMap);
|
|
|
+
|
|
|
+ }
|
|
|
}
|