Я создаю простой интерфейс для запуска ffmpeg ffmpeg.exe с параметрами с помощью exec(). он работает на Os X, но в Windows 7-8 через несколько секунд процесс ffmpeg приостанавливается и возобновляется только тогда, когда я убиваю процесс отца. (также создается ddlhost.exe) Ffmpeg.exe успешно конвертирует одно и то же видео из cmd.Java Runtime exec() застрял через некоторое время
Поиск в Интернете Я нашел это answer, но у меня такая же проблема, когда запускается простая тестовая программа, которая не использует потоки ввода и ошибки.
Вот тест программный код, который имеет ту же проблему, основной один:
public class Main {
static String param_ffmpeg_1 = "./data/ffmpeg.exe";
static String param_ffmpeg_2 = "-i";
static String in = "./data/source.mov";
static String out = "./data/out.flv";
static Process p;
public static void main(String[] args) {
/*File f = new File(out);
if (f.exists()){
f.delete();
}*/
Runtime rt = Runtime.getRuntime() ;
//String cmd1 = param_ffmpeg_1 + param_ffmpeg_2 + in_path + param_ffmpeg_3 + out_path ;
System.out.println(in);
System.out.println(out);
String[] cmd1 = new String[] { param_ffmpeg_1, param_ffmpeg_2, in, "-ar", "44100", "-vb", "2500k", "-s", "882x496", "-f", "flv", out};
try {
p = rt.exec(cmd1);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
int r = 123456;
try {
r = p.waitFor();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(r);
}
}