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

如何修改FFmpeg xstack滤镜拼接视频时的默认背景颜色

解决方案

你可以通过以下两种方式修改空缺区域的颜色,两种方案均兼容FFmpeg 4.4版本:

方案1:使用xstack自带fill参数(最简便)

xstack滤镜原生支持fill参数用于指定无视频覆盖区域的背景色,直接在原有命令的xstack参数后追加该配置即可:

ffmpeg -i TEST.mkv -i TEST.mkv -i TEST.mkv -filter_complex "
[0:v] scale=960x540 [a0];
[1:v] scale=960x540 [a1];
[2:v] scale=960x540 [a2];
[a0][a1][a2] xstack=inputs=3:layout=0_0|0_h0|w0_0:fill=black[out]"
 -map "[out]" -f matroska - | ffplay -

fill参数支持的颜色格式:

  • 内置颜色名:比如black(黑色)、white(白色)、red(红色)、gray(灰色)
  • 十六进制格式:比如#000000(黑色)、#FF00FF(紫色),支持带透明度的RGBA格式如#0000007F(半透明黑色),注意在shell环境中使用#开头的色值时需要给参数加额外引号或转义#字符。

方案2:叠加纯色背景层(适合复杂自定义需求)

如果你后续需要给背景加图片、动效等自定义内容,可以先生成对应分辨率的纯色背景,再把拼接后的视频叠在背景上:

ffmpeg -i TEST.mkv -i TEST.mkv -i TEST.mkv -filter_complex "
color=c=black:s=1920x1080[bg];
[0:v] scale=960x540 [a0];
[1:v] scale=960x540 [a1];
[2:v] scale=960x540 [a2];
[a0][a1][a2] xstack=inputs=3:layout=0_0|0_h0|w0_0[stacked];
[bg][stacked] overlay=shortest=1[out]"
 -map "[out]" -f matroska - | ffplay -

其中color滤镜的c参数对应背景色,s参数对应最终输出的视频分辨率,overlay的shortest=1参数用于保证背景时长和拼接视频的时长一致。


内容的提问来源于stack exchange,提问作者Abdelsalam ElTamawy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 03:27:02