2010-05-27 3 views
2

Мой вопрос касается метода org.apache.commons.exec.DefaultExecutor.execute (CommandLine) в apache commons.Выполнение инструмента командной строки из java варьируется от командной строки?

Это codebit для выполнения 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. 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, но для меня это не подходит для использования.

Как я могу исправить это, не ограничивая пробелы от входного пути?

+0

Как вы готовите 'CommandLine'? – aioobe

+0

Я добавил код – itkevin

ответ

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\""); 
+0

Я разбираю команду перед выполнением. Тот же вопрос – itkevin

+0

Итак, что произойдет, если вы перейдете через методы 'addArgument'? – aioobe

+0

Тот же результат. Когда я меняю рабочий каталог на «/ My Media/Video/Day2», он работает для файлов без пробелов?!? Я провел весь день на этом, и я никак не могу понять :( – itkevin

 Смежные вопросы

  • Нет связанных вопросов^_^