В настоящее время я разрабатываю настольную утилиту, которая загружает клипы Twich, если они соответствуют некоторым требованиям. Поскольку twitch api дает в ответ файл m3u8, я должен преобразовать его в mp4. Для этого я выполняю команду cmd через свое Java-приложение, используя API ProcessBuilder, встроенный в Java. Команда работает нормально, но иногда я получаю глючное видео с битыми кадрами и звуком. Вот мой код:
public static void convertFile(File input, File output) {
String command = "ffmpeg -protocol_whitelist file,http,https,tcp,tls,crypto -vsync 2 -i \"" + input.getAbsolutePath() + "\" -c copy " + "\"" + output.getAbsolutePath() + "\"";
System.out.println("______________________________________________________");
System.out.println("Converting file...");
System.out.println("Using as input " + input.getAbsolutePath());
System.out.println("Using as output " + output.getAbsolutePath());
System.out.println("Using as command: " + command);
System.out.println("______________________________________________________");
setHasDone(false);
ProcessBuilder pb = new ProcessBuilder();
pb.command(command.split(" "));
pb.redirectOutput(ProcessBuilder.Redirect.INHERIT);
pb.redirectError(ProcessBuilder.Redirect.INHERIT);
Process process;
try {
process = pb.start();
}catch (IOException e){
e.printStackTrace();
return;
}
while (process.isAlive()){
setHasDone(false);
}
setHasDone(true);
}
Пример битого видео: https://thewikihow.com/video_FfFvStNl-9o
При загрузке на ютуб много видео, багов нету, не знаю толком почему, но в конце хорошо видно о чем я. Я неправильно использую ffmepg?
Я разместил это, так как ни один из 1000 ответов на подобные сообщения не помог мне.
Является ли ваш m3u8 списком медиафайлов, которые вы хотите объединить?
Нет, это файл m3u8, который содержит одно и то же видео в разном разрешении, но файл по умолчанию (тот, который преобразуется) — 720p60fps.




Все еще ищу помощи!