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

FFmpeg drawtext滤镜boxborderw参数设置不同横竖边框宽度报错问题

FFmpeg drawtext滤镜boxborderw参数设置不同横竖边框宽度报错问题

嘿,我完全懂你遇到的糟心情况——照着官方文档写的boxborderw=20|80格式设置横竖不同的边框宽度,结果直接触发解析失败的报错,确实挺让人摸不着头脑的。

先帮你拆解问题根源:虽然文档里描述了可以用上下边框值|左右边框值这种竖线分隔的写法,但实际在FFmpeg 6.0版本中,boxborderw参数目前仅支持单个数值,也就是上下左右的边框宽度必须统一,文档的描述要么是存在歧义,要么是该功能还未在当前版本实装。

不过别担心,我给你两个可行的替代方案,能实现你想要的横竖边框宽度不同的效果:

方案一:叠加两层drawtext滤镜

通过两层drawtext来模拟差异化边框:第一层只显示宽边框的背景框(对应你要的左右宽边框),第二层叠加带窄边框的文字(对应上下窄边框),具体命令如下:

ffmpeg -i input_video.mp4 -vf "
drawtext=text='':box=1:boxcolor=black@0.5:boxborderw=80:x=w-text_w-10:y=10:enable='between(t,3,10)',
drawtext=text='Countdown %{eif\:10-t\:d}':box=1:boxcolor=black@0.5:boxborderw=20:fontcolor=white:fontsize=24:x=w-text_w-10:y=10:enable='between(t,3,10)'
" -c:a copy output_video.mp4

原理是让第一层的宽边框背景打底,第二层的窄边框文字覆盖在上面,视觉上就达成了左右边框比上下宽的效果。

方案二:用pad滤镜配合drawtext

先给文字层添加定向填充(模拟边框),再将处理后的文字层叠加到原视频上:

ffmpeg -i input_video.mp4 -filter_complex "
[0:v]drawtext=text='Countdown %{eif\:10-t\:d}':fontcolor=white:fontsize=24:enable='between(t,3,10)'[txt];
[txt]pad=w=iw+160:h=ih+40:x=0:y=0:color=black@0.5[padded];
[0:v][padded]overlay=x=w-overlay_w-10:y=10:enable='between(t,3,10)'
" -c:a copy output_video.mp4

这里pad=w=iw+160是给文字左右各加80的填充(对应左右边框80),h=ih+40是给文字上下各加20的填充(对应上下边框20),最后把带填充的文字层放到原视频的指定位置即可。

另外给你个小建议:以后遇到文档和实际操作不符的情况,可以直接在终端执行ffmpeg -h filter=drawtext,查看本地FFmpeg版本的实时参数说明,这个才是最准确的,能避开文档更新不及时的坑。

备注:内容来源于stack exchange,提问作者user1768741

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.20 09:57:57