首页 > 解决方案 > 在 fluent-ffmpeg 中,如何包含多个视频过滤器?

问题描述

下面的代码添加了水印,但忽略了缩放。如何在 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>'

标签: ffmpegfluent-ffmpeg

解决方案


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

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'参数的正确性,您也错过了视频编解码器规范。


推荐阅读