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

如何用FFmpeg设置上下不同背景色的画面边距?

嘿,这个需求很常见,单一的pad滤镜确实没法设置不同边距的颜色,不过我们可以用FFmpeg的滤镜链组合来实现精准控制。我给你两种靠谱的方案,任选其一就行:

方案1:自定义背景层+视频叠加(更灵活)

这种方法先创建一个带有指定颜色边距的背景画布,再把视频居中叠加上去,逻辑清晰,后续调整颜色或区域也更方便。

完整命令:

ffmpeg -i input.mp4 -filter_complex "
[0:v] setpts=PTS-STARTPTS [main]; 
# 创建和目标画布大小一致的黑色背景(画布为视频宽高最大值的正方形)
color=c=black:size='max(main_w,main_h)xmax(main_w,main_h)' [bg]; 
# 在背景顶部绘制绿色边距区域,高度等于需要补充的顶部空白
[bg] drawbox=x=0:y=0:w=iw:h='(ih - main_h)/2':color=green:t=fill [bg_top]; 
# 在背景底部绘制蓝色边距区域,高度和顶部一致
[bg_top] drawbox=x=0:y='ih - (ih - main_h)/2':w=iw:h='(ih - main_h)/2':color=blue:t=fill [bg_final]; 
# 将原始视频居中叠加到背景上
[main][bg_final] overlay=x='(W-w)/2':y='(H-h)/2' [out]
" -map "[out]" output.mp4

关键部分解释:

  • color滤镜:生成和你原命令一致的正方形画布(大小为视频宽高的最大值),底色黑色。
  • drawbox滤镜:t=fill表示完全填充矩形,(ih - main_h)/2就是原pad命令中上下边距的高度,刚好对应需要染色的区域。
  • overlay滤镜:保证视频和原命令一样居中放置,边距颜色则由背景层的色块控制。

方案2:两次pad滤镜分步添加(更简洁)

如果你习惯用pad的思路,也可以分两次添加边距,第一次加顶部绿色,第二次加底部蓝色:

ffmpeg -i input.mp4 -filter_complex "
[0:v] pad='max(iw,ih)':ih + (max(iw,ih)-ih)/2:(max(iw,ih)-iw)/2:0:green [top_pad];
[top_pad] pad='max(iw,ih)':max(iw,ih):(max(iw,ih)-iw)/2:(max(iw,ih)-ih)/2:blue [out]
" -map "[out]" output.mp4

逻辑说明:

第一次pad给视频添加顶部绿色边距,第二次pad在底部补充蓝色边距,左右边距始终保持黑色,完全匹配你原命令的居中逻辑。

两种方案都能实现需求,个人更推荐第一种,扩展性更强~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:52:28