我目前正在编写一个桌面实用程序,如果满足某些要求,它会下载Twich Clips。由于抽搐api作为响应提供了一个m3u8文件,因此我必须将其转换为mp4。为此,我正在使用Java内置的ProcessBuilder API通过Java应用程序执行cmd命令。该命令可以正常工作,但有时我会收到一个断断续续的帧和音频错误的视频。这是我的代码:
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个答案都没有帮助我。