通用字幕格式
属于 Matroska 时代的 XML 字幕格式:支持命名样式、一个文件中包含多种语言,并留有扩展空间。采用它的播放器不多,但它能容纳 Subtitld 保存的全部内容,因此 Subtitld 把项目保存为它。
概览
| 扩展名 | .usf |
|---|---|
| 媒体类型 | text/xml |
| 规范 | USF 1.1,CoreCodec 项目(2010 年),由 Titlevision 在线维护 |
| 时间精度 | 毫秒 |
| 文本编码 | 在 XML 中声明。除非另有说明,为 UTF-8。 |
| 样式 | 命名样式,以及文本中的 <i>、<b>、<u> 和 <font> |
| 位置 | 九个位置和边距,可用于样式或文本 |
| 说话人 | 每段文本上的 speaker |
| 语言 | 一个文件可包含多种语言,每种语言一个 <subtitles> 块,使用 ISO 639-2 代码 |
| 所在容器 | Matroska,格式标识为 S_TEXT/USF |
文件结构
这是一个 XML 文档:文件头包含元数据和样式,之后是每种语言各自的字幕块。
<USFSubtitles version="1.0"> <metadata>…</metadata> <styles>…</styles> <subtitles> <language code="por"> Portuguese (Brazil) </language> <subtitle start="00:00:01.000" stop="00:00:02.500"> <text>Olá!</text> </subtitle> </subtitles> </USFSubtitles>
- 1 · 根元素
<USFSubtitles>,附带它所遵循的 USF 版本。 - 2 · 文件头
标题、作者和语言;字幕可以使用的命名样式。
- 3 · 语言
每种语言一个
<subtitles>块,使用 ISO 639-2 代码标识。 - 4 · 字幕
开始时间、结束时间(或时长)以及文本。
时间
只写秒数也可以。 100 即 00:01:40.000,1.5 即一秒半。字幕可以用 duration 代替 stop 指定时长。
文本
USF 的文本是 XHTML 的一个子集:标签使用小写,正确嵌套,<br/> 需要闭合。
| 元素 | 效果 | 在 Subtitld 中 |
|---|---|---|
<i>、<b>、<u> |
斜体、粗体、下划线 | 保留 |
<font color="#00FF0000"> |
颜色,以及字体、大小、描边或阴影 | 保留颜色 |
<br/> |
换行 | 保留 |
<s> |
删除线:列在 USF 的计划清单中,但不在规范里 | 按删除线写出;其他工具可能只显示普通文字 |
<karaoke>、<k t="250"/> |
卡拉 OK 式计时 | 保留文字 |
<image>、<shape> |
图片和图形 | 不保留 |
透明度在前,且从 0 向上计数。 USF 的颜色格式为 #AARRGGBB,其中 00 表示不透明,FF 表示完全透明。#00FF0000 是纯红色;不带透明度的 #FF0000 也是纯红色。
样式与位置
<style name="Narrator">
<fontstyle italic="yes"/>
<position alignment="TopCenter"/>
</style>
文本通过名称使用样式,即 <text style="Narrator">,并获得该样式的字体、颜色、斜体、字重和下划线,以及它的位置:从 TopLeft 到 BottomRight 的九个位置之一。名为 Default 的样式会改变所有字幕,因此 Subtitld 不会写入这种样式,让播放器保持它们自己的外观。
语言
每种语言都有自己的 <subtitles> 块,以 ISO 639-2 代码命名:eng、fre、ger、por。在 Subtitld 所知的范围内,一个代码可能对应多种语言,因此 Subtitld 会在元素中同时写出该语言的名称,并据此把 por 读作巴西葡萄牙语还是欧洲葡萄牙语。
<language code="por">
Portuguese (Brazil)
</language>
Subtitld 中的 USF
Subtitld 的项目就是 USF。.usfx 项目则是附带所需内容的 USF:视频、语音和配音都放在同一个文件中。
- 每条字幕的文本、格式和位置
- 译文,每种语言一个块
- 说话人及其颜色,需要时包括头像
- 配音及其声音,需要时包括音频片段
- 开始和结束时间,精确到毫秒
- 逐行设置的字体、大小、描边和阴影
- 图片、图形和卡拉 OK 计时
- 特效
Subtitld 添加的内容,其他工具会原样保留。
打开 USF 文件
Subtitld 既能读取它自己写出的 USF,也能读取其他工具写出的 USF:
- XML 中声明的编码;
- 文本所用命名样式的斜体、粗体、下划线、颜色和位置;
- 带有
italic、bold或underline属性的<font>,这是某些工具的写法; - 缺少
stop时使用duration,以及只有秒数的时间; - 一条字幕中的多段文本,作为多行显示;
- 每种语言的块按时间与第一种语言对应,因此各块的字幕数量不必相同;
- ISO 639-2 代码和语言名称,以及旧版 Subtitld 写出的代码。
如果文件不是 USF,Subtitld 会说明原因,并且不打开任何内容。
保存 USF
USF 保存的是整个项目,因此在 导出 中选择 字幕 和 USF 时,只会询问要包含哪些内容:
- 嵌入说话人头像每位说话人的头像,以 base64 编码,写入其样式中。
- 嵌入音频片段每段配音的音频片段,以 base64 编码,写入其字幕中。
文件使用 UTF-8 编码,语言以 ISO 639-2 代码和名称标识,并包含 USF 要求的标题,且不包含 Default 样式。
小知识
USF 首次发布于 2002 年 11 月,是 CoreCodec 项目,旨在替代 Advanced SubStation Alpha 的 XML 版本。
最后一个版本发布于 2010 年 11 月。其规范中仍把 <s> 列为计划支持的内容。
从 0.9 版开始,VLC 能显示 USF 的文本和时间,并像 VSFilter 一样显示一部分格式。
相关格式
-
.ttmlTimed Text Markup Language
-
.assAdvanced SubStation Alpha
-
.smiSynchronized Accessible Media Interchange
在 Subtitld 中打开它,连同视频一起,在波形上重新打轴。