2

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

这是执行 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);

当我像这样从 Java 执行命令行工具 ec ffmpeg 时:

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

ffmpeg的结果是找不到输入指定的文件

"/My Media/Video/Day2/VIDEO.MOV": No such file or directory

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

如何在不必限制输入路径中的空格的情况下解决此问题?

4

1 回答 1

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\"");
于 2010-05-27T19:26:43.610 回答