| 
					
				 | 
			
			
				@@ -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); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 |