Java Runtime.getRuntime () .exec () с кавычками

Я пытаюсь выполнить ffmpeg через исполнительный запрос к Linux. Однако я должен использовать кавычки в команде (ffmpeg, требует его). Я просматривал документ Java для processbuilder и должностного лица и вопросов на stackoverflow, но я, может казаться, не нахожу решение.

Я должен работать

ffmpeg -i "rtmp://127.0.0.1/vod/sample start=1500 stop=24000" -re -vcodec copy -acodec copy -f flv rtmp://127.0.0.1/live/qltv

Я должен вставить кавычки в ниже строки аргумента. Примечание, просто добавляющее одинарные или двойные кавычки, которым предшествует обратная косая черта, не работает из-за природы того, как processbuilder анализирует и выполняет команды.

String argument = "ffmpeg -i rtmp://127.0.0.1/vod/"
                    + nextVideo.getFilename()
                    + " start=" + nextVideo.getStart()
                    + " stop=" + nextVideo.getStop()
                    + " -re -vcodec copy -acodec copy -f flv rtmp://127.0.0.1/live/qltv";

Любая справка значительно ценилась бы.

6
задан Andrew Thompson 4 July 2012 в 05:13
поделиться

2 ответа

Создайте массив!

exec может принимать массив строк, которые используются как массив команд и аргументов (в отличие от массива команд)

Что-то вроде этого...

String[] arguments = new String[] { "ffmpeg", 
"-i", 
"rtmp://127.0.0.1/vod/sample start=1500 stop=24000",
"-re",
...
};
6
ответ дан 17 December 2019 в 00:02
поделиться

Похоже, что вам нужно избежать кавычек внутри строки аргументов. Это достаточно просто сделать с предшествующей обратной чертой.

Например,

String containsQuote = "\"";

Это будет вычислять строку, содержащую только символ кавычки.

Или в вашем конкретном случае:

String argument = "ffmpeg -i \"rtmp://127.0.0.1/vod/"
          + nextVideo.getFilename()
          + " start=" + nextVideo.getStart()
          + " stop=" + nextVideo.getStop() + "\""
          + " -re -vcodec copy -acodec copy -f flv rtmp://127.0.0.1/live/qltv";
1
ответ дан 17 December 2019 в 00:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: