执行多个实例时,ffmpeg无限期挂起

时间:2015-10-05 05:49:08

标签: java ffmpeg

我有一些20k +的mp3,我试图提取缩略图并将它们保存为磁盘上的jpeg文件。我正在使用ffmpeg来完成工作。为了加快速度,我创建了一个运行五个线程并同时处理五个图像的java应用程序。

问题是有时ffmpeg会挂起。我检查了htop,我看到五个ffmpeg实例在没有CPU使用的情况下运行,他们只是坐在那里什么都不做。

如果我选择使用单个线程,那么一切正常。这就是我运行ffmpeg来提取音频缩略图的方法:

private void vGetAudioFrames(String input)
{
    try
    {
        ProcessBuilder procBuilder = new ProcessBuilder("ffmpeg", "-i" , input, input + ".jpg");
        Process process = procBuilder.start();
        process.waitFor();
    }
    catch (IOException e)
    {

    }
}

我不确定我做错了什么。调用过于简单,我不确定是否需要其他参数才能使其正常工作。

1 个答案:

答案 0 :(得分:1)

很抱歉,它似乎是在输出文件已经存在时挂起。我的队列检索中有一个流程导致同一个文件在同一个循环中被拉两次。