Переглянути джерело

报警回放本地测试调试

gao.qiang 1 рік тому
батько
коміт
d1789cf351

+ 107 - 27
business-service/src/main/java/com/ozs/utils/CameraUtil.java

@@ -89,6 +89,7 @@ public class CameraUtil {
     private static String host;
     private static String appKey;
     private static String appSecret;
+    private static String rtmpUrl;
 
     @Autowired
     private CaneraConfig caneraConfig;
@@ -257,6 +258,12 @@ ffmpeg -i "concat:1.ts|2.ts" -c copy output.mp4
 //        return webUrl + "/ws/" + channel + "/" + cameraCode + ".flv";
     }
 
+    /**
+     * web页面实时流接口
+     * @param cameraCode
+     * @param channel
+     * @return
+     */
     public static String getPlayFlv(String cameraCode, String channel) {
         List<String> pathList = new ArrayList<>();
         String data = HttpUtils.sendGet(webUrl + "/rtsp/api/list");
@@ -554,6 +561,7 @@ ffmpeg -i "concat:1.ts|2.ts" -c copy output.mp4
         host = caneraConfig.getHost();
         appKey = caneraConfig.getAppKey();
         appSecret = caneraConfig.getAppSecret();
+        rtmpUrl=caneraConfig.getRtmpUrl();
     }
 
     /**
@@ -694,6 +702,13 @@ ffmpeg -i "concat:1.ts|2.ts" -c copy output.mp4
 
     }
 
+    /**
+     * web页面视频回放接口
+     * @param code
+     * @param startTm
+     * @param endTm
+     * @return
+     */
     public static String getRecordList(String code, Date startTm, Date endTm) {
         PlaybackVo playbackVo = new PlaybackVo();
         playbackVo.setCameraIndexCode(code);
@@ -705,8 +720,8 @@ ffmpeg -i "concat:1.ts|2.ts" -c copy output.mp4
         //对象转换json字符串
         String body = JSONObject.toJSONString(playbackVo);
         //调用天网接口
-        String previewURLs = getPreviewURLs("/api/video/v1/cameras/playbackURLs", body);
-        JSONObject outJson = (JSONObject) JSONObject.parse(previewURLs);
+        String playbackURLs = getPreviewURLs("/api/video/v1/cameras/playbackURLs", body);
+        JSONObject outJson = (JSONObject) JSONObject.parse(playbackURLs);
         log.info("outJson-------->" + outJson);
         if ("0".equals(outJson.getString("code"))) {
             JSONObject data = outJson.getJSONObject("data");
@@ -722,15 +737,15 @@ ffmpeg -i "concat:1.ts|2.ts" -c copy output.mp4
     /**
      * HTTP流转RTSP流
      */
-    public void streamConversion(String code) {
+    public String streamConversion(String code) {
 
         ExecutorService executor = Executors.newSingleThreadExecutor();
         Callable<String> task = new Callable<String>() {
             @Override
             public String call() throws Exception {
                 // 执行网络请求...
-                log.info(ffmpegPath + " -re -i /opt/streams/file/vid/" + code + ".mp4  -c:v copy -c:a copy -f flv rtmp://124.70.58.209:1935/live/" + code);
-                cmdCameraUtil.cmd(ffmpegPath + " -re -i /opt/streams/file/vid/" + code + ".mp4  -c:v copy -c:a copy -f flv rtmp://124.70.58.209:1935/live/" + code);
+                log.info(ffmpegPath + " -re -i /opt/streams/compress/" + code + ".mp4  -c:v copy -c:a copy -f flv "+rtmpUrl+"/live/" + code);
+                cmdCameraUtil.cmd(ffmpegPath + " -re -i /opt/streams/compress/" + code + ".mp4  -c:v copy -c:a copy -f flv "+rtmpUrl+"/live/" + code);
                 return "Response";
             }
         };
@@ -744,6 +759,17 @@ ffmpeg -i "concat:1.ts|2.ts" -c copy output.mp4
         }
 
         executor.shutdown();
+        return  bakUrlRtsp+"/live/"+code;
+    }
+
+
+    /**
+     * 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");
     }
 
 
@@ -912,6 +938,41 @@ ffmpeg -i "concat:1.ts|2.ts" -c copy output.mp4
     }
 
 
+    /**
+     * 车载终端实时流调用的远程天网接口
+     * @param camerasVo
+     * @param channel
+     */
+    public  String apiPreviewURLs(CamerasVo camerasVo) {
+        /**
+         *  jsonBody.put("cameraIndexCode", "01ea43e6676f4e47bd6c5cd9e02aa006");
+         *         jsonBody.put("streamType", 0);
+         *         jsonBody.put("protocol","rtsp");
+         *         jsonBody.put("transmode", 1);
+         *         jsonBody.put("expand","streamform=rtp");
+         */
+        camerasVo.setProtocol("rtsp");
+        camerasVo.setTransmode(1);
+        camerasVo.setExpand("streamform=rtp");
+        String body = JSONObject.toJSONString(camerasVo);
+        String previewURLs = getPreviewURLs("/api/video/v1/cameras/previewURLs", body);
+        log.info("-------------------------------->>>>>previewURLs" + previewURLs);
+        JSONObject outJson = JSONObject.parse(previewURLs);
+        if ("0".equals(outJson.getString("code"))) {
+            log.info("outJson----->" + outJson);
+            JSONObject data = outJson.getJSONObject("data");
+            String urls = data.getString("url");
+            return urls;
+        }else {
+            return "1";
+        }
+    }
+
+    /**
+     * web页面实时流调用的远程天网接口
+     * @param camerasVo
+     * @param channel
+     */
     public static void previewURLs(CamerasVo camerasVo, String channel) {
         /**
          *  jsonBody.put("cameraIndexCode", "01ea43e6676f4e47bd6c5cd9e02aa006");
@@ -920,6 +981,7 @@ ffmpeg -i "concat:1.ts|2.ts" -c copy output.mp4
          *         jsonBody.put("transmode", 1);
          *         jsonBody.put("expand","streamform=rtp");
          */
+        camerasVo.setStreamType(0);
         camerasVo.setProtocol("rtsp");
         camerasVo.setTransmode(1);
         camerasVo.setExpand("streamform=rtp");
@@ -935,23 +997,31 @@ ffmpeg -i "concat:1.ts|2.ts" -c copy output.mp4
         }
     }
 
-    public void playbackURLs(List<String> list) {
+    /**
+     * 报警回放本地测试
+     * 从天网拉回放流,然后根据url把流下载下来变成文件,然后进行视频压缩
+     * @param list
+     * @param alarmPlayTimeValue
+     */
+    public void playbackURLs(List<String> list, String alarmPlayTimeValue) {
         log.info("--------------->playbackURLs");
         CompletableFuture future = CompletableFuture.supplyAsync(() -> {
+            log.info("异步任务开始-----》");
 //            for (String code : list) {
+            String code="42010001541320000024";
             PlaybackVo playbackVo = new PlaybackVo();
-            playbackVo.setCameraIndexCode("01ea43e6676f4e47bd6c5cd9e02aa006");
+            playbackVo.setCameraIndexCode(code);
             // 获取当前时间
             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));
             //现在当前时间:后续需要修改成报警时间的后几分钟
-            playbackVo.setEndTime(currentTime.format(formatter));
+            playbackVo.setEndTime(afterTenMinutes.format(formatter));
             // jsonBody.put("protocol","rtsp");
             //        jsonBody.put("expand","streamform=rtp");
             playbackVo.setProtocol("rtsp");
@@ -960,24 +1030,34 @@ ffmpeg -i "concat:1.ts|2.ts" -c copy output.mp4
             String body = JSONObject.toJSONString(playbackVo);
             //调用天网接口
             log.info("body----->" + body);
-            String previewURLs = getPreviewURLs("/api/video/v1/cameras/playbackURLs", body);
-            log.info("previewURLs----->" + previewURLs);
-            JSONObject outJson = (JSONObject) JSONObject.parse(previewURLs);
-            if ("0".equals(outJson.getString("code"))) {
-                log.info("outJson----->" + outJson);
-                JSONObject data = outJson.getJSONObject("data");
-                String urls = data.getString("url");
-                log.info("--------------->urls::" + urls);
-
-//                    String FilePath = "/opt/streams/map/" + code + ".mp4";
-                String FilePath = "/opt/streams/map/01ea43e6676f4e47bd6c5cd9e02aa006.mp4";
-                Process process = rtspToMP4.StartRecord(ffmpegPath, urls, FilePath);
-                log.info("------playbackURLs----->>>>:" + process);
-                if (null != process) {
-                    map.put("01ea43e6676f4e47bd6c5cd9e02aa006", process);
-                }
-//                }
+//            String playbackURLs = getPreviewURLs("/api/video/v1/cameras/playbackURLs", body);
+//            log.info("playbackURLs----->" + playbackURLs);
+//            JSONObject outJson = (JSONObject) JSONObject.parse(playbackURLs);
+//            if ("0".equals(outJson.getString("code"))) {
+//                log.info("outJson----->" + outJson);
+//                JSONObject data = outJson.getJSONObject("data");
+//                String urls = data.getString("url");
+//                log.info("--------------->urls::" + urls);
+
+            String FilePath = "/opt/streams/map/"+code+".mp4";
+//                String FilePath = "/opt/streams/map/01ea43e6676f4e47bd6c5cd9e02aa006.mp4";
+//            try {
+//                TimeUnit.SECONDS.sleep(62*Integer.parseInt(alarmPlayTimeValue));
+//            } catch (InterruptedException e) {
+//                e.printStackTrace();
+//            }
+            Process process = rtspToMP4.StartRecord(ffmpegPath, "rtsp://124.70.58.209:8554/"+code+"/"+code, FilePath);
+            log.info("------playbackURLs----->>>>:" + process);
+            if (null != process) {
+                map.put(code, process);
+            }
+            try {
+                TimeUnit.SECONDS.sleep(70*Integer.parseInt(alarmPlayTimeValue));
+            } catch (InterruptedException e) {
+                e.printStackTrace();
             }
+            log.info("------videoCompression----->>>>:");
+            videoCompression(code);
             return 1;
         });
         future.join();

+ 3 - 1
business-service/src/main/java/com/ozs/utils/CaneraConfig.java

@@ -58,5 +58,7 @@ public class CaneraConfig {
 
     @Value("${artemis.appSecret:QoGESFXOYrC68ixIS7wo}")
     private String appSecret;
-    
+
+    @Value("${base.rtmpUrl:rtmp://124.70.58.209:1935}")
+    private String rtmpUrl;
 }

+ 21 - 20
vehicle-admin/src/main/java/com/ozs/web/controller/accountmanagment/BaseCameraManagementController.java

@@ -524,25 +524,18 @@ public class BaseCameraManagementController extends BaseController {
 //        baseCameraManagement.setMilesRange(begin + "-" + end);
 //        baseCameraManagement.setLongitudeAndLatitude(baseCameraManagement.getInstallLongitude() + "," + baseCameraManagement.getInstallLongitude());
 //        return AjaxResult.success(baseCameraManagement);
-//        String cameraPreviewURL = GetCameraPreviewURL.playbackURLs();
-////        String cameraPreviewURL = GetCameraPreviewURL.getPreviewURLs();
-//        log.info("-------------------------------->>>>>" + cameraPreviewURL);
-//        JSONObject outJson = JSONObject.parse(cameraPreviewURL);
-//        log.info("-------------------------------->>>>>outJson------" + outJson);
-//        JSONObject data = outJson.getJSONObject("data");
-//        log.info("-------------------------------->>>>>data------" + data);
-//        String urls = data.getString("url");
-//        log.info("-------------------------------->>>>>urls------" + urls);
-////        TimeUnit.SECONDS.sleep(5);
-////        String msg = HttpUtils.sendGet("http://10.48.36.47:9080/rtsp/api/pull?target=" + urls + "&streamPath=01ea43e6676f4e47bd6c5cd9e02aa006/01ea43e6676f4e47bd6c5cd9e02aa006&save=0");
-////        String msg = HttpUtils.sendGet("http://10.48.36.47:9080/api/gateway/stop?stream=01ea43e6676f4e47bd6c5cd9e02aa006/01ea43e6676f4e47bd6c5cd9e02aa006");
-//        return AjaxResult.success(urls);
-
-
-//        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(new ArrayList<String>()));
-        return AjaxResult.success("ok");
+        String cameraPreviewURL = GetCameraPreviewURL.getPreviewURLs();
+        log.info("-------------------------------->>>>>" + cameraPreviewURL);
+        JSONObject outJson = JSONObject.parse(cameraPreviewURL);
+        log.info("-------------------------------->>>>>outJson------" + outJson);
+        JSONObject data = outJson.getJSONObject("data");
+        log.info("-------------------------------->>>>>data------" + data);
+        String urls = data.getString("url");
+        log.info("-------------------------------->>>>>urls------" + urls);
+        TimeUnit.SECONDS.sleep(5);
+        String msg = HttpUtils.sendGet("http://10.48.36.47:9080/rtsp/api/pull?target=" + urls + "&streamPath=01ea43e6676f4e47bd6c5cd9e02aa006/01ea43e6676f4e47bd6c5cd9e02aa006&save=0");
+//        String msg = HttpUtils.sendGet("http://10.48.36.47:9080/api/gateway/stop?stream=01ea43e6676f4e47bd6c5cd9e02aa006/01ea43e6676f4e47bd6c5cd9e02aa006");
+        return AjaxResult.success(msg);
     }
 
     /**
@@ -1042,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");
     }
 
@@ -1052,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();
+    }
 }
 

+ 3 - 0
vehicle-admin/src/main/resources/application.yml

@@ -27,6 +27,9 @@ base:
   historyUrl: http:///10.48.36.47:18812
   recordUrl: http://10.48.36.47:18810${server.servlet.context-path}
   env: 1
+  hkUrl: http://10:122:1:22:1443
+  rtmpUrl: rtmp://10.48.36.47:1935
+  bakUrlRtsp: rtsp://10.48.36.47:8554
 
 server:
   # 服务器的HTTP端口,默认为8080

+ 81 - 65
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;
@@ -31,6 +32,7 @@ import com.ozs.entity.vo.AlarmInfoVo;
 import com.ozs.entity.vo.AlarmListVo;
 import com.ozs.entity.vo.CameraPlayVo;
 import com.ozs.entity.vo.CameraVo;
+import com.ozs.entity.vo.CamerasVo;
 import com.ozs.entity.vo.Files;
 import com.ozs.entity.vo.HeartbeatVo;
 import com.ozs.entity.vo.ParameterVo;
@@ -57,6 +59,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 +85,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 +127,6 @@ public class GeoHazardMonitorTokenController {
     @Autowired
     private BaseRailwayManagementService baseRailwayManagementService;
     @Autowired
-    private RedisCache redisCache;
-    @Autowired
     private BaseTerminalService baseTerminalService;
     @Autowired
     private CameraUtil cameraUtil;
@@ -137,6 +140,8 @@ public class GeoHazardMonitorTokenController {
     private String env;
     @Value("${sdk.publish}")
     private String sdkUrl;
+    @Autowired
+    private ISysDictTypeService dictTypeService;
 
     /**
      * 获取web访问令牌
@@ -345,13 +350,14 @@ public class GeoHazardMonitorTokenController {
                 msgAlarmFrequencyService.save(msgAlarmVice);
 
                 log.info("alarmJSON :{}", JSON.toJSONString(msgAlarm));
-                log.info("->>>>>>>>>>>>>>>>>>>>>>>>>>"+msgAlarm);
+                log.info("->>>>>>>>>>>>>>>>>>>>>>>>>>" + msgAlarm);
                 String result = HttpClientUtil.postJson(sdkUrl, JSON.toJSONString(msgAlarm));
-                log.info("->>>>>>>>>>>>>>>>>>>>>>>>>>>>"+result);
+                log.info("->>>>>>>>>>>>>>>>>>>>>>>>>>>>" + result);
                 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());
@@ -467,6 +473,7 @@ public class GeoHazardMonitorTokenController {
         long begin = System.currentTimeMillis();
         Map<String, Object> twoMap = new HashMap<>();
         int distance = 0;
+        int type = 0;
         RespHeartbeatVo respHeartbeatVo = new RespHeartbeatVo();
         String token = apiTokenUtils.getGeoHazardMonitorToken(request);
         log.info("token:{}", token);
@@ -543,6 +550,11 @@ public class GeoHazardMonitorTokenController {
                 jsonObject.put("data", "关联表中没有改终端编码的信息");
                 return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), key);
             }
+            if (heartbeatVo.getSignalStrength() == 1) {
+                type = 0;
+            } else if (heartbeatVo.getSignalStrength() == 2) {
+                type = 1;
+            }
             vehiclePosition.setTravelMile(heartbeatVo.getCurrentMile());
             vehiclePosition.setVehicleCode(baseTerminal.getVehicleCode());
             vehiclePosition.setTerminalLatitude(heartbeatVo.getLatitude());
@@ -619,14 +631,20 @@ public class GeoHazardMonitorTokenController {
                         List<AlarmListVo> listVos = new ArrayList<>();
                         if (baseCameraManagementList.size() > 0) {
                             //获取视频点播地址
-//                        String playFlv = CameraUtil.getPlayFlvRtsp(baseCameraManagementList.get(0).getCameraCode(), baseCameraManagementList.get(0).getChannel(), false);
-                            cameraUtil.streamConversion(baseCameraManagementList.get(0).getCameraCode());
-//                        respHeartbeatVo.setCurrentStream(playFlv);
-                            respHeartbeatVo.setCurrentStream(baseCameraManagementList.get(0).getRtspUrl());
+                            CamerasVo camerasVo = new CamerasVo();
+                            camerasVo.setStreamType(type);
+                            camerasVo.setCameraIndexCode(baseCameraManagementList.get(0).getCameraCode());
+                            String playFlv = cameraUtil.apiPreviewURLs(camerasVo);
+                            if ("1".equals(playFlv)) {
+                                jsonObject.put("resultCode", 0);
+                                jsonObject.put("message", "失败");
+                                jsonObject.put("data", "天网实时流接口调用失败");
+                                return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), key);
+                            }
+                            respHeartbeatVo.setCurrentStream(playFlv);
                             respHeartbeatVo.setIsAlarm(1);
                             respHeartbeatVo.setCameraCode(baseCameraManagementList.get(0).getCameraCode());
-//                        twoMap.put("currentStream", playFlv);
-                            twoMap.put("currentStream", baseCameraManagementList.get(0).getRtspUrl());
+                            twoMap.put("currentStream", playFlv);
                             twoMap.put("cameraCode", baseCameraManagementList.get(0).getCameraCode());
                             //alarmInfo对象
                             AlarmInfoVo alarmInfoVo = new AlarmInfoVo();
@@ -668,7 +686,6 @@ public class GeoHazardMonitorTokenController {
                             ment.le(BaseCameraManagement::getBeginMile, list.get(i).getAlarmMile());
                             ment.eq(BaseCameraManagement::getLineDir, heartbeatVo.getLineDir());
                             ment.eq(BaseCameraManagement::getRailwayCode, heartbeatVo.getRailwayCode());
-//                        ment.eq(BaseCameraManagement::getOnline,2);
                             ment.eq(BaseCameraManagement::getEnableOrNot, 1);
                             ment.orderByAsc(BaseCameraManagement::getInstallMile);
                             if (i == 0) {
@@ -678,12 +695,20 @@ public class GeoHazardMonitorTokenController {
                             List<BaseCameraManagement> baseList = baseCameraManagementService.list(ment);
                             if (baseList.size() > 0) {
                                 for (int o = 0; o < baseList.size(); o++) {
-//                                String flv = CameraUtil.getPlayFlvRtsp(baseList.get(o).getCameraCode(), baseList.get(o).getChannel(), false);
-                                    cameraUtil.streamConversion(baseCameraManagementList.get(o).getCameraCode());
+                                    //获取视频点播地址
+                                    CamerasVo camerasVo = new CamerasVo();
+                                    camerasVo.setStreamType(type);
+                                    camerasVo.setCameraIndexCode(baseList.get(o).getCameraCode());
+                                    String playFlv = cameraUtil.apiPreviewURLs(camerasVo);
+                                    if ("1".equals(playFlv)) {
+                                        jsonObject.put("resultCode", 0);
+                                        jsonObject.put("message", "失败");
+                                        jsonObject.put("data", "天网实时流接口调用失败");
+                                        return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), key);
+                                    }
                                     AlarmListVo alarmListVo = new AlarmListVo();
                                     //alarmList对象
-//                                alarmListVo.setCameraStream(flv);
-                                    alarmListVo.setCameraStream(baseList.get(o).getRtspUrl());
+                                    alarmListVo.setCameraStream(playFlv);
                                     alarmListVo.setCameraCode(baseList.get(o).getCameraCode());
                                     //alarmInfo对象
                                     AlarmInfoVo alarmInfoVo1 = new AlarmInfoVo();
@@ -725,7 +750,6 @@ public class GeoHazardMonitorTokenController {
                         base.eq(BaseCameraManagement::getLineDir, heartbeatVo.getLineDir());
                         base.eq(BaseCameraManagement::getRailwayCode, heartbeatVo.getRailwayCode());
                         base.orderByAsc(BaseCameraManagement::getInstallMile);
-//                    base.eq(BaseCameraManagement::getOnline,2);
                         base.eq(BaseCameraManagement::getEnableOrNot, 1);
                         base.last("limit 4");
                         List<BaseCameraManagement> list1 = baseCameraManagementService.list(base);
@@ -735,18 +759,20 @@ public class GeoHazardMonitorTokenController {
                             jsonObject.put("data", "没有监控里程的相机");
                             return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), key);
                         }
-                        CameraUtil.invite(list1.get(0).getCameraCode(), list1.get(0).getChannel());
-//                    String flv = CameraUtil.getPlayFlvRtsp(list1.get(0).getCameraCode(), list1.get(0).getChannel(), false);
-                        cameraUtil.streamConversion(list1.get(0).getCameraCode());
-                        //twoMap.put("currentStream", flv);
-                        twoMap.put("currentStream", list1.get(0).getRtspUrl());
-                        twoMap.put("cameraCode", list1.get(0).getCameraCode());
-                        for (BaseCameraManagement baseCameraManagement : list1) {
-//                        String flv1 = CameraUtil.getPlayFlvRtsp(baseCameraManagement.getCameraCode(), baseCameraManagement.getChannel(), false);
-                            CameraUtil.invite(baseCameraManagement.getCameraCode(), baseCameraManagement.getChannel());
+                        //获取视频点播地址
+                        CamerasVo camerasVo = new CamerasVo();
+                        camerasVo.setStreamType(type);
+                        camerasVo.setCameraIndexCode(list1.get(0).getCameraCode());
+                        String playFlv = cameraUtil.apiPreviewURLs(camerasVo);
+                        if ("1".equals(playFlv)) {
+                            jsonObject.put("resultCode", 0);
+                            jsonObject.put("message", "失败");
+                            jsonObject.put("data", "天网实时流接口调用失败");
+                            return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), key);
                         }
-                        cameraUtil.streamConversion(list1.get(0).getCameraCode());
-                        respHeartbeatVo.setCurrentStream(list1.get(0).getRtspUrl());
+                        twoMap.put("currentStream", playFlv);
+                        twoMap.put("cameraCode", list1.get(0).getCameraCode());
+                        respHeartbeatVo.setCurrentStream(playFlv);
                         respHeartbeatVo.setIsAlarm(2);
                         respHeartbeatVo.setCameraCode(list1.get(0).getCameraCode());
                         respHeartbeatVo.setAlarmList(null);
@@ -765,7 +791,6 @@ public class GeoHazardMonitorTokenController {
                     base.eq(BaseCameraManagement::getLineDir, heartbeatVo.getLineDir());
                     base.eq(BaseCameraManagement::getRailwayCode, heartbeatVo.getRailwayCode());
                     base.orderByAsc(BaseCameraManagement::getInstallMile);
-//                    base.eq(BaseCameraManagement::getOnline,2);
                     base.eq(BaseCameraManagement::getEnableOrNot, 1);
                     base.last("limit 4");
                     List<BaseCameraManagement> list1 = baseCameraManagementService.list(base);
@@ -775,18 +800,20 @@ public class GeoHazardMonitorTokenController {
                         jsonObject.put("data", "没有监控里程的相机");
                         return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), key);
                     }
-                    CameraUtil.invite(list1.get(0).getCameraCode(), list1.get(0).getChannel());
-//                    String flv = CameraUtil.getPlayFlvRtsp(list1.get(0).getCameraCode(), list1.get(0).getChannel(), false);
-                    cameraUtil.streamConversion(list1.get(0).getCameraCode());
-                    //twoMap.put("currentStream", flv);
-                    twoMap.put("currentStream", list1.get(0).getRtspUrl());
-                    twoMap.put("cameraCode", list1.get(0).getCameraCode());
-                    for (BaseCameraManagement baseCameraManagement : list1) {
-//                        String flv1 = CameraUtil.getPlayFlvRtsp(baseCameraManagement.getCameraCode(), baseCameraManagement.getChannel(), false);
-                        CameraUtil.invite(baseCameraManagement.getCameraCode(), baseCameraManagement.getChannel());
+                    //获取视频点播地址
+                    CamerasVo camerasVo = new CamerasVo();
+                    camerasVo.setStreamType(type);
+                    camerasVo.setCameraIndexCode(list1.get(0).getCameraCode());
+                    String playFlv = cameraUtil.apiPreviewURLs(camerasVo);
+                    if ("1".equals(playFlv)) {
+                        jsonObject.put("resultCode", 0);
+                        jsonObject.put("message", "失败");
+                        jsonObject.put("data", "天网实时流接口调用失败");
+                        return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), key);
                     }
-                    cameraUtil.streamConversion(list1.get(0).getCameraCode());
-                    respHeartbeatVo.setCurrentStream(list1.get(0).getRtspUrl());
+                    twoMap.put("currentStream", playFlv);
+                    twoMap.put("cameraCode", list1.get(0).getCameraCode());
+                    respHeartbeatVo.setCurrentStream(playFlv);
                     respHeartbeatVo.setIsAlarm(2);
                     respHeartbeatVo.setCameraCode(list1.get(0).getCameraCode());
                     respHeartbeatVo.setAlarmList(null);
@@ -918,7 +945,6 @@ public class GeoHazardMonitorTokenController {
             if (!ObjectUtils.isEmpty(cameraVo.getLineDir())) {
                 wrapper.eq(BaseCameraManagement::getLineDir, cameraVo.getLineDir());
             }
-//            wrapper.eq(BaseCameraManagement::getOnline,2);
             wrapper.eq(BaseCameraManagement::getEnableOrNot, 1);
             wrapper.orderByAsc(BaseCameraManagement::getInstallMile);
             List<BaseCameraManagement> list = baseCameraManagementService.list(wrapper);
@@ -1009,7 +1035,6 @@ public class GeoHazardMonitorTokenController {
             }
             LambdaQueryWrapper<BaseCameraManagement> lw = new LambdaQueryWrapper<BaseCameraManagement>();
             lw.eq(BaseCameraManagement::getCameraCode, cameraPlayVo.getCameraCode());
-//            lw.eq(BaseCameraManagement::getOnline,2);
             lw.eq(BaseCameraManagement::getEnableOrNot, 1);
             BaseCameraManagement one = baseCameraManagementService.getOne(lw);
             if (ObjectUtils.isEmpty(one)) {
@@ -1018,10 +1043,18 @@ public class GeoHazardMonitorTokenController {
                 jsonObject.put("data", "没有该相机编码的相机或已离线");
                 return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), key);
             }
-//            String flv = CameraUtil.getPlayFlvRtsp(one.getCameraCode(), one.getChannel(), false);
-            cameraUtil.streamConversion(one.getCameraCode());
-//            map.put("url", flv);
-            map.put("url", one.getRtspUrl());
+            //获取视频点播地址
+            CamerasVo camerasVo = new CamerasVo();
+            camerasVo.setStreamType(0);
+            camerasVo.setCameraIndexCode(one.getCameraCode());
+            String playFlv = cameraUtil.apiPreviewURLs(camerasVo);
+            if ("1".equals(playFlv)) {
+                jsonObject.put("resultCode", 0);
+                jsonObject.put("message", "失败");
+                jsonObject.put("data", "天网实时流接口调用失败");
+                return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), key);
+            }
+            map.put("url", playFlv);
             jsonObject.put("resultCode", 1);
             jsonObject.put("message", "ok");
             jsonObject.put("data", map);
@@ -1161,29 +1194,12 @@ public class GeoHazardMonitorTokenController {
                     camera.ge(BaseCameraManagement::getEndMile, one.getAlarmMile());
                     camera.eq(BaseCameraManagement::getLineDir, one.getLineDir());
                     camera.orderByAsc(BaseCameraManagement::getInstallMile);
-//                    camera.eq(BaseCameraManagement::getOnline,2);
                     camera.eq(BaseCameraManagement::getEnableOrNot, 1);
                     List<BaseCameraManagement> baseCameraManagementList = baseCameraManagementService.list(camera);
                     if (baseCameraManagementList.size() > 0) {
                         BaseCameraManagement baseCameraManagement = baseCameraManagementList.get(0);
-                        cameraUtil.streamConversion(baseCameraManagement.getCameraCode());
-//                        long time = one.getAlarmTime().getTime();
-//                        long time2 = time - 600000L;
-//                        one.setAlarmTime(new Date(time2));
-//                        String url = null;
-//                        if ("1".equals(one.getIsRelease().toString())) {
-//                            url = CameraUtil.historyPlayListStr(baseCameraManagement.getChannel(),
-//                                    one.getAlarmTime(),
-//                                    one.getReleasedTime(),
-//                                    true);
-//                        } else {
-//                            url = CameraUtil.historyPlayListStr(baseCameraManagement.getChannel(),
-//                                    one.getAlarmTime(),
-//                                    new Date(),
-//                                    false);
-//                        }
-//                        one.setReleasedUrl(url);
-                        one.setReleasedUrl(baseCameraManagement.getRtspUrl());
+                        String url = cameraUtil.streamConversion(baseCameraManagement.getCameraCode());
+                        one.setReleasedUrl(url);
                         msgAlarmService.updateById(one);
                     } else {
                         jsonObject.put("resultCode", 0);

+ 2 - 0
vehicle-sdk/src/main/resources/application.yml

@@ -28,6 +28,8 @@ base:
   recordUrl: http://10.48.36.47:18810${server.servlet.context-path}
   env: 1
   hkUrl: http://10:122:1:22:1443
+  rtmpUrl: rtmp://10.48.36.47:1935
+  bakUrlRtsp: rtsp://10.48.36.47:8554
 
 server:
   # 服务器的HTTP端口,默认为8081