• 締切済み

javaからのFFMPEGの利用

現在、windows vista に ffmpeg をインストールし、java(1.6)から以下のようにffmpeg.exeを呼び出しています。 -------------------------------------------------------------- public static void main(String[] args) { ProcessBuilder builder = new ProcessBuilder("C:/Tools/3GP_Converter034/cores/debug.bat"); try { Process process = builder.start(); InputStream is = process.getInputStream(); //標準出力 printInputStream(is); InputStream es = process.getErrorStream(); //標準エラー printInputStream(es); } catch (Exception e) { throw new ConversionException(e); } } public static void printInputStream(InputStream is) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(is)); for (;;) { String line = br.readLine(); if (line == null) break; System.out.println(line); } } -------------------------------------------------------------- debug.batの中身は以下です。 -------------------------------------------------------------- C:/Tools/3GP_Converter034/cores/ffmpeg.exe -y -i c:/work/a.mpg -f flv -vcodec flv -r 25 -b 900k -ar 44100 -ab 64k c:/work/out99.flv -------------------------------------------------------------- debug.batを直接呼び出すと正常にout99.flvが出力されるのですが、java経由だとうまくできません。 printInputStreamメソッドから以下のsysytem out文が出力されたまま止まってしまいます。 C:\java>C:/Tools/3GP_Converter034/cores/ffmpeg.exe -y -i c:/work/a.mpg -f flv -vcodec flv -r 25 -b 900k -ar 44100 -ab 64k c:/work/out99.flv まったく理由がわかりませn。 どなたかご教示ください;;

みんなの回答

回答No.2

う~ん。 標準出力と標準エラーの出力をコメントアウトしてみて、 代わりに process.waitFor(); int result = process.exitValue(); System.out.println("result:"+result); としてみるとどうなりますか? 正常に実行できていれば、resultが0になると思うのですが…。

MACKA
質問者

補足

ご回答ありがとうございます。 ご提示いただいた通りのコードを実行したところ、 process.waitFor()以降に処理が進まない状態となります。 やはりffmpegコマンドが実行されていないように思えます・・

回答No.1

Windows VistaなのでUACが利いてるとか…。 ffmpegの実行に管理者権限が必要とかありませんか?

MACKA
質問者

補足

ご回答ありがとうございます。 vista全体で、UACは無効に設定しています。

関連するQ&A