0

我想编写一个使用 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 这样的数字。可以为此做一个计数器吗?因为我需要统计文件并控制数量。

提前致谢。

4

1 回答 1

0

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

Process p = Runtime.getRunTime().exec("ffmpeg",
               new String[]{"-i", "display.wmv", "image%d.jpg"));
//                        are you sure regarding this %^
于 2012-04-17T06:24:37.263 回答