Я пытаюсь выполнить 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";
Любая справка значительно ценилась бы.
Создайте массив!
exec может принимать массив строк, которые используются как массив команд и аргументов (в отличие от массива команд)
Что-то вроде этого...
String[] arguments = new String[] { "ffmpeg",
"-i",
"rtmp://127.0.0.1/vod/sample start=1500 stop=24000",
"-re",
...
};
Похоже, что вам нужно избежать кавычек внутри строки аргументов. Это достаточно просто сделать с предшествующей обратной чертой.
Например,
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";