소스 검색

代码修改

gao.qiang 1 년 전
부모
커밋
6468ad5fd8

+ 31 - 34
vehicle-admin/src/main/java/com/ozs/web/core/util/CameraUtil.java

@@ -707,41 +707,38 @@ ffmpeg -i "concat:1.ts|2.ts" -c copy output.mp4
      * HTTP流转RTSP流
      */
     public   void streamConversion(String code) {
-        log.info("ffmpeg -re -i /opt/streams/file/"+code+".mp4  -c:v copy -c:a copy -f rtsp rtsp://124.70.58.209:8554/live/"+code+"s");
-        cmdCameraUtil.cmd("ffmpeg -re -i /opt/streams/file/"+code+".mp4  -c:v copy -c:a copy -f rtsp rtsp://124.70.58.209:8554/live/"+code);
-
-//        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 = "ffmpeg -re -i /opt/streams/file/"+code+".mp4  -c:v copy -c:a copy -f rtsp rtsp://124.70.58.209:8554/live/"+code;
-//            String commit = "cd /";
-//            List<String> commands = new ArrayList<>();
-//
-//            // 删除
-//            commands.add(commit);
-//            log.info("HTTP流转RTSP流:{}", commands);
-//            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();
-//        }
+        try {
+            // 创建ProcessBuilder对象,设置ffmpeg命令及参数
+            ProcessBuilder pb = new ProcessBuilder("ffmpeg", "-re", "-i", "/opt/streams/file/"+code+".mp4", "-c:v", "copy", "-c:a", "copy", "-f", "rtsp", "rtsp://124.70.58.209:8554/live/44");
+
+            // 设置工作目录,如果需要的话
+            // pb.directory(new File("path/to/working/directory"));
+
+            // 启动进程
+            Process process = pb.start();
+
+            // 等待进程执行完成
+            int exitCode = process.waitFor();
 
+            // 打印ffmpeg命令的输出信息
+            BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
+            String line;
+            while ((line = reader.readLine()) != null) {
+                System.out.println(line);
+            }
+
+            // 打印ffmpeg命令的错误信息
+            BufferedReader errorReader = new BufferedReader(new InputStreamReader(process.getErrorStream()));
+            String errorLine;
+            while ((errorLine = errorReader.readLine()) != null) {
+                System.out.println(errorLine);
+            }
+
+            // 打印ffmpeg命令的退出码
+            System.out.println("Exit Code: " + exitCode);
+        } catch (IOException | InterruptedException e) {
+            e.printStackTrace();
+        }
     }
     
 

+ 1 - 2
vehicle-admin/src/main/java/com/ozs/web/core/util/CmdCameraUtil.java

@@ -17,7 +17,7 @@ public class CmdCameraUtil {
         long l = System.currentTimeMillis();
         Process exec = null;
         try {
-            exec = Runtime.getRuntime().exec(new String[]{cmd});
+            exec = Runtime.getRuntime().exec(new String[]{"sh", "-c", cmd});
             long l1 = System.currentTimeMillis();
             log.info("cmd-time:{}", l1 - l);
         } catch (IOException e) {
@@ -25,7 +25,6 @@ public class CmdCameraUtil {
             e.printStackTrace();
         }
         try {
-            log.info("info----cmd"+cmd);
             printProcessMsg(exec);
         } catch (IOException e) {
             log.error(e.getMessage());