2017-02-03 13 views
0
String[] code = new String[]{"ffmpeg", "-i","D:/ffmpeg/20170201_164127.mp4", 

      "-i","D:/ffmpeg/cc.png", "-filter_complex", 

      "[0:v][1:v]overlay=main_w-overlay_w-5:main_h-overlay_h-5", 
      "drawtext=fontfile=/ffmpeg/Arial.ttf:text='TESTING'[email protected]:fontsize=70:x=10:y=H-th-10:box=1:[email protected]:boxborderw=5:x=10:y=H-th-10", 

      "[out]","-map", "[out]", "-map", "2:0", 
      "-acodec","mp3", "D:/ffmpeg/test7.mp4"}; 



      Process processDuration = new ProcessBuilder(code).redirectErrorStream(true).start(); 

      StringBuilder strBuild = new StringBuilder(); 

      try (BufferedReader processOutputReader = new BufferedReader(new InputStreamReader(processDuration.getInputStream(), Charset.defaultCharset()));) { 

       String line; 

       while ((line = processOutputReader.readLine()) != null) { 

        strBuild.append(line + System.lineSeparator()); 

       } 

       processDuration.waitFor(); 

      } 

      String outputJson = strBuild.toString().trim(); 

      System.out.println(outputJson); 

      } 

画像のみを使用すると、コードが正しく表示されます。私はすべてのコードを使用している場合しかし、これは起こる:ffmpeg - javaを使用してビデオに画像とテキストを挿入する方法

[NULL @ 00000000006abe60] に適した出力形式を見つけることができません 'のDrawText = fontfile =/ffmpegの/ arial.ttfの:テキスト=' TESTING'fontcolor =白@ = 10:y = H-th-10 ' drawtext = fontfile = 10:y = H-th-10:box = 1:[email protected]:boxborderw = 5:x = 10:y = /ffmpeg/Arial.ttf:text='TESTING'[email protected]:fontsize=70:x=10:y=H-th-10:box=1:[email protected]:boxborderw=5:x= 10:Y = H-TH-10: 無効な引数それはそうように、スペースがエラーを説明すること、その後、文字列内の各引数の後に挿入され、場合

+1

詳細を追加してください:CMDでそのコマンドを実行しようとするとどうなりますか?このメッセージは何から来ますか(例外がスローされ、標準出力ストリーム、エラーストリーム)? –

+0

あなたはdrawtextフィルタが出力ファイルであることを 'ffmpeg'に伝えています。私はJavaユーザーではありませんが、引用、コンマ、および改行の問題が考えられます。コードが生成する実際の 'ffmpeg'コマンドを表示すると、問題がどこにあるかが示されます。またMP4の代わりにmp3の代わりにaacを使用してください。いくつかの主流の、不気味なプレイヤーはその組み合わせを解読するのに問題があります。 – LordNeckbeard

+0

私はcmdコードで試してみると、プログラムがうまく動作します。しかし、私はjavaが動作しないとしようとするとき。 – MaF

答えて

0

。 filter_complex全体を引用符で囲っていないため、オーバーレイとdrawtextの間にスペースが挿入されます。 FFmpegするには、オーバーレイでfilter_complexを終了したように見えるので、drawtext文字列は出力を表します。

だからどちらかの間にスペースなしで[out]件までを含む1つの文字列に全体filter_complex引数を提供OR [0:v]前と[out]後に引用符を開閉二重引用符を追加します。おそらくそれらの引用符をエスケープする必要があります。

関連する問題