Pārlūkot izejas kodu

重启流媒体测试

gao.qiang 1 gadu atpakaļ
vecāks
revīzija
841108a878

+ 64 - 47
hazard-admin/src/main/java/com/ozs/web/controller/accountmanagment/BaseCameraManagementController.java

@@ -8,6 +8,7 @@ import com.ozs.common.annotation.Log;
 import com.ozs.common.core.controller.BaseController;
 import com.ozs.common.core.domain.AjaxResult;
 import com.ozs.common.core.domain.entity.SysDept;
+import com.ozs.common.core.domain.entity.SysDictData;
 import com.ozs.common.core.redis.RedisCache;
 import com.ozs.common.enums.BusinessType;
 import com.ozs.common.exception.base.BaseException;
@@ -34,6 +35,7 @@ import com.ozs.service.service.BaseUserService;
 import com.ozs.service.service.MsgAlarmService;
 import com.ozs.system.service.DataScoreUtil;
 import com.ozs.system.service.ISysDeptService;
+import com.ozs.system.service.ISysDictTypeService;
 import com.ozs.web.core.config.CaneraConfig;
 import com.ozs.web.core.util.CameraUtil;
 import io.swagger.annotations.ApiOperation;
@@ -97,6 +99,8 @@ public class BaseCameraManagementController extends BaseController {
     private BaseUserService baseUserService;
     @Autowired
     private RedisCache redisCache;
+    @Autowired
+    private ISysDictTypeService dictTypeService;
 
 
     /**
@@ -328,12 +332,15 @@ public class BaseCameraManagementController extends BaseController {
             baseDynamicManagement.setCameraCode(baseCameraManagement.getCameraCode());
             baseDynamicManagement.setUpdateBy(getUserId());
             baseDynamicManagement.setCreateBy(getUserId());
-            String start = HttpUtils.sendGet(CameraUtil.startRecording(baseCameraManagement.getCameraCode(), baseCameraManagement.getChannel()));
-            if (start.startsWith(baseCameraManagement.getCameraCode() + "/" + baseCameraManagement.getChannel())) {
-                baseCameraManagement.setStartRecording(1);
-                baseCameraManagement.setTaskId(start);
-            } else {
-                baseCameraManagement.setStartRecording(2);
+            List<SysDictData> data = dictTypeService.selectDictDataByType("management_transcribe_switch");
+            if (data.get(0).getDictValue().equals("true")) {
+                String start = HttpUtils.sendGet(CameraUtil.startRecording(baseCameraManagement.getCameraCode(), baseCameraManagement.getChannel()));
+                if (start.startsWith(baseCameraManagement.getCameraCode() + "/" + baseCameraManagement.getChannel())) {
+                    baseCameraManagement.setStartRecording(1);
+                    baseCameraManagement.setTaskId(start);
+                } else {
+                    baseCameraManagement.setStartRecording(2);
+                }
             }
             if (baseCameraManagementService.save(baseCameraManagement) && baseDeviceDynamicManagementService.save(baseDynamicManagement)) {
                 return AjaxResult.success();
@@ -785,27 +792,32 @@ public class BaseCameraManagementController extends BaseController {
     @GetMapping("/endRecording/{id}")
     @Log(title = "相机台账管理", businessType = BusinessType.OTHER)
     public AjaxResult endRecording(@PathVariable Long id) {
-        BaseCameraManagement baseCameraManagement = baseCameraManagementService.getById(id);
-        if (ObjectUtils.isEmpty(baseCameraManagement)) {
-            return error("查不到该ID的相机台账数据!!!");
-        }
-        log.info("endRecording------------" + baseCameraManagement.getTaskId());
-        String start = HttpUtils.sendGet(CameraUtil.endRecording(baseCameraManagement.getCameraCode(), baseCameraManagement.getChannel()));
-        log.info("endRecording------------" + start);
-        if ("success".equals(start)) {
-            baseCameraManagement.setStartRecording(2);
-            baseCameraManagement.setTaskId("");
-            baseCameraManagement.setUpdateBy(getUserId());
-        } else {
-            baseCameraManagement.setStartRecording(2);
-            baseCameraManagement.setTaskId("");
-            baseCameraManagement.setUpdateBy(getUserId());
-            log.error("关闭视频录制异常日志如下:" + start);
-        }
-        if (baseCameraManagementService.updateById(baseCameraManagement)) {
-            return success();
+        List<SysDictData> data = dictTypeService.selectDictDataByType("management_transcribe_switch");
+        if (data.get(0).getDictValue().equals("true")) {
+            BaseCameraManagement baseCameraManagement = baseCameraManagementService.getById(id);
+            if (ObjectUtils.isEmpty(baseCameraManagement)) {
+                return error("查不到该ID的相机台账数据!!!");
+            }
+            log.info("endRecording------------" + baseCameraManagement.getTaskId());
+            String start = HttpUtils.sendGet(CameraUtil.endRecording(baseCameraManagement.getCameraCode(), baseCameraManagement.getChannel()));
+            log.info("endRecording------------" + start);
+            if ("success".equals(start)) {
+                baseCameraManagement.setStartRecording(2);
+                baseCameraManagement.setTaskId("");
+                baseCameraManagement.setUpdateBy(getUserId());
+            } else {
+                baseCameraManagement.setStartRecording(2);
+                baseCameraManagement.setTaskId("");
+                baseCameraManagement.setUpdateBy(getUserId());
+                log.error("关闭视频录制异常日志如下:" + start);
+            }
+            if (baseCameraManagementService.updateById(baseCameraManagement)) {
+                return success();
+            }
+            return error();
+        }else {
+            return error("已自动开启录制,关闭按钮已失效");
         }
-        return error();
     }
 
 
@@ -813,27 +825,32 @@ public class BaseCameraManagementController extends BaseController {
     @GetMapping("/startRecording/{id}")
     @Log(title = "相机台账管理", businessType = BusinessType.OTHER)
     public AjaxResult startRecording(@PathVariable Long id) throws Exception {
-        BaseCameraManagement baseCameraManagement = baseCameraManagementService.getById(id);
-        log.info("startRecording------CameraCode------" + baseCameraManagement.getCameraCode());
-        log.info("startRecording------Channel------" + baseCameraManagement.getChannel());
-        String start = HttpClientUtil.gets(CameraUtil.startRecording(baseCameraManagement.getCameraCode(), baseCameraManagement.getChannel()));
-        log.info("startRecording------------" + start);
-        if (start.startsWith(baseCameraManagement.getCameraCode() + "/" + baseCameraManagement.getChannel())) {
-            log.info("startRecording 返回成功!!1");
-            baseCameraManagement.setStartRecording(1);
-            baseCameraManagement.setTaskId(start);
-            baseCameraManagement.setUpdateBy(getUserId());
-        } else if (start.startsWith("recorder")) {
-            baseCameraManagement.setStartRecording(1);
-            baseCameraManagement.setTaskId(baseCameraManagement.getCameraCode()+"/"+baseCameraManagement.getChannel()+"/flv");
-            baseCameraManagementService.updateById(baseCameraManagement);
-        } else if (start.startsWith("Stream")) {
-            return error("开启视频录制失败:流不存在");
-        }
-        if (baseCameraManagementService.updateById(baseCameraManagement)) {
-            return success();
-        } else {
-            return error("开启视频录制失败");
+        List<SysDictData> data = dictTypeService.selectDictDataByType("management_transcribe_switch");
+        if (data.get(0).getDictValue().equals("true")) {
+            BaseCameraManagement baseCameraManagement = baseCameraManagementService.getById(id);
+            log.info("startRecording------CameraCode------" + baseCameraManagement.getCameraCode());
+            log.info("startRecording------Channel------" + baseCameraManagement.getChannel());
+            String start = HttpClientUtil.gets(CameraUtil.startRecording(baseCameraManagement.getCameraCode(), baseCameraManagement.getChannel()));
+            log.info("startRecording------------" + start);
+            if (start.startsWith(baseCameraManagement.getCameraCode() + "/" + baseCameraManagement.getChannel())) {
+                log.info("startRecording 返回成功!!1");
+                baseCameraManagement.setStartRecording(1);
+                baseCameraManagement.setTaskId(start);
+                baseCameraManagement.setUpdateBy(getUserId());
+            } else if (start.startsWith("recorder")) {
+                baseCameraManagement.setStartRecording(1);
+                baseCameraManagement.setTaskId(baseCameraManagement.getCameraCode() + "/" + baseCameraManagement.getChannel() + "/flv");
+                baseCameraManagementService.updateById(baseCameraManagement);
+            } else if (start.startsWith("Stream")) {
+                return error("开启视频录制失败:流不存在");
+            }
+            if (baseCameraManagementService.updateById(baseCameraManagement)) {
+                return success();
+            } else {
+                return error("开启视频录制失败");
+            }
+        }else {
+            return error("已自动开启录制,无需按钮再次开启录制");
         }
     }
 

+ 10 - 0
hazard-admin/src/main/java/com/ozs/web/controller/tool/TestController.java

@@ -66,6 +66,16 @@ public class TestController extends BaseController {
         return R.ok();
     }
 
+    @GetMapping("/restart")
+    public R<String> restart() {
+        try {
+            cameraUtil.restart();
+        } catch (Exception e) {
+            return R.ok(e.getMessage().toString());
+        }
+        return R.ok();
+    }
+
     @GetMapping("/cmd")
     public R<String> cmd(String cmd) {
 

+ 38 - 0
hazard-admin/src/main/java/com/ozs/web/core/util/CameraUtil.java

@@ -950,6 +950,44 @@ ffmpeg -i "concat:1.ts|2.ts" -c copy output.mp4
 
     }
 
+
+    /**
+     * 重启流媒体
+     */
+    public void restart() {
+        log.info("restart=============");
+        try {
+            Process proc = Runtime.getRuntime().exec("/bin/bash", null, null);
+            BufferedReader in = new BufferedReader(new InputStreamReader(proc.getInputStream()));
+            PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(proc.getOutputStream())), true);
+            String commit = "sh /opt/streams/restartStreams.sh";
+            List<String> commands = new ArrayList<>();
+
+            // 删除
+            commands.add(commit);
+            for (String line : commands) {
+                out.println(line);
+            }
+            out.println("exit");// 这个命令必须执行,否则in流不结束。
+            String rspLine = "";
+            while ((rspLine = in.readLine()) != null) {
+                System.out.println(rspLine);
+
+            }
+            int i = proc.waitFor();
+            log.info("执行结果:{}", i);
+
+            in.close();
+            out.close();
+            proc.destroy();
+        } catch (IOException e) {
+            log.error(e.getMessage());
+        } catch (InterruptedException e) {
+            e.printStackTrace();
+        }
+
+    }
+
     public static void main(String[] args) {
 
 //            // 创建一个集合