【问题标题】:Run Windows command through Java Tomcat Server通过 Java Tomcat 服务器运行 Windows 命令
【发布时间】:2016-09-01 09:05:09
【问题描述】:

我在我的 windows 机器上使用 FFMPEG 库文件将媒体文件从一种格式转换为另一种格式,所以我尝试通过 java 调用 FFMPEG windows 命令。它通过在普通 java 程序中调用 Process p = Runtime.getRuntime().exec("ffmpeg -i " + xxx.mp4 + " " + yyy.wav + ""); 来工作。但是当我将我的项目启动到 TOMCAT 服务器时,它会抛出像 java.io.IOException: cannot run program : "ffmpeg" CreateProcess error=2, the system cannot find the file specified 这样的异常。我在下面附上了我的代码..

String sVideo = "C:\\Users\\Administrator\\Desktop\\voice.amr";
    String dVideo2 = "C:\\Users\\Administrator\\Desktop\\sVideo.wav";
    try {
        Process p = Runtime.getRuntime().exec("ffmpeg -i " + sVideo + " " + dVideo2 + "");          
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

上面的代码有效,当单独运行这个类文件但是当我在我的项目中使用这个代码时,当我在 TOMCAT 服务器中运行我的项目时它会抛出异常。提前致谢。

【问题讨论】:

    标签: java tomcat jakarta-ee cmd ffmpeg


    【解决方案1】:

    我猜你当前的目录在你的 tomcat (webapp) 中的某个地方,你是否尝试使用完整的 ffmpeg.exe 路径来代替?

    【讨论】:

      【解决方案2】:

      您可以使用ProcessBuilder创建带有路径文件夹的进程来运行程序。

      String folder = "C:\\Users\\Administrator\\Desktop";
      String[] cmdarray = new Sring[]{"ffmpeg -i","voice.amr", "sVideo.wav"};
      ProcessBuilder processBuilder = new ProcessBuilder( cmdarray );
      processBuilder.directory(new File(folder));
      Process process = processBuilder.start();
      
      int exitCode = -1;
      boolean finished = false;
      while ( !finished ) {
          exitCode = process.waitFor();
          finished = true;
      }
      

      cmdarray 将包含您的可执行文件和参数(如果需要)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-16
        • 2013-05-29
        • 1970-01-01
        • 2011-12-28
        相关资源
        最近更新 更多