2012-04-17 17 views
0

FFMPEGを使用してビデオをフレームに変換するプログラムを作成したいと思います。私がUbuntu端末で使用すると、うまく動作します。しかし、Javaコードに入れようとすると、ランタイムエラーが発生します。私は以下のコードで間違いを犯しましたか?FFMPEG in 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用のカウンタを作ることは可能ですか?私はそれが30フレーム/ 1secondsにビデオを変換するためにUbuntuのターミナルで次のコマンドを使用:

ffmpeg -i display.wmv image%d.jpg 

これは自動的にimage901.jpgにimage1.jpg、image2.jpg、同じ番号を生成します。このためのカウンターを作ることは可能ですか?私はファイルを数え、番号を制御する必要があるからです。

ありがとうございます。

+0

ここにエラーテキスト(stacktrace)を入れてもいいですか? – weekens

+0

私は別のコードを使用してエラーを解決し、フォーマットを置き換えてください.. btw、thanks weekens @ weekens – Eric

答えて

0

execを呼び出すときは、コマンド文字列にパラメータを指定するのではなく、2番目のパラメータとして配列に渡すようにしてください。

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

返信いただきありがとうございます。 私はあなたのようにコードを変更しましたが、私も動作しません。と私はそれを、私は誰かがexecの中に完全なパスを入れて、それがこのようになったことがわかった Runtime.getRuntime()。exec( "/ home/pc3/Documents/ffmpeg_temp/ffmpeg -i display.wmv image% d.jpg ") エラーなくコンパイルできます。イメージ%d.jpgを置き換えるためにカウンタを使用することは可能ですか?前もって感謝します – Eric