You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在FFmpeg中合并两个filter_complex实现硬字幕与水印叠加?

如何在FFmpeg中合并多个filter_complex操作(同时添加带黑背景的字幕和水印)

当然可以!FFmpeg的filter_complex本身就支持在一条命令里组合多个滤镜操作,完全不需要分开执行两条命令。你只需要把字幕处理和水印叠加的逻辑整合到同一个滤镜链里就行。

核心思路

先通过subtitles滤镜给视频添加带黑背景的硬字幕,再将处理后的视频与水印图片叠加——这两个步骤可以在同一个filter_complex中串联完成,也能根据需求调整顺序(比如先加水印再加字幕,不过通常字幕层级在水印上方更合理)。

完整示例命令

假设你的水印文件是logo.png,以下是整合后的完整命令:

ffmpeg -i xp.mp4 -i logo.png -filter_complex "[0:v]subtitles=H1.ass:force_style='OutlineColour=&H80000000,BorderStyle=4,ShadowColour=&H80000000,Shadow=0,BackColour=&H80000000,Fontsize=24'[subbed_video];[subbed_video][1:v]overlay=10:10[final_video]" -map "[final_video]" -map 0:a -c:a copy output.mp4

命令详解

  • [0:v]:指代第一个输入文件(xp.mp4)的视频流
  • subtitles=...:执行字幕添加操作,通过force_style设置黑背景(BackColour=&H80000000)及其他字幕样式,处理后的视频流命名为[subbed_video]
  • [subbed_video][1:v]overlay=10:10:将带字幕的视频与第二个输入文件(logo.png)的视频流叠加,10:10表示水印位于左上角,距离边缘10像素;如果想放在右下角,可以改成overlay=W-w-10:H-h-10
  • -map "[final_video]":指定输出视频流为处理后的最终视频
  • -map 0:a -c:a copy:保留原视频的音频流并直接拷贝,避免重新编码损耗

额外注意事项

  • 如果你的水印是透明PNG,FFmpeg默认支持透明通道,无需额外设置
  • 可以根据需求调整滤镜顺序:如果希望水印在字幕上方,只需把overlay放在subtitles之前即可
  • 若需要更复杂的布局(比如多个水印、字幕位置调整),可以继续在filter_complex中扩展滤镜链

内容的提问来源于stack exchange,提问作者Behrooz Ramezani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 08:43:15