SRT 字幕格式
这种格式能表达什么
- 文本样式
- 仅纯文本
- 屏幕定位
- 否
- 卡拉 OK 计时
- 否
- 字幕条内换行
- 是
- 时间轴
- 每条字幕都有开始与结束时间
- 时间精度
- 1 毫秒
- 时间以帧号存储
- 否
- 从右到左的文字
- 是
示例
一份典型的 SRT 文件,以及本站读出了什么
文件
1
00:00:01,000 --> 00:00:03,500
Hello there.
2
00:00:03,500 --> 00:00:06,000
<i>Whispering</i> now.
And a second line.
3
00:00:06,000 --> 00:00:09,250
<b>Bold</b> statement.
从中读出了什么
3 cues, 4 lines of text
00:00:01,000 → 00:00:03,500
Hello there.
00:00:03,500 → 00:00:06,000
Whispering now. [italic ×1]
And a second line.
00:00:06,000 → 00:00:09,250
Bold statement. [bold ×1]
Outside the cues:
nothing — SRT stores cues and nothing else右侧不是一份转换产物:它是本站从左栏读出的内容,也是这份文件后续每次转换的起点。
一份带脏数据的 SRT 文件,以及仍然读出了什么
文件
# exported by some tool
5
00:00:10,000 --> 00:00:12,000
Second in the file, first in time.
2
00:00:02,000 --> 00:00:05,000
First in time, second in the file.
00:00:06,000 --> 00:00:09,500
No index line at all.
# keep this comment
3
00:00:12,000 --> 00:00:14,500 X1:100 X2:200 Y1:300 Y2:400
Positioned cue.
4
00:00:20,000 --> 00:00:19,000
Ends before it starts.
6
00:00:28,000 --> 00:00:33,000
Long one.
7
00:00:31,000 --> 00:00:32,000
Inside the long one.
从中读出了什么
7 cues, 7 lines of text
00:00:02,000 → 00:00:05,000
First in time, second in the file.
00:00:06,000 → 00:00:09,500
No index line at all.
00:00:10,000 → 00:00:12,000
Second in the file, first in time.
00:00:12,000 → 00:00:14,500
Positioned cue.
00:00:20,000 → 00:00:20,001
Ends before it starts.
00:00:28,000 → 00:00:33,000
Long one.
00:00:31,000 → 00:00:32,000
Inside the long one.
Outside the cues:
nothing — SRT stores cues and nothing else
except 1 cue that had a comment line above it — that line stays attached to its cue
Reported while reading — repaired or skipped, never silently:
1 × blocks with no readable timecode (they were skipped)
1 × cues using SRT's non-standard X1/Y1 screen coordinate extensions
1 × cues whose end time was not after their start time (they were given a 1ms duration)真实文件常带 BOM、Windows 换行、时间码前的杂行,或根本读不出的时间码;解析器不抛异常,读不懂的部分会如实报告。
把 SubRip (SRT) 转成其他格式
每一个都完全在你的浏览器里运行。标签标明了那个方向要付出什么代价,打开之前就能看到。
这个方向不会丢失内容 —— 源格式的每一项特性在目标格式里都有地方可去。
这个方向不会丢失内容 —— 源格式的每一项特性在目标格式里都有地方可去。
这个方向不会丢失内容 —— 源格式的每一项特性在目标格式里都有地方可去。
这个方向不会丢失内容 —— 源格式的每一项特性在目标格式里都有地方可去。
这个方向不会丢失内容 —— 源格式的每一项特性在目标格式里都有地方可去。
这个方向不会丢失内容 —— 源格式的每一项特性在目标格式里都有地方可去。
转换为此格式
- WebVTT (VTT) → SubRip (SRT)
- Advanced SubStation Alpha (ASS) → SubRip (SRT)
- SubStation Alpha (SSA) → SubRip (SRT)
- YouTube SBV → SubRip (SRT)
- SAMI (SMI) → SubRip (SRT)
- LRC Lyrics → SubRip (SRT)
- MicroDVD → SubRip (SRT)
- TTML (Timed Text) → SubRip (SRT)
- SubtitleMatrix JSON → SubRip (SRT)
- Plain Text (TXT) → SubRip (SRT)
- CSV Spreadsheet → SubRip (SRT)
SRT(SubRip)是这个站处理的字幕格式之一,这一页是它的说明:能存什么、不能存什么,以及能把它转成哪些格式。
一条 SRT 字幕由三部分组成:一个编号、一行时间码(00:00:04,126 --> 00:00:08,500)、一到两行正文,字幕之间用空行分隔。时间是毫秒精度,两端都写出来;本站读入时会按起始时间排序,把乱序的条目摆回顺序,并把读不出来的时间码记进有损说明,而不是抛错。
SRT 不声明样式:文件里没有字体、字号、颜色或屏幕位置。现实中的 SRT 常在正文里带 <b>、<i> 标签,多数播放器会照做,但那是约定而不是格式能力,所以把别的格式转成 SRT 时,样式与定位必然丢失。
上方的能力表就是全部清单:某一行写“不支持”,就是转进这个格式时会丢的那一项。所有处理都在浏览器里完成,文件不上传、不需要账号——对受保密协议、病历或播出限制约束的素材,这一点是硬要求。
常见问题
SRT 文件里一条字幕由哪几部分组成?
编号、一行时间码(00:00:04,126 --> 00:00:08,500)和一到两行正文,字幕之间空一行。没有头部,也没有样式段。
SRT 格式能存字体、颜色和屏幕位置吗?
不能。文件不声明字体、字号、颜色或位置;现实中的 <b>、<i> 是播放器的约定,不是格式能力。
SRT 的时间码为什么必须用逗号?
00:00:01,250 是 SRT 的写法,WebVTT 才用点。手工编辑时把逗号写成点,是最常见的“文件打不开”原因。
SRT 文件的时间精度能到多少?
毫秒。00:00:04,126 就是 4.126 秒;这是格式的最细刻度,显示时长再短也按这个精度记录。
SRT 字幕条目乱序时这里会怎么读?
按起始时间重排。这是对文件结构的规范化,不丢文字;原始的行序不再是产物的一部分。
正文为空的 SRT 条目会被当成字幕吗?
会保留为一条空字幕并如实报告,而不是悄悄吞掉;读不懂的时间码也一样,会记进有损说明。
哪些格式能完整接收 SRT 的全部能力?
VTT、SBV、SMI、TTML、JSON 与 CSV。能力表里两侧都为“是”的行,就是转换后仍成立的那一项。