2015-10-05 106 views
0

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

问题是,有时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

考虑添加'-n'全局选项(在'-i'之前)。 – LordNeckbeard