Java 当执行多个实例时,ffmpeg将无限期挂起
我有一些20k以上的MP3,我正试图提取它们的缩略图,并将它们保存为磁盘上的jpeg文件。我正在使用ffmpeg来完成这项工作。为了加快速度,我创建了一个java应用程序,它同时运行五个线程和处理五个图像 问题是有时候ffmpeg会挂起。我检查了htop,看到五个ffmpeg实例在没有CPU使用的情况下运行,它们只是坐在那里无所事事 不过,如果我选择使用单线程,一切都会很好。以下是我运行ffmpeg提取音频缩略图的方式:Java 当执行多个实例时,ffmpeg将无限期挂起,java,ffmpeg,Java,Ffmpeg,我有一些20k以上的MP3,我正试图提取它们的缩略图,并将它们保存为磁盘上的jpeg文件。我正在使用ffmpeg来完成这项工作。为了加快速度,我创建了一个java应用程序,它同时运行五个线程和处理五个图像 问题是有时候ffmpeg会挂起。我检查了htop,看到五个ffmpeg实例在没有CPU使用的情况下运行,它们只是坐在那里无所事事 不过,如果我选择使用单线程,一切都会很好。以下是我运行ffmpeg提取音频缩略图的方式: private void vGetAudioFrames(String i
private void vGetAudioFrames(String input)
{
try
{
ProcessBuilder procBuilder = new ProcessBuilder("ffmpeg", "-i" , input, input + ".jpg");
Process process = procBuilder.start();
process.waitFor();
}
catch (IOException e)
{
}
}
我不确定我做错了什么。调用太简单,我不确定是否需要其他参数才能使其正常工作。很抱歉,当输出文件已经存在时,它似乎挂起。我的队列检索中有一个流,导致同一文件在同一个周期中被拉取两次。考虑添加
-n
全局选项(在-i
之前)。-n告诉ffmpeg不要覆盖现有文件-y说要这么做。它挂起是因为当输出文件存在时,它会提示您是否要覆盖并等待用户输入。