【问题标题】:In fluent-ffmpeg, how do you include multiple video filters?在 fluent-ffmpeg 中,如何包含多个视频过滤器?
【发布时间】:2026-02-09 03:25:01
【问题描述】:

下面的代码添加了水印但忽略了缩放。 如何在 fluent-ffmpeg 中包含多个视频过滤器?

ffmpeg(inputFileName)
  .inputOptions(['-safe 0', '-f concat'])
  .outputOptions([
    '-filter:v scale=w=1280:h=720',
    "-filter:v drawtext=text='watermarkText':x=W-150:y=H-th-10:fontsize=32:fontcolor=white",
    '-crf 10'
  ])
  .save('output.mp4'); 

我在.outputOptions([]) 中也尝试了这些格式,但无济于事:
'-filter:v <param1>, <param2>'
'-filter:v <param1>; <param2>'
'-filter:v', '<param1>', '<param2>'

【问题讨论】:

    标签: ffmpeg fluent-ffmpeg


    【解决方案1】:

    我想你可以用逗号分隔两个过滤器:

    ffmpeg(inputFileName)
      .inputOptions(['-safe 0', '-f concat'])
      .outputOptions(["-filter:v scale=w=1280:h=720,drawtext=text='watermarkText':x=W-150:y=H-th-10:fontsize=32:fontcolor=white",
        '-crf 10'
      ])
      .save('output.mp4'); 
    

    我无法使用fluent-ffmpeg 对其进行测试,但这是ffmpeg 命令行语法。

    使用命令行测试:

    • 生成合成输入视频文件:

      ffmpeg -y -f lavfi -i testsrc=duration=10:size=192x108:rate=1 -c:v rawvideo -pix_fmt bgr24 input.avi
      
    • 缩放到 1280x720 并绘制文本(使用大号绿色文本):

      ffmpeg -y -i input.avi -filter:v scale=w=1280:h=720,drawtext=text='watermarkText':x=W/2:y=H-th-10:fontsize=72:fontcolor=green -vcodec libx264 -crf 10 output.mp4
      

    我不确定'-f concat' 参数的正确性,您也错过了视频编解码器规范。

    【讨论】:

    • 谢谢。你是对的。出于我的目的,我还需要为视频添加填充,以便将文本添加到原始视频之外。