Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.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_Runtime.exec - Fatal编程技术网

Java中的FFMPEG(运行时错误)

Java中的FFMPEG(运行时错误),java,ffmpeg,runtime.exec,Java,Ffmpeg,Runtime.exec,我想写一个程序,用FFMPEG将视频转换成帧。当我在Ubuntu终端上使用它时,它工作得很好。但当我试图将其放入Java代码时,它会给我一个运行时错误。我在下面的代码中出错了吗 import java.util.*; import java.awt.*; import java.lang.*; import java.lang.Runtime; import java.io.*; import java.io.IOException; public class ConvertVideoToIm

我想写一个程序,用FFMPEG将视频转换成帧。当我在Ubuntu终端上使用它时,它工作得很好。但当我试图将其放入Java代码时,它会给我一个运行时错误。我在下面的代码中出错了吗

import java.util.*;
import java.awt.*;
import java.lang.*;
import java.lang.Runtime;
import java.io.*;
import java.io.IOException;

public class ConvertVideoToImage
{
    private SingletonServer ss = null;

    public ConvertVideoToImage(SingletonServer ss)
    {
        this.ss = ss;
    }

    public void run()
    {
        convertVideo();
    }

    public void convertVideo()
    {
        try
        {
            Runtime rt = Runtime.getRunTime().exec("ffmpeg" + "-i" +         "display.wmv" + "image%d.jpg");
        }
        catch(Exception e){}
    }

}
编辑:

我已经按照你的建议修改了代码,但它也不起作用。当我在谷歌上搜索时,我发现有人把完整路径放在可执行文件中,结果变成这样:

Runtime.getRuntime().exec("/home/pc3/Documents/ffmpeg_temp/ffmpeg -i display.wmv image%d.jpg")
顺便说一句,谢谢你的回复。我还有一个问题。可以为FFMPEG制作计数器吗?我在Ubuntu终端中使用了这个命令,让它将视频转换为30帧/1秒:

ffmpeg -i display.wmv image%d.jpg
这将自动生成像image1.jpg、image2.jpg到image901.jpg这样的数字。能为这个做个柜台吗?因为我需要清点文件并控制数量


提前感谢。

调用
exec
时,不应在命令字符串中指定参数,而应将它们作为第二个参数在数组中传递

Process p = Runtime.getRunTime().exec("ffmpeg",
               new String[]{"-i", "display.wmv", "image%d.jpg"));
//                        are you sure regarding this %^

谢谢你的回复。我已经按照你的建议更改了代码,但我也不工作。我用谷歌搜索了一下,发现有人把完整的路径放在了exec里面,它变成了这个Runtime.getRuntime().exec(“/home/pc3/Documents/ffmpeg_temp/ffmpeg-i display.wmv image%d.jpg”),它可以编译而不会出错。是否可以使用计数器替换图像%d.jpg?提前谢谢你能把错误文本(stacktrace)放在这里吗?我已经用另一个代码解决了错误并替换了格式。。顺便说一句,谢谢weekens@weekens