#java #ffmpeg #mp4 #m3u8
#java #ffmpeg #МР4 #m3u8
Вопрос:
В настоящее время я кодирую настольную утилиту, которая загружает Twich-клипы, если они соответствуют некоторым требованиям. Поскольку twitch api выдает в качестве ответа файл m3u8, я должен преобразовать его в mp4. Для этого я выполняю команду cmd через мое Java-приложение, используя ProcessBuilder API, встроенный в 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://youtu.be/FfFvStNl-9o
При загрузке на YouTube многих ошибок в видео нет, на самом деле не знаю почему, но в конце вы можете четко видеть, о чем я говорю. Я неправильно использую ffmepg?
Я опубликовал это, поскольку ни один из 1000 ответов на похожие сообщения мне не помог.
Комментарии:
1. Все еще обращаешься за помощью!
2. Является ли ваш m3u8 списком носителей, которые вы хотите объединить?
3. Нет, это файл m3u8, который содержит одно и то же видео в разных разрешениях, но по умолчанию (тот, который конвертируется) имеет скорость 720p60fps