字幕格式与时间整理
SRT/VTT 互转、整体时间偏移、按时间重叠比例合并双语字幕;全部在浏览器本地完成,不上传文件。本地处理 · 文件不离开设备
可用操作
SRT / VTT 互转
把 SRT 与 WebVTT 按整数毫秒互转:正确处理 BOM、CRLF、多行 cue、59,999 跨分钟、逗号/句点、cue 编号与空行;跳过 NOTE/样式块并保留原文件下载。
整体时间偏移
给全部 cue 加上一个精确整数毫秒偏移(可正可负)。+1500ms 精确移动,end 始终不小于 start;负起点默认拒绝并提示,可改为裁剪到 0 并显示受影响条数。
按时间重叠合并双语
两份字幕按「重叠时长 / 较短 cue 时长」比例贪心一对一匹配,不按行号 zip;条数不等或时间轴错位时,未匹配的主/副字幕条目单独列出供处理。
真实示例与限制
默认上限:单文件 5 MiB、5000 条 cue。UTF-8(含中文、BOM、CRLF)正常读取与保存;GBK / Big5 / Shift_JIS 等非 UTF-8 输入会先提示选择「源编码」,不会自动猜测并输出乱码。统一 Cue 模型为 {startMs,endMs,text}(整数毫秒)。VTT 的 NOTE / STYLE / REGION 块与行内定位设置会被跳过或丢弃,输出仍是播放器可解析的纯净 SRT/VTT,但可能丢失定位/样式信息;原始文件始终保留可下载。预览使用纯文本渲染,字幕标签仅保留白名单 b/i/u/c/v/ruby/rt/lang,恶意 HTML/script 不会执行。
FAQ
字幕内容会上传到服务器吗?
不会。解析、偏移、合并、序列化全部在浏览器内用本站 ESM 逻辑完成;统计默认关闭且只发送事件名与白名单元数据,不含正文、文件名或 URL。
SRT 和 VTT 的时间格式有什么区别?
SRT 用逗号毫秒(00:00:59,999)并带递增 cue 编号;VTT 用句点毫秒(00:00:59.999)、以 WEBVTT 开头、不需要 cue 编号。本工具用整数毫秒往返,两者可正确互转。
为什么 GBK 字幕打开是乱码?
默认按严格 UTF-8 解码。检测到非法字节或替换字符时会停止并提示「请选择源编码」;选择 GBK / Big5 等后再运行,中文即可正确读入并以 UTF-8 保存。
双语合并会不会把不对应的两行硬拼在一起?
不会。配对按「重叠时长 / 较短 cue 时长」计算比例,默认阈值 0.5,贪心一对一取最佳重叠;未匹配的主/副字幕条目会单独列出,供你手动处理,而不是按行号 zip。
VTT 的样式和定位会保留吗?
不会完整保留。NOTE / STYLE / REGION 块被跳过,行内 align/position/voice 属性被丢弃;输出是干净且可播放的 SRT/VTT。转换前请下载保留的原始文件。