subtitle-workbench — local only — no network

SRT / WEBVTT TIMELINE TOOLS

欧美在线视频字幕文件规格、时间轴偏移与格式互转工作台

ABOUT THIS SITE — 请先读这一段
本站是什么:一个处理影视字幕文件的在线工具站,内容是 SubRip 与 WebVTT 两种字幕格式的规格资料,以及一个能真正解析字幕、做时间轴偏移与帧率换算的工具。站名是本站自己的品牌名。 本站不提供什么:不提供任何影片、视频的播放、下载、资源或获取途径,不提供成人内容,也不提供任何片源索引。 本站与任何同名的网站、应用或平台没有任何关系。你在这里唯一能得到的就是下面这个工具的输出文本。

时间轴工作台

把字幕文本粘进左边,设置偏移量和帧率换算,点执行。解析、换算、输出全部在你的浏览器里完成,文本不会离开这台设备。

input: srt | vtt  →  output: srt | vtt parser: local
INPUT — 粘贴字幕文本
OUTPUT — 处理结果

        

偏移量可以写成秒数(2.5、-1.25),也可以写完整时间码(00:00:02,500、-00:01:00.000)。处理顺序固定是先按帧率比例缩放,再加偏移;如果两样都要用,先确认缩放后的整体节奏对了,再去对第一句话的位置。

SubRip 与 WebVTT 的规格差异

两种格式长得很像,但不是一回事。WebVTT 是在 SubRip 基础上扩展出来的,直接把 .srt 改个扩展名当 .vtt 用,多数情况下播放器会拒绝加载。

身份信息

项目SubRipWebVTT
扩展名.srt.vtt
媒体类型application/x-subriptext/vtt
制定方由 Brain、Zuggy 等开发者维护的字幕工具所用格式万维网联盟(W3C)标准
首次发布SubRip 程序于 2000 年 3 月 3 日发布2010 年 8 月 10 日
最新版本程序 1.57.1(2018 年 11 月 14 日)2019 年 4 月 4 日
用途定位互联网上流通的字幕多数是这个格式配合 HTML5 的 track 元素显示定时文本

WebVTT 相对 SubRip 的主要差异

差异点具体表现
文件头首行以 WEBVTT 开头,可选的 UTF-8 字节序标记之后即是这一行;SubRip 没有文件头。
头部数据首行与第一条字幕之间可以放可选的头部数据。
时间码小数小数部分用点号分隔,SubRip 用逗号。本站工具按这个区别自动判别输入格式。
小时位WebVTT 的小时位可以省略,SubRip 习惯写满。
序号时间码之前的编号在 WebVTT 里是可选的。
注释可以用 NOTE 开头的块写注释,SubRip 没有注释语法。
元数据可以加入 JSON 风格的元数据信息。
章节可以选择性地标注章节信息。
编码扩展字符只支持 UTF-8。
样式C 标签的样式写在配套 HTML 文档所声明的独立 CSS 文件里,而不是像早期 SubRip 那样用 FONT 元素。
定位cue settings 可以定制字幕在画面上的位置。

补一段来历:WebVTT 的早期草案是 WHATWG 在 2010 年围绕「HTML5 该支持哪种字幕格式」的讨论之后写的。当时的两个选项是相对成熟、基于 XML 的 TTML,和一个基于广泛使用的 SubRip、更轻量的新标准。最终选了后者,最初叫 WebSRT,沿用 .srt 扩展名,大体基于 SubRip 但并不完全兼容,后来才改名为 WebVTT。2011 年 1 月 13 日的 HTML5 草案报告引入了 track 元素,并补上了 WebVTT 的提示文本渲染规则。

偏移与帧率换算分别在解决什么

整体偏移:字幕和画面差一个固定量

症状是从头到尾都慢同样的一段,比如每句都晚 2 秒出现。原因通常是片源开头多了或少了一段,比如多了一段发行方片头。这种情况加一个常数就能解决:每条字幕的开始和结束时间同时加上同一个偏移量。

本站工具的偏移量允许为负。减出来的负时间会被钳到 0 并在统计栏里报告钳了几条,因为时间码不能是负数,直接写负值的文件多数播放器会报错。

帧率换算:差值越到后面越大

症状是开头对得上,越往后偏得越多。这不是偏移问题,而是整条时间轴的尺度不对,典型成因是字幕是按另一个帧率的片源做的。换算关系是一个比例:

新时间 = 旧时间 × 源帧率 ÷ 目标帧率

常见的几组帧率里,23.976 与 29.97 都不是整数,它们来自 24000/1001 与 30000/1001。把 25 帧的字幕套到 23.976 帧的片源上,比例约为 1.042709,一小时的素材末尾会差出两分半左右,所以必须缩放而不能靠偏移硬凑。

两者要怎么配合

先缩放,再偏移。顺序反了结果会不同,因为缩放会把已经加上去的偏移量一起放大。实际操作上,先只做帧率换算,看看最后一句话对不对得上;对上了再调偏移把第一句话顶到位置。工具里的处理顺序就是这个顺序,统计栏会把本次用的缩放比例和偏移量一起列出来,方便你核对。

常见踩坑

  1. 改扩展名不等于转格式。.srt 直接改名成 .vtt,文件里既没有 WEBVTT 头,小数点又还是逗号,按规范就不是合法的 WebVTT,浏览器的 track 元素多半不会加载它。要转就得真的改写文件头与时间码分隔符。
  2. 编码不是 UTF-8。WebVTT 的扩展字符只支持 UTF-8。中文字幕如果存成了 GBK,轻则乱码,重则整个文件被判为无效。另存时明确选 UTF-8。
  3. 行尾混用。同一个文件里既有 CRLF 又有 LF,某些解析器会把空行判断错,导致整块字幕被吞掉。本站工具会先把行尾统一成 LF 再解析。
  4. 毫秒位数不足。写成 00:00:01,5 这种只有一位毫秒的时间码,不同解析器的补零方式不一样,有的当 500 毫秒有的当 5 毫秒。本站工具按右侧补零处理,也就是 1,5 视为 1.500 秒,但最稳妥的做法仍然是老老实实写满三位。
  5. 序号乱了。SubRip 的序号本身只是个标识,但有些播放器对不连续的序号很敏感。本站输出 .srt 时会从 1 重新编号,所以你不用手动整理。
  6. 把 cue settings 当成字幕正文。WebVTT 的时间码后面可以跟定位参数,解析时必须和正文分开。本站工具会保留这些参数并在输出 .vtt 时写回去;输出 .srt 时会丢掉,因为 SubRip 没有对应语法。
  7. 先调偏移再换帧率。顺序反了就得推倒重来。遇到越往后越偏的情况,先解决缩放。