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

如何用FFmpeg在圆角矩形上绘制文字?命令报错求助

FFmpeg绘制圆角矩形并叠加文字的解决方案

你遇到的错误是因为drawbox滤镜本身不支持round参数,该参数不属于drawbox的可选配置项,所以FFmpeg会抛出"Option 'round' not found"的错误。要实现圆角矩形+文字叠加,需要用其他滤镜组合来完成,以下是两种可行方案:

方案一:使用geq滤镜绘制圆角矩形

geq滤镜可以通过像素级计算生成自定义形状,包括圆角矩形。下面的命令会生成两个圆角矩形(顶部白色半透明、底部黑色半透明),再叠加到原视频上,最后添加文字:

ffmpeg -y -i ./video-ready-all.mp4 -filter_complex "
# 生成顶部白色圆角矩形(半透明)
[0:v]geq='if(lt(dist(min(X,iw),min(Y,40)),20),0.5*255,0)':W=iw:H=40,format=yuva420p[top_round_box];
# 生成底部黑色圆角矩形(半透明)
[0:v]geq='if(lt(dist(min(X,iw),min(Y,40)),20),0.5*255,0)':W=iw:H=40,format=yuva420p,colorchannelmixer=rr=0:gg=0:bb=0[bottom_round_box];
# 叠加顶部矩形到原视频
[0:v][top_round_box]overlay=y=0[tmp_video];
# 叠加底部矩形到临时视频
[tmp_video][bottom_round_box]overlay=y=0.5*(ih-40)[final_bg];
# 在底部矩形上叠加文字
[final_bg]drawtext=text='My Text Here':fontcolor=white:fontsize=24:x=(w-tw)/2:y=(0.5*(ih-40))+((40-th)/2)"
-c:a copy ./output.mp4

关键参数说明:

  • geq表达式:dist(min(X,iw),min(Y,40))计算当前像素到矩形四个边角的最短距离,当距离小于20(圆角半径)时,输出半透明的alpha值(0.5*255),否则输出0(完全透明)
  • format=yuva420p:将生成的矩形转换为带alpha通道的像素格式,确保透明度效果正常叠加
  • colorchannelmixer=rr=0:gg=0:bb=0:把白色矩形的RGB通道值设为0,转为黑色,保留原有的alpha透明度
  • drawtext的y坐标:0.5*(ih-40)是底部矩形的Y起始位置,加上(40-th)/2让文字在矩形内垂直居中

方案二:通过lavfi生成圆角矩形流再叠加

先通过lavfi滤镜生成一个独立的圆角矩形视频流,再叠加到原视频上,最后添加文字:

ffmpeg -y -i ./video-ready-all.mp4 -f lavfi -i "color=c=black@0.5:s=%wx40:r=30,geq='if(lt(dist(min(X,iw),min(Y,40)),20),255,0)':W=iw:H=40" -filter_complex "
# 叠加圆角矩形到原视频的指定位置
[0:v][1:v]overlay=y=0.5*(ih-40):shortest=1[tmp_video];
# 添加文字
[tmp_video]drawtext=text='My Text Here':fontcolor=white:fontsize=24:x=(w-tw)/2:y=(0.5*(ih-40))+((40-th)/2)"
-c:a copy ./output.mp4

关键参数说明:

  • -f lavfi -i "color=...":生成一个黑色半透明、高度40的视频流,再用geq裁剪出圆角效果
  • shortest=1:确保叠加后的视频长度和原视频一致
  • 文字位置计算和方案一相同,保证在底部矩形内垂直居中

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 14:17:37