我正在用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()。引号可能被误解为“......”。
对此有何建议?
答案 0 :(得分: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));