从java执行命令行工具与命令行不同?

时间:2010-05-27 19:21:06

标签: java macos ffmpeg apache-commons

我的问题是关于apache commons中的org.apache.commons.exec.DefaultExecutor.execute(CommandLine命令)方法。

这是执行ffmpeg的代码位:

command = FFMPEG_DIR + "ffmpeg -i \"" + file.getAbsolutePath() + "\"";
DefaultExecutor executor = new DefaultExecutor();
ByteArrayOutputStream baos = new ByteArrayOutputStream();

PumpStreamHandler streamHandler = new PumpStreamHandler(baos);
executor.setStreamHandler(streamHandler);

CommandLine commandLine = CommandLine.parse(command);

executor.execute(commandLine);

当我执行命令行工具e.c.像这样来自Java的ffmpeg:

/path_to_ffmpeg/ffmpeg -i "/My Media/Video/Day2/VIDEO.MOV"

ffmpeg的结果是它找不到为输入

指定的文件
"/My Media/Video/Day2/VIDEO.MOV": No such file or directory

如果我在控制台中执行命令的方式完全相同,没有任何问题。 将“我的媒体”文件夹重命名为“MyMedia”可以解决Java方面的问题,但对我来说这不是一个有用的解决方案。

如何解决这个问题而不必限制输入路径中的空格?

1 个答案:

答案 0 :(得分:1)

http://commons.apache.org/exec/tutorial.html上的示例表明您执行以下操作:

DefaultExecutor de = new DefaultExecutor();
de.execute(CommandLine.parse("/path_to_ffmpeg/ffmpeg -i \"/My Media/Video/Day2/VIDEO.MOV\"");