2017-02-03 153 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 =白@ 1.0:fontsize = 70:x = 10:y = H-th-10:box = 1:[email protected]:boxborderw = 5:x = 10:y = H-10'012ffdrawtext = 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: 无效参数

+1

请添加更多信息:如果您尝试在CMD中运行该命令,会发生什么情况?这条消息来自哪里(抛出异常,标准输出流,错误流)? –

+0

您正在告诉'ffmpeg',该图文过滤器是输出文件。我不是Java用户,但它可能是引用,逗号和/或换行符问题。显示代码生成的实际'ffmpeg'命令将显示问题出在哪里。此外,使用AAC而不是MP3的MP4:一些主流,蹩脚的球员无法解码该组合。 – LordNeckbeard

+0

当我尝试使用cmd代码时很好,程序正常工作。但是,当我尝试与Java不工作。 – MaF

回答

0

如果,因为它似乎,一个空间形成在串中的每个参数之后插入,然后解释错误。您并未将整个filter_complex放在引号中,因此会在叠加层和drawtext之间插入空格。对于FFmpeg,它看起来像用叠加层终止了filter_complex,因此drawtext字符串表示输出。

因此,无论提供整个filter_complex论点一个字符串,包括高达[out]没有空格之间或[0:v]之前和之后[out]收盘报价加开双引号。你可能不得不逃避那些引号。

相关问题