EBU 字幕数据交换格式
自 1991 年起,欧洲广播机构一直用它交换字幕:这是由固定大小的数据块组成的二进制文件,最初为软盘设计。文件开头是关于节目的文件头,之后每条字幕对应一个数据块,文本使用 teletext 的字符集。
概览
| 扩展名 | .stl |
|---|---|
| 媒体类型 | 未注册 |
| 规范 | EBU Tech 3264(1991 年)。其 XML 后继为 EBU-TT(Tech 3350)。 |
| 时间精度 | 一帧,帧率为每秒 25 或 30(29.97)帧 |
| 文本编码 | 拉丁语系使用 ISO 6937,重音符号位于字母之前;西里尔文、阿拉伯文、希腊文和希伯来文使用 ISO 8859 |
| 样式 | Teletext 的颜色和倍高;开放字幕使用斜体和下划线 |
| 位置 | 行(teletext 共 23 行),以及左对齐、居中或右对齐 |
| 说话人 | 无 |
| 所在容器 | 无。随节目一同交付的文件。 |
文件结构
这不是文本,而是字节:先是 1,024 字节的文件头,之后每条字幕对应一个 128 字节的数据块。
GSI · 1,024 bytes STL25.01 · teletext Latin · English Tears of Steel … TTI · 128 bytes 10:00:01:00 10:00:02:12 row 20 · centred You're a jerk,␊␊Celia. TTI · 128 bytes …
- 1 · GSI
通用字幕信息:帧率、teletext 还是开放字幕、字符表、语言、标题、节目的开始时间,以及后面有多少个数据块。
- 2 · 时间
文本和时间信息,每条字幕一个数据块:入点和出点的时间码。
- 3 · 文本
字幕开始所在的行、对齐方式,以及 112 字节的文本,其中包含为其设置样式的控制码。
文件头
| 字段 | 内容 |
|---|---|
| DFC | 帧率:STL25.01,或 29.97 视频使用的 STL30.01 |
| DSC | teletext 为 1 或 2,开放字幕为 0(烧录到画面中,或由播放器渲染) |
| CCT | 字符表:00 拉丁语,01 西里尔文,02 阿拉伯文,03 希腊文,04 希伯来文 |
| LC | 语言,使用 EBU 自己的代码:09 英语,0F 法语,21 葡萄牙语 |
| TCP | 节目开始的时间码 |
| OPT | 节目标题 |
时间码
节目通常从十点开始。 广播机构从 10:00:00:00 开始为节目的帧编号,文件头中会写明这一点。Subtitld 会从这个起点计算字幕的时间,使它们与从 0:00 开始的视频对齐。
文本字段
字符和控制码共用这 112 字节。
| 字节 | 作用 |
|---|---|
0x00–0x07 |
Teletext 颜色:黑、红、绿、黄、蓝、品红、青、白 |
0x0D |
倍高 |
0x0B |
开始加框:teletext 字幕只显示加框的内容 |
0x8A |
CR/LF,即换行 |
0x80、0x81 |
开启和关闭斜体,用于开放字幕 |
0x82、0x83 |
开启和关闭下划线,用于开放字幕 |
0xC1–0xCF |
重音符号,位于它所附着的字母之前 |
0x8F |
未使用的空间,位于文本之后 |
每个代码占一个字符位。 在 teletext 中,控制码显示为空格,因此两个词之间的颜色变化就表现为它们之间的那个空格。Subtitld 会用代码代替空格来写入。
Teletext 还是开放字幕?
| Teletext | 开放字幕 | |
|---|---|---|
文件头 DSC |
1 或 2 |
0 |
| 显示方式 | 观众的电视以 teletext 显示 | 烧录到画面中,或由播放器绘制 |
| 行数 | 23 行,每行 40 个字符位 | 文件头中指定的行数 |
| 斜体、下划线 | — | 有 |
| 倍高 | 有 | — |
| 加框 | 0x0B,框住显示的内容 |
0x84 和 0x85,文字后方加一个框 |
Subtitld 中的 STL
- 每条字幕的文本和换行
- 颜色;开放字幕中的斜体和下划线
- 位置:顶部、中部或底部;左、中或右
- 语言
- 开始和结束时间,精确到帧
- Teletext 中的斜体
- 语言的地区(EBU 的代码只标明语言)
- 说话人,以及与原文并列的译文
- 配音、说话人的脸和颜色
如需保留这些内容,请保存为 .usfx 项目。
打开 STL 文件
Subtitld 会读取:
- 文件头中指定的帧率,即 STL25.01 或 STL30.01,以及较新文件中的 23.976、24 和 50;
- 当文件头表明启用了时间起点时,从节目起点计算的时间;
- ISO 6937 编码的拉丁文本,或文件头所指定的西里尔文、阿拉伯文、希腊文或希伯来文字符表;
- 较长字幕的扩展块,合并为一条字幕;注释和用户数据则忽略;
- 颜色、斜体和下划线,以及行和对齐方式,作为字幕的位置;
- 文件头中的语言,作为项目的语言。
文件的帧率、显示方式和节目起点都会被保留,以便再次保存时保持原样。如果文件不是 EBU STL(例如三维模型的 .stl),Subtitld 会说明原因。
导出 STL
在 导出 中选择 字幕 和 STL,会提供以下选项:
- 文本原文、译文,或两者都要,译文位于原文之下。
- 说话人名字不写,或写在文本前(Thom: ……)。
- 格式保留,或去除。
- 时间偏移所有字幕整体提前或推迟相同的时长。
- 帧率25,或 29.97 视频使用的 30:默认为视频的帧率,也可以自行选择。
- 显示方式Teletext,每行倍高并加框;或开放字幕,带斜体和下划线。
- 节目起始于00:00:00:00,或广播机构常用的 10:00:00:00。
字符表由文本需要决定:除非是西里尔文、希腊文、阿拉伯文或希伯来文,否则使用拉丁文。标题为视频的名称。teletext 的一行在去掉控制码后约可容纳 36 个字符;Subtitld 不会为更长的行自动换行。
小知识
EBU 于 1991 年发布了 Tech 3264,用于通过软盘交换字幕。文件头中仍保留着文件跨越多少张软盘、当前是哪一张的字段。
每个数据块中的文本字节数。较长的字幕会延续到扩展块中,按编号排列,最后一块的标记为 255。
STL 的 XML 后继 Tech 3350 于 2012 年发布,Tech 3360 则说明如何把 STL 映射到它上面。其分发配置文件 EBU-TT-D 属于一种 TTML。
相关格式
在 Subtitld 中打开它,连同视频一起,在波形上重新打轴。