视频工具 · 字幕处理

字幕时间轴

整体平移/拉伸/帧率换算

本地处理 · 不上传 免费 · 无需登录 无次数限制 累计 58 次使用
整体平移 Shift
字幕整体提前或延后;负时间自动钳到 0。
线性拉伸 Stretch
速度不匹配时按比例缩放;锚点方式自动算出因子与偏移。
帧率换算 FPS
time × 源fps ÷ 目标fps,用于电影 24 ↔ 电视 25 等 PAL 速变。
输出
输 入 SRT/VTT
输 出 SRT
调整后的字幕将在这里呈现 —— 点「示例」试试
就绪 · 粘贴或拖入字幕,开启上方时间变换并实时调整
第一节

关于本工具

About

剪辑时发现字幕整体慢了半秒,或者视频从 25fps 转成 30fps 后时间码全乱。这个工具把平移、拉伸和帧率换算三种操作做到一个页面里:输入原字幕时间轴和偏移量或目标帧率,直接输出调整后的时间码。所有计算在浏览器本地进行,字幕文件不上传服务器。

使用场景

双语字幕帧率错位

从海外流媒体下载的 23.976fps 英文电影,配的是国内压制组制作的 25fps 中文字幕。播放时字幕每 10 分钟就快出画面 3 秒,手动逐条拖对齐耗时 40 分钟。把原字幕导入工具,输入源帧率 23.976 和目标帧率 25,点击拉伸,所有时间码按比例重算,误差控制在 0.1 帧以内,直接导出 SRT 即可同步。

剪辑工程换平台重对轴

在 Final Cut Pro 里用 30fps 工程剪完一条 15 分钟的口播视频,字幕已逐句拍好。客户要求转成 Premiere Pro 的 29.97fps 工程交付。若重新拍字幕,每条时间码都要手动减 0.1%。把原 SRT 导入工具,输入源 30fps、目标 29.97fps,工具自动算出每帧的偏移量,导出后直接粘贴进新工程,字幕与口型完全吻合。

老电影修复字幕整体漂移

修复一部 1985 年的纪录片,原片 24fps 转制为 25fps 后,字幕整体滞后 2.8 秒。若在字幕软件里逐条加偏移,1000 条字幕需反复试错。在工具中输入原帧率 24、目标帧率 25,并设置全局偏移 +2.8 秒,工具先做帧率换算再叠加偏移,一次性输出时间码准确的字幕文件,无需二次调整。

多语种字幕统一帧率基准

为一部 24fps 的纪录片制作中、英、西三语字幕,三份原始时间轴来源不同:中文是 25fps 转录版,英文是 23.976fps 原盘,西班牙语是 30fps 网络版。人工逐条换算三个帧率到 24fps 需 2 小时且易错。把三份字幕分别导入工具,各自输入源帧率、统一目标 24fps,工具分别计算拉伸系数,三份字幕同时对齐至同一时间基准。

直播回放字幕重制

一场 60 分钟直播,推流编码为 29.97fps,录制后转存为 30fps 的本地文件。直播时自动生成的字幕时间码基于推流帧率,转存后全部偏移约 1.2%。手动调整 800 条字幕时间码几乎不可能。把原字幕导入工具,设源 29.97fps、目标 30fps,工具按 1.001:1 比例拉伸,导出后字幕精确匹配回放画面。

第二节

使用指南

Getting Started

使用步骤

  1. 1在「偏移量」输入框键入需整体平移的毫秒数(正数后移,负数前移),右侧预览区同步显示调整后的时间轴片段
  2. 2选择「拉伸模式」并输入目标时长或比例(如 1.05 倍速),下方进度条实时标注原时长与拉伸后时长的对应位置
  3. 3在「帧率换算」下拉框选原帧率(如 23.976)与目标帧率(如 29.97),右侧时间码自动重算并高亮差异帧
  4. 4点击「应用」按钮,下方结果区生成调整后的完整 SRT 内容,每行时间戳旁标注原始值与新值的对照

输入输出示例

输入输出说明
原字幕:00:01:30,000 → 00:01:35,000 平移量:+5秒 帧率:25fps00:01:35,000 → 00:01:40,000常规:整体平移5秒,验证基本加减逻辑,注意毫秒位不变
原字幕:00:00:00,000 → 00:00:02,000 拉伸比例:2.0倍 帧率:30fps00:00:00,000 → 00:00:04,000常规:拉伸2倍,起点不变,终点翻倍,验证线性缩放
原字幕:00:00:00,000 → 00:00:01,000 目标帧率:60fps(原帧率:30fps)00:00:00,000 → 00:00:00,500常规:帧率从30fps换算为60fps,时长减半,验证帧率换算公式
原字幕:00:59:59,999 → 01:00:00,001 平移量:+1毫秒 帧率:25fps00:59:59,000 → 01:00:00,002边界:跨秒/跨分钟边界,毫秒进位到秒,验证进位处理
原字幕:00:00:00,000 → 00:00:00,040 拉伸比例:0.0倍 帧率:24fps00:00:00,000 → 00:00:00,000边界:拉伸比例为0,终点压缩为起点,验证零值处理
原字幕:00:00:00,000 → 00:00:00,001 平移量:-1毫秒 帧率:30fps00:00:00,000 → 00:00:00,000边界:负平移导致终点为负,工具自动截断为00:00:00,000,验证负值保护
原字幕:00:00:00,000 → 00:00:01,000 目标帧率:23.976fps(原帧率:24fps)00:00:00,000 → 00:00:01,001易错:非整数帧率(23.976 vs 24),时长微调,用户易忽略小数精度
原字幕:00:00:00,000 → 00:00:01,000 拉伸比例:1.5倍 帧率:25fps00:00:00,000 → 00:00:01,500易错:拉伸倍数非整数,输出毫秒位为500,验证小数运算

常见错误对照

1.帧率换算时,把 23.976 当成 24 直接乘除

✗ 错误将 23.976fps 字幕直接乘以 24/23.976 得到 24fps 时间轴
✓ 修复使用精确比率 24000/1001 代替 23.976,或直接用工具内置的 23.976→24 预设

23.976fps 实际是 24000/1001 ≈ 23.976023…,用 23.976 近似值做乘法会累积误差,导致长片尾字幕逐句漂移。

2.拉伸时把起始时间当成 0 来算比例

✗ 错误想将 00:01:00,000–00:02:00,000 拉伸到 00:01:30,000–00:03:00,000,直接用 2× 系数
✓ 修复先计算原始时长 60s → 目标时长 90s,系数 = 90/60 = 1.5,再对每句字幕的 start 和 end 分别做 (t - 原起点) × 1.5 + 新起点

拉伸不是整体乘系数,而是以某参考点为锚点做线性映射。直接乘系数会连起始偏移也放大,导致开头就对不上。

3.整体平移时,把正负号搞反

✗ 错误字幕整体晚 2 秒,却把每条时间减去 2000ms
✓ 修复字幕晚 2 秒 → 每条时间增加 2000ms(即 +2s);字幕早 2 秒 → 每条时间减去 2000ms

平移方向与感知相反:字幕比声音晚,需要把时间戳往后推(增大)才能对齐。常见于刚接触字幕调整的用户。

4.帧率换算后,不检查末尾帧的舍入

✗ 错误23.976→29.97 后,直接认为所有时间点都是精确整数毫秒
✓ 修复换算后检查末尾毫秒是否出现 999ms → 1000ms 进位问题,必要时手动微调或使用工具内置的毫秒舍入选项

非整数帧率换算会产生无限小数,工具通常四舍五入到毫秒,但累积进位可能导致末尾时间溢出到下一帧。

5.混合使用逗号和点作为毫秒分隔符

✗ 错误一条字幕写 00:01:23,456,另一条写 00:01:23.456
✓ 修复统一使用逗号(SRT 标准)或统一使用点(ASS 标准),不要混用

SRT 规范要求毫秒分隔符为逗号,ASS 用点。工具解析时若未做容错,混用会导致部分行被跳过或解析为 0。

6.平移/拉伸时,忘记同步调整字幕序号

✗ 错误调整时间后,字幕序号仍保持 1,2,3,… 但中间某条被删除或插入
✓ 修复调整时间后,重新按时间顺序生成连续序号(1,2,3,…)

字幕播放器依赖序号顺序加载,序号跳跃或重复会导致某些字幕不显示或显示错乱。工具不自动重编号时需手动处理。

7.帧率换算时,把 29.97 当成 30 处理

✗ 错误29.97fps 字幕直接乘以 30/29.97 得到 30fps
✓ 修复使用精确比率 30000/1001 代替 29.97,或使用工具预设

与 23.976 同理,29.97 实际是 30000/1001 ≈ 29.970029…,近似值会导致长片尾累积误差超过半帧。

8.拉伸时,用错了参考锚点(起点 vs 终点)

✗ 错误想将 0–60s 拉伸到 10–80s,却用起点 0 为锚点,结果开头 10s 空白被拉伸
✓ 修复明确锚点为原始起点 0s → 新起点 10s,系数 = (80-10)/(60-0) = 70/60 ≈ 1.1667

拉伸公式 t_new = (t_old - old_start) × ratio + new_start。锚点选错会导致整个时间轴偏移,尤其当原始起点不为 0 时。

第三节

工作原理

How It Works

核心公式

T_new = (T_old - offset) × (FPS_new / FPS_old) + offset

变量说明

  • T_new转换后的新时间轴时间点(秒)
  • T_old原始时间轴时间点(秒)
  • offset起始偏移量,如 0 或首句时间(秒)
  • FPS_new目标帧率(帧/秒)
  • FPS_old原始帧率(帧/秒)

示例

原始字幕时间轴为 23.976 fps,首句起始时间 0.5 秒,某字幕时间点 T_old = 120.0 秒。需转换为 29.97 fps。代入公式:T_new = (120.0 - 0.5) × (29.97 / 23.976) + 0.5 = 119.5 × 1.25 + 0.5 = 149.375 + 0.5 = 149.875 秒。结果约为 149.88 秒,即新时间轴该字幕出现在 2 分 29.88 秒处。

原始字幕(SRT/ASS)解析时间轴(时:分:秒,毫秒)参数运算(平移/拉伸/帧率)校验参数设置(偏移量/缩放比/帧率)逐行应用(时间戳重算)生成新字幕(时间轴已调整)输出
用户输入 本地处理 输出结果
第五节

常见问题

Q & A
字幕时间轴整体平移,到底填正数还是负数?我填了+5结果字幕全跑到画面外了。

正数代表时间轴向后移(字幕出现更晚),负数代表向前移(字幕出现更早)。如果字幕比口型慢了,说明需要整体提前,应该填负数。比如字幕慢 2 秒,填 -2000(毫秒)或 -2(秒)。本工具输入框已标注单位,注意看是毫秒还是秒,不要搞混。

拉伸字幕时间轴的时候,起止时间怎么确定?我随便选了一段结果后面全乱了。

拉伸需要两个关键帧:一段已知准确的时间范围。比如原字幕第 100 行到第 200 行对应视频 00:10:00 到 00:20:00,你就把原起止填 100、200,新起止填 00:10:00、00:20:00。工具会按比例缩放整个时间轴。如果只选一小段拉伸,前后衔接处会断层,建议选视频中段连续对话区域做锚点。

帧率换算后字幕时间对不上,我明明只改了帧率为什么差那么多?

帧率换算不是简单乘除。比如 23.976fps 转 25fps,每个时间戳都会变,因为帧间隔从 41.7ms 变成 40ms。如果原字幕是按帧号写的(比如第 100 帧),换算后时间会偏移;如果是按时间码写的(比如 00:01:23.456),换算后时间码也会变。本工具默认用精确公式计算,结果会保留 3 位小数,建议换算后逐段检查。

字幕文件里的时间格式是 hh:mm:ss,ms,我直接复制粘贴进去报错怎么办?

本工具只接受纯数字时间格式,比如毫秒数(123456)或秒数(123.456)。如果是 SRT 标准格式(00:01:23,456),需要先手动去掉冒号和逗号,或者用本页上方的格式转换功能(如果有)。也可以只复制数字部分,比如把 00:01:23,456 改成 83456(毫秒)再粘贴。

为什么我转换完的字幕文件下载下来,播放器里还是原来的时间?

检查两点:一是浏览器缓存,下载的文件名可能和原文件相同,播放器可能自动加载了旧版本。二是播放器设置,有些播放器(如 VLC)会缓存字幕,需要手动重新加载。建议下载后改名(比如加个 _new),然后拖进播放器。本工具不修改原文件,下载的是新文件。

批量处理几百条字幕时间轴,这个工具会卡吗?是本地处理还是上传服务器?

纯本地处理,所有计算在浏览器内完成,不会上传任何数据。处理几百条字幕基本秒出,因为只是数值运算。但如果字幕文件本身有几十 MB(比如内嵌图片的 ASS 字幕),加载解析会稍慢。建议先复制纯时间轴部分,不要带图片或特效代码。

我用手动改 SRT 文件和用这个工具改,结果一样吗?

理论上一样,但手动改容易出错——比如漏改某一行、把毫秒和秒搞混、或者加减法算错。本工具保证所有行统一变换,不会出现中间某行时间断层。如果你只是改一两行,手动更快;如果超过 10 行或者需要拉伸/帧率换算,建议用工具避免人为失误。

字幕时间轴平移后,视频开头和结尾的字幕会不会被切掉?

会。平移后超出 0 秒或超过视频总时长的字幕行会被自动丢弃。比如整体向前移 3 秒,原本 0-3 秒的字幕就变成负时间,工具会显示警告并移除这些行。建议平移前备份原文件,或者先计算好偏移量,确保关键字幕不丢失。如果需要保留所有字幕,可以用拉伸功能而不是平移。

隐私保证所有计算与处理均在你的浏览器本地完成,输入数据不会上传服务器,也不会保存或共享。

选择 打开 +新窗口 esc关闭