Browse Source

视频压缩

gao.qiang 1 year ago
parent
commit
80defa3200

+ 13 - 3
business-service/src/main/java/com/ozs/utils/CameraUtil.java

@@ -747,6 +747,16 @@ ffmpeg -i "concat:1.ts|2.ts" -c copy output.mp4
     }
 
 
+    /**
+     * RTSP流视频压缩
+     */
+    public void videoCompression(String code) {
+                // 执行网络请求...
+                log.info(ffmpegPath + " -i /opt/streams/map/"+code+".mp4 -c:v libx264 -s 640x480 -c:a adpcm_swf -ar 44100 /opt/streams/compress/" + code+".mp4");
+                cmdCameraUtil.cmd(ffmpegPath + " -i /opt/streams/map/"+code+".mp4 -c:v libx264 -s 640x480 -c:a adpcm_swf -ar 44100 /opt/streams/compress/" + code+".mp4");
+    }
+
+
     public static List<Map<String, Object>> filterRecordList(String channel,
                                                              Date startTm,
                                                              Date endTm,
@@ -935,7 +945,7 @@ ffmpeg -i "concat:1.ts|2.ts" -c copy output.mp4
         }
     }
 
-    public void playbackURLs(List<String> list) {
+    public void playbackURLs(List<String> list, String alarmPlayTimeValue) {
         log.info("--------------->playbackURLs");
         CompletableFuture future = CompletableFuture.supplyAsync(() -> {
             log.info("异步任务开始-----》");
@@ -945,9 +955,9 @@ ffmpeg -i "concat:1.ts|2.ts" -c copy output.mp4
             // 获取当前时间
             OffsetDateTime currentTime = OffsetDateTime.now();
 // 获取当前时间的前10分钟时间
-            OffsetDateTime beforeTenMinutes = currentTime.minusMinutes(10);
+            OffsetDateTime beforeTenMinutes = currentTime.minusMinutes(Long.parseLong(alarmPlayTimeValue));
 // 获取当前时间的后10分钟时间
-            OffsetDateTime afterTenMinutes = currentTime.plusMinutes(10);
+            OffsetDateTime afterTenMinutes = currentTime.plusMinutes(Long.parseLong(alarmPlayTimeValue));
 // 格式化时间
             DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSXXX");
             playbackVo.setBeginTime(beforeTenMinutes.format(formatter));

+ 9 - 1
vehicle-admin/src/main/java/com/ozs/web/controller/accountmanagment/BaseCameraManagementController.java

@@ -1035,7 +1035,7 @@ public class BaseCameraManagementController extends BaseController {
     public AjaxResult getAlarmRecord() {
         List<BaseCameraManagement> list = baseCameraManagementService.list(new QueryWrapper<BaseCameraManagement>().eq("line_dir",2));
         List<String> collect = list.stream().map(BaseCameraManagement::getCameraCode).collect(Collectors.toList());
-        CompletableFuture.runAsync(() -> cameraUtil.playbackURLs(collect));
+        CompletableFuture.runAsync(() -> cameraUtil.playbackURLs(collect,"5"));
         return AjaxResult.success("ok");
     }
 
@@ -1045,5 +1045,13 @@ public class BaseCameraManagementController extends BaseController {
     public AjaxResult stop(String id) {
       return cameraUtil.stop(id);
     }
+
+
+    @ApiOperation(value = "视频压缩")
+    @GetMapping(value = "/videoCompression")
+    public AjaxResult videoCompression(String code) {
+        cameraUtil.videoCompression(code);
+        return AjaxResult.success();
+    }
 }
 

+ 8 - 3
vehicle-sdk/src/main/java/com/ozs/controller/upload/GeoHazardMonitorTokenController.java

@@ -3,6 +3,7 @@ package com.ozs.controller.upload;
 import com.alibaba.fastjson2.JSON;
 import com.alibaba.fastjson2.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.ozs.common.core.domain.entity.SysDictData;
 import com.ozs.common.core.redis.RedisCache;
 import com.ozs.common.utils.ApiTokenUtils;
 import com.ozs.common.utils.ChineseToPingyin;
@@ -57,6 +58,8 @@ import com.ozs.service.MsgAlarmService;
 import com.ozs.service.SvcAddressService;
 import com.ozs.service.TerminalIgnoreAlarmService;
 import com.ozs.service.VehiclePositionService;
+import com.ozs.system.service.ISysDictDataService;
+import com.ozs.system.service.ISysDictTypeService;
 import com.ozs.utils.CameraUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
@@ -81,6 +84,7 @@ import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.CompletableFuture;
 import java.util.stream.Collectors;
 
 /**
@@ -122,8 +126,6 @@ public class GeoHazardMonitorTokenController {
     @Autowired
     private BaseRailwayManagementService baseRailwayManagementService;
     @Autowired
-    private RedisCache redisCache;
-    @Autowired
     private BaseTerminalService baseTerminalService;
     @Autowired
     private CameraUtil cameraUtil;
@@ -137,6 +139,8 @@ public class GeoHazardMonitorTokenController {
     private String env;
     @Value("${sdk.publish}")
     private String sdkUrl;
+    @Autowired
+    private ISysDictTypeService dictTypeService;
 
     /**
      * 获取web访问令牌
@@ -351,7 +355,8 @@ public class GeoHazardMonitorTokenController {
                 log.info("result:{}", result);
 
                 List<String> collect = baseCameraManagementList.stream().map(BaseCameraManagement::getCameraCode).collect(Collectors.toList());
-//                CompletableFuture.runAsync(() ->cameraUtil.playbackURLs(collect));
+                List<SysDictData> data = dictTypeService.selectDictDataByType("alarm_play_time_value");
+                CompletableFuture.runAsync(() ->cameraUtil.playbackURLs(collect,data.get(0).getDictValue()));
             } else {
                 BeanUtils.copyProperties(reqMsgAlarmVo, msgAlarmVice);
                 msgAlarmVice.setCreateBy(admin.getUserId());