4
Я запускаю команду ffmpeg
для генерации видео для заданных изображений (img001.jpg, img002.jpg ...), он создает слайд.mp4, но он бесконечно ждет:Выполнение команды ffmpeg в java Процесс зависает в waitFor()
public class Ffmpeg {
public static void main(String[] args) throws IOException, InterruptedException {
String path = "E:\\pics\\Santhosh\\FadeOut\\testing";
String cmd = "ffmpeg -r 1/5 -i img%03d.jpg -c:v libx264 -r 30 -y -pix_fmt yuv420p slide.mp4";
runScript (path, cmd);
}
private static boolean runScript(String path, String cmd) throws IOException, InterruptedException {
List<String> commands = new ArrayList<String>();
commands.add("cmd");
commands.add("/c");
commands.add(cmd);
ProcessBuilder pb = new ProcessBuilder(commands);
pb.directory(new File(path));
pb.redirectErrorStream(true);
Process process = pb.start();
flushInputStreamReader(process);
int exitCode = process.waitFor();
return exitCode == 0;
}
}
private static void flushInputStreamReader (Process process) throws IOException, InterruptedException {
BufferedReader input = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line=null;
StringBuilder s = new StringBuilder();
while((line=input.readLine()) != null) {
s.append(line);
}
}
Любые предложения?
После написания функции flushInputStreamReader, его работы
Если память хорошо работает, я думаю, что проблема в материале InputStreamReader, или вы должны их прочитать или отключить. – nafas
Кстати, просто сделайте system.out.println («hello»); после runScript (путь, cmd); – nafas
Привет @nafas после вставки system.out.println ("hello"); его не работает, как связал это с InputStreamReader? –