2

我正在用 Java 编写一个 Java Swing 应用程序,用作 ffmpeg 命令的前端。它从用户那里输入文件夹和文件名,并添加更多在 JTextField 中不断显示的参数。用户可以在将要调用的文本字段中编辑最终命令。

这适用于 Windows 和 Linux:

Process ffmpeg = Runtime.getRuntime().exec(command, null, new File(current_working_folder));

命令是一个字符串。它的格式取决于操作系统,因此路径始终是完整的(绝对路径),并且斜杠适用于给定的操作系统。

在 Windows 和 Linux 中,可以通过将文件夹和文件名包含在“....”中来执行 ffmpeg 命令。在 Windows 中,这种格式最终通过 Runtime.getRunTime.exec() 起作用。

但是,在 Linux 中,这不适用于 Runtime.getRunTime.exec()。引号可能被误解为“....”。

对此有何建议?

4

1 回答 1

2

尝试使用以下方法将命令作为数组而不是字符串传递:Runtime.exec(String[] cmdarray, String[] envp, File dir)

例如,而不是:

Runtime.getRuntime().exec("ffmpeg -i video_origine.avi video_finale.mpg", null, new File(current_working_folder));

利用:

Runtime.getRuntime().exec(new String[]{"ffmpeg", "-i", "video_origine.avi", "video_finale.mpg"}, null, new File(current_working_folder));
于 2012-12-20T17:34:41.297 回答