소스 검색

心跳接口添加异常判断

gao.qiang 1 년 전
부모
커밋
b4fdf9b72b

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

@@ -248,7 +248,7 @@ ffmpeg -i "concat:1.ts|2.ts" -c copy output.mp4
 
 
     /**
-     * Rtsp实时播放的拼接流
+     * Rtsp实时播放的拼接流  心跳接口使用
      *
      * @param cameraCode 相机编码
      * @param channel    相机通道
@@ -263,6 +263,28 @@ ffmpeg -i "concat:1.ts|2.ts" -c copy output.mp4
         return bakUrlRtsp + "/hdl/" + cameraCode + "/" + channel + "/h264_1080.flv";
 
 
+//        if (!flay) {
+//            return bakUrl + "/ws/" + channel + "/" + cameraCode + ".flv";
+//        }
+//        return webUrl + "/ws/" + channel + "/" + cameraCode + ".flv";
+    }
+
+    /**
+     * 点播的时候使用
+     * @param cameraCode
+     * @param channel
+     * @param flay
+     * @return
+     */
+    public static String getPlayFlvRtsps(String cameraCode, String channel, boolean flay) {
+        if (!flay) {
+            log.info("-----getPlayFlvRtsps------11------>" + bakUrlRtsp + "/hdl/" + cameraCode + "/" + channel + ".flv");
+            return bakUrlRtsp + "/hdl/" + cameraCode + "/" + channel+".flv";
+        }
+        log.info("-------getPlayFlvRtsps----22------>" + bakUrlRtsp + "/hdl/" + cameraCode + "/" + channel + ".flv");
+        return bakUrlRtsp + "/hdl/" + cameraCode + "/" + channel+".flv";
+
+
 //        if (!flay) {
 //            return bakUrl + "/ws/" + channel + "/" + cameraCode + ".flv";
 //        }
@@ -364,13 +386,32 @@ ffmpeg -i "concat:1.ts|2.ts" -c copy output.mp4
         return null;
     }
 
-    public String heartbeatgetUrl(String cameraCode, String channel, boolean type) {
-        CompletableFuture.runAsync(() -> {
+    public String heartbeatgetUrl(String cameraCode, String channel, boolean type) throws Exception{
+        CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> {
             CamerasVo camerasVo = new CamerasVo();
             camerasVo.setCameraIndexCode(cameraCode);
-            previewURLs(camerasVo, channel);
+            String s = previewURLs(camerasVo, channel);
+            if (s.contains("无视频")) {
+                return s;
+            } else {
+                return getPlayFlvRtsp(cameraCode, channel, type);
+            }
+        });
+        return future.get();
+    }
+
+    public String heartbeatgetUrls(String cameraCode, String channel, boolean type) throws Exception{
+        CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> {
+            CamerasVo camerasVo = new CamerasVo();
+            camerasVo.setCameraIndexCode(cameraCode);
+            String s = previewURLs(camerasVo, channel);
+            if (s.contains("无视频")) {
+                return s;
+            } else {
+                return getPlayFlvRtsps(cameraCode, channel, type);
+            }
         });
-        return getPlayFlvRtsp(cameraCode, channel, type);
+        return future.get();
     }
 
     public static String invite(String cameraCode, String channel) {
@@ -1101,7 +1142,7 @@ ffmpeg -i "concat:1.ts|2.ts" -c copy output.mp4
      * @param camerasVo
      * @param channel
      */
-    public static void previewURLs(CamerasVo camerasVo, String channel) {
+    public static String previewURLs(CamerasVo camerasVo, String channel) {
         /**
          *  jsonBody.put("cameraIndexCode", "01ea43e6676f4e47bd6c5cd9e02aa006");
          *         jsonBody.put("streamType", 0);
@@ -1126,15 +1167,20 @@ ffmpeg -i "concat:1.ts|2.ts" -c copy output.mp4
                 log.info("msg---------->" + httpUrl + "/rtsp/api/pull?target=" + urls + "&streamPath=" + camerasVo.getCameraIndexCode() + "/" + channel + "&save=0");
                 String msg = HttpUtils.sendGet(httpUrl + "/rtsp/api/pull?target=" + urls + "&streamPath=" + camerasVo.getCameraIndexCode() + "/" + channel + "&save=0");
                 log.info("msg---------->" + msg);
-                log.info("code---------->" + httpUrls + "/rtsp/api/pull?target=" + urls + "&streamPath=" + camerasVo.getCameraIndexCode() + "/" + channel + "&save=0");
-                String code = HttpUtils.sendGet(httpUrls + "/rtsp/api/pull?target=" + urls + "&streamPath=" + camerasVo.getCameraIndexCode() + "/" + channel + "&save=0");
-                log.info("code---------->" + code);
+                if (!msg.equals("ok")) {
+//                log.info("code---------->" + httpUrls + "/rtsp/api/pull?target=" + urls + "&streamPath=" + camerasVo.getCameraIndexCode() + "/" + channel + "&save=0");
+//                String code = HttpUtils.sendGet(httpUrls + "/rtsp/api/pull?target=" + urls + "&streamPath=" + camerasVo.getCameraIndexCode() + "/" + channel + "&save=0");
+//                log.info("code---------->" + code);
+                    return "暂无视频-" + camerasVo.getCameraIndexCode();
+                }
             } catch (Exception e) {
                 e.printStackTrace();
+                return "暂无视频-" + camerasVo.getCameraIndexCode();
             }
         } else {
-            log.info("流媒体获取流失败----->");
+            return "天网无视频-" + camerasVo.getCameraIndexCode();
         }
+        return null;
     }
 
     /**
@@ -1352,11 +1398,11 @@ ffmpeg -i "concat:1.ts|2.ts" -c copy output.mp4
             List<BaseCameraManagement> list = baseCameraManagementService.list(new LambdaQueryWrapper<BaseCameraManagement>()
                     .eq(BaseCameraManagement::getGrouping, baseCameraManagement.getGrouping()).orderByDesc(BaseCameraManagement::getSort));
             if (!ObjectUtils.isEmpty(list)) {
-                  return list;
-            }else {
+                return list;
+            } else {
                 return null;
             }
-        }else {
+        } else {
             return null;
         }
     }

+ 58 - 38
vehicle-sdk/src/main/java/com/ozs/controller/upload/GeoHazardMonitorTokenController.java

@@ -492,7 +492,7 @@ public class GeoHazardMonitorTokenController {
      */
     @PostMapping("/api/terminal/heartbeat")
     @Transactional
-    public String heartbeat(@RequestBody ParameterVo parameterVo, HttpServletRequest request) {
+    public String heartbeat(@RequestBody ParameterVo parameterVo, HttpServletRequest request) throws Exception {
         long begin = System.currentTimeMillis();
         Map<String, Object> twoMap = new HashMap<>();
         String playFlv1;
@@ -850,17 +850,20 @@ public class GeoHazardMonitorTokenController {
                         BaseCameraManagement baseCameraManagement = baseCameraManagementService.getOne(base);
                         //根据相机ID找出分组并排序
                         boolean finalType1 = type;
-                        CompletableFuture.runAsync(() -> {
-                            List<BaseCameraManagement> baseCameraManagementList1 = cameraUtil.getBaseCameraManagementList(baseCameraManagement.getId());
-                            if (!ObjectUtils.isEmpty(baseCameraManagementList1)) {
-                                for (BaseCameraManagement cameraManagement : baseCameraManagementList1) {
-                                    String playFlv = cameraUtil.heartbeatgetPlayFlv(cameraManagement.getCameraCode(), cameraManagement.getChannel(), finalType1);
-                                    if (StringUtils.isEmpty(playFlv)) {
-                                        cameraUtil.heartbeatgetUrl(cameraManagement.getCameraCode(), cameraManagement.getChannel(), finalType1);
+                        List<BaseCameraManagement> baseCameraManagementList1 = cameraUtil.getBaseCameraManagementList(baseCameraManagement.getId());
+                        if (!ObjectUtils.isEmpty(baseCameraManagementList1)) {
+                            for (BaseCameraManagement cameraManagement : baseCameraManagementList1) {
+                                String playFlv = cameraUtil.heartbeatgetPlayFlv(cameraManagement.getCameraCode(), cameraManagement.getChannel(), finalType1);
+                                if (StringUtils.isEmpty(playFlv)) {
+                                    String url = cameraUtil.heartbeatgetUrl(cameraManagement.getCameraCode(), cameraManagement.getChannel(), finalType1);
+                                    if (url.contains("无视频")) {
+                                        jsonObject.put("resultCode", 0);
+                                        jsonObject.put("message", url);
+                                        return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), key);
                                     }
                                 }
                             }
-                        });
+                        }
                     } else {
                         //没有报警信息的时候
                         if (heartbeatVo.getLineDir() == 1) {
@@ -925,17 +928,20 @@ public class GeoHazardMonitorTokenController {
                             log.info("--------------->>已进入拉两路视频");
                             for (BaseCameraManagement baseCameraManagement : list1) {
                                 boolean finalType = type;
-                                CompletableFuture.runAsync(() -> {
-                                    List<BaseCameraManagement> baseCameraManagementList1 = cameraUtil.getBaseCameraManagementList(baseCameraManagement.getId());
-                                    if (!ObjectUtils.isEmpty(baseCameraManagementList1)) {
-                                        for (BaseCameraManagement cameraManagement : baseCameraManagementList1) {
-                                            cameraUtil.heartbeatgetUrl(cameraManagement.getCameraCode(), cameraManagement.getChannel(), finalType);
+                                List<BaseCameraManagement> baseCameraManagementList1 = cameraUtil.getBaseCameraManagementList(baseCameraManagement.getId());
+                                if (!ObjectUtils.isEmpty(baseCameraManagementList1)) {
+                                    for (BaseCameraManagement cameraManagement : baseCameraManagementList1) {
+                                        String url = cameraUtil.heartbeatgetUrl(cameraManagement.getCameraCode(), cameraManagement.getChannel(), finalType);
+                                        if (url.contains("无视频")) {
+                                            jsonObject.put("resultCode", 0);
+                                            jsonObject.put("message", url);
+                                            return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), key);
                                         }
                                     }
-                                });
+                                }
                                 BaseCameraManagement idOne = baseCameraManagementService.getById(list1.get(0).getId());
                                 BaseCameraManagement idTwo = baseCameraManagementService.getById(list1.get(1).getId());
-                                if (idOne.getGrouping().equals(idTwo.getGrouping())){
+                                if (idOne.getGrouping().equals(idTwo.getGrouping())) {
                                     break;
                                 }
                             }
@@ -948,14 +954,17 @@ public class GeoHazardMonitorTokenController {
                             for (int i = 1; i < list1.size(); i++) {
                                 boolean finalType = type;
                                 int finalI = i;
-                                CompletableFuture.runAsync(() -> {
-                                    List<BaseCameraManagement> baseCameraManagementList1 = cameraUtil.getBaseCameraManagementList(list1.get(finalI).getId());
-                                    if (!ObjectUtils.isEmpty(baseCameraManagementList1)) {
-                                        for (BaseCameraManagement cameraManagement : baseCameraManagementList1) {
-                                            cameraUtil.heartbeatgetUrl(cameraManagement.getCameraCode(), cameraManagement.getChannel(), finalType);
+                                List<BaseCameraManagement> baseCameraManagementList1 = cameraUtil.getBaseCameraManagementList(list1.get(finalI).getId());
+                                if (!ObjectUtils.isEmpty(baseCameraManagementList1)) {
+                                    for (BaseCameraManagement cameraManagement : baseCameraManagementList1) {
+                                        String url = cameraUtil.heartbeatgetUrl(cameraManagement.getCameraCode(), cameraManagement.getChannel(), finalType);
+                                        if (url.contains("无视频")) {
+                                            jsonObject.put("resultCode", 0);
+                                            jsonObject.put("message", url);
+                                            return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), key);
                                         }
                                     }
-                                });
+                                }
                             }
                         }
                         List<BaseCameraManagement> baseCameraManagementList1 = cameraUtil.getBaseCameraManagementList(list1.get(0).getId());
@@ -1038,17 +1047,20 @@ public class GeoHazardMonitorTokenController {
                         log.info("--------------->>已进入拉两路视频");
                         for (BaseCameraManagement baseCameraManagement : list1) {
                             boolean finalType = type;
-                            CompletableFuture.runAsync(() -> {
-                                List<BaseCameraManagement> baseCameraManagementList1 = cameraUtil.getBaseCameraManagementList(baseCameraManagement.getId());
-                                if (!ObjectUtils.isEmpty(baseCameraManagementList1)) {
-                                    for (BaseCameraManagement cameraManagement : baseCameraManagementList1) {
-                                        cameraUtil.heartbeatgetUrl(cameraManagement.getCameraCode(), cameraManagement.getChannel(), finalType);
+                            List<BaseCameraManagement> baseCameraManagementList1 = cameraUtil.getBaseCameraManagementList(baseCameraManagement.getId());
+                            if (!ObjectUtils.isEmpty(baseCameraManagementList1)) {
+                                for (BaseCameraManagement cameraManagement : baseCameraManagementList1) {
+                                    String url = cameraUtil.heartbeatgetUrl(cameraManagement.getCameraCode(), cameraManagement.getChannel(), finalType);
+                                    if (url.contains("无视频")) {
+                                        jsonObject.put("resultCode", 0);
+                                        jsonObject.put("message", url);
+                                        return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), key);
                                     }
                                 }
-                            });
+                            }
                             BaseCameraManagement idOne = baseCameraManagementService.getById(list1.get(0).getId());
                             BaseCameraManagement idTwo = baseCameraManagementService.getById(list1.get(1).getId());
-                            if (idOne.getGrouping().equals(idTwo.getGrouping())){
+                            if (idOne.getGrouping().equals(idTwo.getGrouping())) {
                                 break;
                             }
                         }
@@ -1058,14 +1070,17 @@ public class GeoHazardMonitorTokenController {
                         for (int i = 1; i < list1.size(); i++) {
                             boolean finalType = type;
                             int finalI = i;
-                            CompletableFuture.runAsync(() -> {
-                                List<BaseCameraManagement> baseCameraManagementList1 = cameraUtil.getBaseCameraManagementList(list1.get(finalI).getId());
-                                if (!ObjectUtils.isEmpty(baseCameraManagementList1)) {
-                                    for (BaseCameraManagement cameraManagement : baseCameraManagementList1) {
-                                        cameraUtil.heartbeatgetUrl(cameraManagement.getCameraCode(), cameraManagement.getChannel(), finalType);
+                            List<BaseCameraManagement> baseCameraManagementList1 = cameraUtil.getBaseCameraManagementList(list1.get(finalI).getId());
+                            if (!ObjectUtils.isEmpty(baseCameraManagementList1)) {
+                                for (BaseCameraManagement cameraManagement : baseCameraManagementList1) {
+                                    String url = cameraUtil.heartbeatgetUrl(cameraManagement.getCameraCode(), cameraManagement.getChannel(), finalType);
+                                    if (url.contains("无视频")) {
+                                        jsonObject.put("resultCode", 0);
+                                        jsonObject.put("message", url);
+                                        return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), key);
                                     }
                                 }
-                            });
+                            }
                         }
                     }
                     List<BaseCameraManagement> baseCameraManagementList1 = cameraUtil.getBaseCameraManagementList(list1.get(0).getId());
@@ -1319,7 +1334,7 @@ public class GeoHazardMonitorTokenController {
      * @return
      */
     @PostMapping("/api/camera/play")
-    public String cameraPlay(@RequestBody ParameterVo parameterVo, HttpServletRequest request) {
+    public String cameraPlay(@RequestBody ParameterVo parameterVo, HttpServletRequest request) throws Exception {
         Map<String, Object> map = new HashMap<>();
         String token = apiTokenUtils.getGeoHazardMonitorToken(request);
         log.info("token:{}", token);
@@ -1359,7 +1374,12 @@ public class GeoHazardMonitorTokenController {
                 jsonObject.put("data", "");
                 return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), key);
             }
-            String playFlv = cameraUtil.heartbeatgetUrl(one.getCameraCode(), one.getChannel(), false);
+            String playFlv = cameraUtil.heartbeatgetUrls(one.getCameraCode(), one.getChannel(), false);
+            if (playFlv.contains("无视频")) {
+                jsonObject.put("resultCode", 0);
+                jsonObject.put("message", playFlv);
+                return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), key);
+            }
             ArrayList<String> list3 = new ArrayList<>();
             String code = one.getCameraCode() + "/" + one.getChannel();
             list3.add(code);
@@ -1850,7 +1870,7 @@ public class GeoHazardMonitorTokenController {
         List<BaseCameraManagement> list = baseCameraManagementService.list();
         for (BaseCameraManagement baseCameraManagement : list) {
             log.info("------------baseCameraManagement---------" + baseCameraManagement);
-            cameraUtil.heartbeatgetUrl(baseCameraManagement.getCameraCode(), baseCameraManagement.getChannel(), true);
+//            cameraUtil.heartbeatgetUrl(baseCameraManagement.getCameraCode(), baseCameraManagement.getChannel(), true);
         }
     }
 }