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

使用FFmpeg为视频添加指定边距字幕失败的问题排查

FFmpeg 字幕左下角定位问题解决方法

问题原因

你之前的命令里,Alignment=1确实是左下角对齐,但MarginL和MarginV的逻辑和预期不符:

  • MarginV在Alignment=1时代表字幕块顶部到视频顶部的距离,而非底部
  • MarginL是字幕块左侧到视频左侧的距离,但字幕本身有宽度,直接设较大值会导致字幕整体偏右,出现超出中线的情况

解决方案

以下提供两种可行的定位方式,支持像素或百分比设置:

1. 像素精准定位

如果要固定像素边距,需手动计算MarginV的值:

  • 公式:MarginV = 视频高度 - 字体高度 - 底部边距像素
  • 保持Alignment=1,MarginL直接设为左侧边距像素

以你的850x480视频为例,若要距左侧42像素(5%)、距底部48像素(10%)、字体24号,命令修改为:

ffmpeg -y -i english.mp4 -vf "subtitles=english.srt:force_style='Alignment=1,OutlineColour=&H100000000,BorderStyle=3,Outline=1,Shadow=0,FontName=Arial,FontSize=24,MarginL=42,MarginV=408'" -c:v libx264 -crf 23 -c:a copy output_video.mp4

注:MarginV=480-24-48=408,确保字幕底部到视频底部的距离为48像素

2. 百分比自适应定位

通过subtitles滤镜的x/y表达式直接基于视频宽高计算位置,无需手动适配分辨率:

  • x=0.05*w:左侧边距为视频宽度的5%
  • y=h-0.10*h:字幕左下角距视频底部的距离为视频高度的10%(配合alignment=1实现左下角对齐)

命令示例:

ffmpeg -y -i english.mp4 -vf "subtitles=english.srt:x=0.05*w:y=h-0.10*h:alignment=1:force_style='OutlineColour=&H100000000,BorderStyle=3,Outline=1,Shadow=0,FontName=Arial,FontSize=24'" -c:v libx264 -crf 23 -c:a copy output_video.mp4

这种方式会自动适配不同分辨率的视频,无需重新计算数值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 01:05:19