Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当执行多个实例时,ffmpeg将无限期挂起_Java_Ffmpeg - Fatal编程技术网

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

Java 当执行多个实例时,ffmpeg将无限期挂起,java,ffmpeg,Java,Ffmpeg,我有一些20k以上的MP3,我正试图提取它们的缩略图,并将它们保存为磁盘上的jpeg文件。我正在使用ffmpeg来完成这项工作。为了加快速度,我创建了一个java应用程序,它同时运行五个线程和处理五个图像 问题是有时候ffmpeg会挂起。我检查了htop,看到五个ffmpeg实例在没有CPU使用的情况下运行,它们只是坐在那里无所事事 不过,如果我选择使用单线程,一切都会很好。以下是我运行ffmpeg提取音频缩略图的方式: private void vGetAudioFrames(String i

我有一些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)
    {

    }
}

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

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

考虑添加
-n
全局选项(在
-i
之前)。-n告诉ffmpeg不要覆盖现有文件-y说要这么做。它挂起是因为当输出文件存在时,它会提示您是否要覆盖并等待用户输入。