Выполнение инструмента командной строки из Java отличается от командной строки? - PullRequest
2 голосов
/ 27 мая 2010

Мой вопрос касается метода org.apache.commons.exec.DefaultExecutor.execute (команда CommandLine) в общем доступе apache.

Это кодовый бит для выполнения 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);

Когда я запускаю инструмент командной строки, например ffmpeg с Java вот так:

/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 Ответ

1 голос
/ 27 мая 2010

Примеры на 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\"");
...