双语字幕错位修复
译者从网上下载了一部纪录片的中英双语 SRT 字幕,但中文轨道比英文轨道整体慢了 1.5 秒。用播放器逐条调整 800 条时间轴太慢。将 SRT 文件导入本工具,在「时间偏移」栏输入 -1500 毫秒,导出修复后的文件,两条轨道同步,无需逐句修改。
转换结果将在这里呈现 —— 点「示例」试试剪辑时发现字幕文件后缀不对,SRT 打不开、ASS 样式全乱、LRC 时间轴错位——格式不兼容比错别字更让人头疼。这个工具把常见字幕格式(SRT、VTT、ASS、LRC)互相转成目标格式,保留时间轴和基本样式。字幕内容只在本地浏览器里处理,不上传任何文件。
译者从网上下载了一部纪录片的中英双语 SRT 字幕,但中文轨道比英文轨道整体慢了 1.5 秒。用播放器逐条调整 800 条时间轴太慢。将 SRT 文件导入本工具,在「时间偏移」栏输入 -1500 毫秒,导出修复后的文件,两条轨道同步,无需逐句修改。
字幕组把内嵌字幕的 MKV 封装成 ASS 格式,但用户想上传到阿里云盘在线播放。云盘播放器不认 ASS,只支持 VTT。将 ASS 文件拖入本工具,选择输出 VTT,下载后上传到同目录并命名为同名 .vtt 文件,在线播放时自动挂载字幕,无需重新压制视频。
音乐制作人拿到一首歌曲的 LRC 逐行动态歌词,想导入到剪映里做 MV 字幕。剪映只支持 SRT 格式。将 LRC 文件上传本工具,勾选「保留原始时间戳」后导出 SRT,导入剪映后歌词与伴奏对齐,省去手动打 60 个时间点的重复劳动。
视频剪辑师用 Aegisub 制作了 ASS 字幕,包含大量特效标签(\fn微软雅黑\fs28\bord2)。交付前发现甲方要求纯文本 SRT 格式。将 ASS 文件放入本工具,选择「剥离样式」模式导出 SRT,所有特效标签被自动清除,仅保留纯文本和时间轴,避免甲方播放器报错。
电影节展映需要一条中英双语硬字幕的 DCP 包。技术员手上有两个独立的 SRT 文件(中文和英文),需要合并成一条左右分栏的 ASS 字幕。将两个 SRT 分别上传本工具,先分别转为 ASS,再用文本编辑器将两条轨道合并为同一 ASS 文件中的不同样式层,输出后导入达芬奇,一次渲染完成。
| 输入 | 输出 | 说明 |
|---|---|---|
| SRT 格式字幕: 1 00:00:01,000 --> 00:00:04,000 Hello world. 2 00:00:05,000 --> 00:00:08,000 This is a test. | VTT 格式字幕: WEBVTT 00:00:01.000 --> 00:00:04.000 Hello world. 00:00:05.000 --> 00:00:08.000 This is a test. | 常规:SRT 转 VTT,时间码分隔符从逗号改为点,并添加 WEBVTT 头部,验证基础转换逻辑 |
| ASS 格式字幕: [Events] Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text Dialogue: 0,0:00:01.00,0:00:04.00,Default,,0,0,0,,Hello world. | LRC 格式字幕: [00:01.00]Hello world. [00:04.00] | 常规:ASS 转 LRC,只提取时间码和文本,丢弃样式和特效信息,验证格式精简能力 |
| 空字幕文件(仅含空行) | (输出空文件,无任何内容) | 边界:输入为空文件时,工具应返回空文件而非报错或生成无效头部 |
| SRT 格式字幕,时间码包含毫秒且末尾无空行: 1 00:00:01,500 --> 00:00:02,000 Line one. 2 00:00:03,000 --> 00:00:04,500 Line two. | VTT 格式字幕: WEBVTT 00:00:01.500 --> 00:00:02.000 Line one. 00:00:03.000 --> 00:00:04.500 Line two. | 边界:输入末尾无空行,工具应自动补全格式分隔,不丢失最后一条字幕 |
| LRC 格式字幕,时间码重叠且包含空行: [00:01.00]First line [00:01.00]Second line [00:02.00]Third line | SRT 格式字幕: 1 00:00:01,000 --> 00:00:01,000 First line 2 00:00:01,000 --> 00:00:02,000 Second line 3 00:00:02,000 --> 00:00:02,000 Third line | 易错:LRC 时间码重叠时,工具应自动分配连续序号,并合理推断结束时间(相同时间码视为同时开始,下一个时间码为结束) |
| SRT 格式字幕,包含 HTML 标签: 1 00:00:01,000 --> 00:00:04,000 <b>Bold</b> and <i>italic</i> text. | VTT 格式字幕: WEBVTT 00:00:01.000 --> 00:00:04.000 <b>Bold</b> and <i>italic</i> text. | 易错:SRT 和 VTT 都支持部分 HTML 标签,工具应保留标签不转义,避免破坏样式 |
| ASS 格式字幕,包含 \N 换行符: [Events] Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text Dialogue: 0,0:00:01.00,0:00:04.00,Default,,0,0,0,,Line one\NLine two | SRT 格式字幕: 1 00:00:01,000 --> 00:00:04,000 Line one Line two | 易错:ASS 的 \N 换行符在转 SRT 时应转换为真实换行,而非保留 \N 字面量 |
1.SRT 时间轴格式缺逗号或冒号
00:01:23,456 --> 00:01:25,78900:01:23,456 --> 00:01:25,789SRT 标准要求时间轴使用逗号分隔毫秒,部分播放器也接受点号,但本工具严格遵循 RFC 标准,逗号缺失会导致解析失败。
2.ASS 事件行缺少 Format 定义
Dialogue: 0,0:00:01.00,0:00:02.00,Default,,0,0,0,,HelloFormat: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0,0:00:01.00,0:00:02.00,Default,,0,0,0,,HelloASS 头部必须先用 Format 声明字段顺序,否则工具无法正确解析后续 Dialogue 行的各列数据。
3.LRC 时间标签顺序颠倒
[02:00.00]第二句歌词
[01:00.00]第一句歌词[01:00.00]第一句歌词
[02:00.00]第二句歌词LRC 规范要求时间标签必须严格递增,乱序会导致工具在合并或转换时时间轴错乱,部分播放器也会忽略后续内容。
4.VTT 文件缺少 WEBVTT 头部声明
00:00:01.000 --> 00:00:04.000
Hello worldWEBVTT
00:00:01.000 --> 00:00:04.000
Hello worldWebVTT 标准强制要求文件首行必须是 WEBVTT(可含可选 BOM),缺少该声明工具会判定格式无效。
5.ASS 样式名包含中文引号或特殊符号
Style: Default“标题”,Arial,20,&H00FFFFFF,...Style: Default,Arial,20,&H00FFFFFF,...ASS 样式名中不能包含双引号、逗号、花括号等特殊字符,否则工具在解析样式行时会截断或报错。
6.SRT 字幕序号后缺少空行分隔
1
00:00:01,000 --> 00:00:04,000
Hello
2
00:00:05,000 --> 00:00:08,000
World1
00:00:01,000 --> 00:00:04,000
Hello
2
00:00:05,000 --> 00:00:08,000
WorldSRT 标准要求每个字幕块之间必须有至少一个空行,连续书写会导致工具将多个块合并为一个。
7.LRC 时间标签使用冒号而非点号分隔毫秒
[01:23:45][01:23.45]LRC 规范使用点号(.)作为分钟与秒、秒与毫秒的分隔符,冒号仅用于分隔分钟和秒。使用冒号会导致工具误判时间格式。
8.ASS 特效代码未闭合花括号
{\b1}Hello {\b0{\b1}Hello {\b0}ASS 使用花括号包裹特效代码,左花括号必须对应右花括号,否则工具会认为后续所有文本都处于特效状态。
时间码格式转换:HH:MM:SS,mmm ↔ HH:MM:SS.mmm ↔ HH:MM:SS:ff (ff = 帧号)
HH小时,0–23MM分钟,0–59SS秒,0–59mmm毫秒,0–999ff帧号,基于帧率计算SRT 时间码 00:01:30,500 转 VTT:将逗号替换为小数点 → 00:01:30.500。若转 ASS(帧率 25 fps):500 ms ÷ (1000/25) = 12.5 帧,向下取整得 ff=12,ASS 时间码为 0:01:30.12。
本工具每次只处理一个文件,不支持批量上传。如果需要批量转换,建议先在本页面逐个转完再手动合并,或者使用支持批量处理的桌面软件如 Subtitle Edit。当前页面没有文件大小硬上限,但超大文件(超过 50MB)可能因浏览器内存限制导致卡顿,建议分段处理。
ASS 字幕包含字体、位置等样式信息,但本工具只转换时间轴和文本内容,不保留原始 ass 文件的样式定义。转换后的 ass 文件仅包含基础样式(默认字体、居中),播放器会用自己的默认设置渲染。如需保留样式,请直接使用原始 ass 文件;本工具适合只改格式、不关心样式的场景。
LRC 格式只支持分钟和秒(mm:ss.xx),精度为百分之一秒;SRT 支持到毫秒(hh:mm:ss,xxx)。转换时工具会将 LRC 的百分秒补零为毫秒,但若原 LRC 本身时间轴不准(比如歌词提前或滞后),转成 SRT 后问题依然存在。建议先用播放器微调 LRC 时间轴后再转换。
VTT(WebVTT)和 SRT 都是纯文本字幕格式,时间轴结构几乎一样。VTT 额外支持 CSS 样式和定位,常用于 HTML5 视频播放器;SRT 是通用性最广的格式,几乎所有播放器和剪辑软件都支持。如果你的视频要在网页上嵌入,选 VTT;要用于本地播放或剪辑软件,选 SRT 更稳妥。
本工具完全在浏览器本地运行,不依赖服务器。卡顿通常是因为文件太大或浏览器内存不足。先尝试关闭其他标签页释放内存;如果文件超过 10MB,建议用文本编辑器拆分成多个小文件分别转换。另外,请确认浏览器版本较新(Chrome 90+/Firefox 90+),部分旧版浏览器对 WASM 支持不完整。
乱码通常是因为原文件的编码不是 UTF-8。SRT/VTT/ASS 文件常用 UTF-8 或 GBK 编码,但本工具默认按 UTF-8 读取。如果原文件是 GBK 编码(常见于 Windows 系统生成的 srt),转换前先用记事本或 VS Code 打开,另存为 UTF-8 编码格式,再上传转换。后续版本会考虑加入编码自动检测。
ASS 支持多条字幕同时显示(比如对话+注释),但 LRC 每行只能有一个时间戳。转换时工具会按时间顺序合并,只保留第一条字幕文本,其余会被丢弃。建议先手动从 ASS 中提取出需要的对话行,再转换。如果 ASS 里全是对话且没有重叠,转换结果就是正常的。
隐私保证所有计算与处理均在你的浏览器本地完成,输入数据不会上传服务器,也不会保存或共享。