2

ffmpeg コマンドのフロントエンドとして機能する Java で Java Swing アプリケーションを作成しています。ユーザーからフォルダーとファイル名を入力し、JTextField に常に表示されるさらに多くのパラメーターを追加します。ユーザーは、呼び出されるテキスト フィールドで最終コマンドを編集できます。

これは、Windows と Linux の両方で機能します。

Process ffmpeg = Runtime.getRuntime().exec(command, null, new File(current_working_folder));

コマンドは文字列です。OS に応じてフォーマットされるため、パスは常に完全 (絶対パス) で指定され、スラッシュは指定された OS に適しています。

Windows と Linux では、フォルダとファイル名を「....」で囲むことで、ffmpeg コマンドを実行できます。Windows では、このフォーマットは最終的に Runtime.getRunTime.exec() を通じて機能します。

ただし、Linux では、これは Runtime.getRunTime.exec() では機能しません。引用符はおそらく "...." と誤解されています。

これに関するアドバイスはありますか?

4

1 に答える 1

2

このメソッドを使用して、文字列ではなく配列としてコマンドを渡してみてください: Runtime.exec(String[] cmdarray, String[] envp, File dir)

たとえば、次の代わりに:

Runtime.getRuntime().exec("ffmpeg -i video_origine.avi video_finale.mpg", null, new File(current_working_folder));

使用する:

Runtime.getRuntime().exec(new String[]{"ffmpeg", "-i", "video_origine.avi", "video_finale.mpg"}, null, new File(current_working_folder));
于 2012-12-20T17:34:41.297 に答える