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){}
    }

}

編集:

あなたが提案したようにコードを変更しましたが、それも機能しません。そして、Googleで検索したところ、誰かが実行可能ファイル内にフルパスを入力したことがわかり、次のようになりました。

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は、コマンド文字列でパラメーターを指定するのではなく、2 番目のパラメーターとして配列で渡します。

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 に答える