Я не могу понять, как запустить процесс в Java для записи живого потока с помощью ffmpeg.
Я пробовал несколько решений, но мой текущий код выглядит так (упрощенно):
public void startDownload() {
String[] processArgs = new String[] {
"ffmpeg",
"-i",
"https://bitdash-a.akamaihd.net/content/sintel/hls/playlist.m3u8",
"-c",
"copy",
"-bsf:a",
"aac_adtstoasc",
"C:\\temp\\test.mp4"
};
ProcessBuilder processBuilder = new ProcessBuilder(processArgs);
try {
process = processBuilder.start();
process.wairFor(); // Do I need this? Actually the stream is running forever until I stop it manually.
BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line = null;
while ((line = br.readLine()) != null) { // this blocks forever
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
}
Проблема в том, что что-то блокирует запуск процесса. В этом примере br.readLine()
блокирует его навсегда, и я не могу получить какой-либо вывод из процесса.
Но после уничтожения конфигурации запуска jar / остановки в Intellij процесс начинает работать, и я должен его убить с помощью диспетчера задач.
Запуск процесса, который не записывает прямой поток, например, просто выполнение ffmpeg
, кстати, работает
Я использую Windows, JDK 14, IntelliJ.