通用字幕格式

打开保存XML多语言

属于 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. 1 · 根元素

    <USFSubtitles>,附带它所遵循的 USF 版本。

  2. 2 · 文件头

    标题、作者和语言;字幕可以使用的命名样式。

  3. 3 · 语言

    每种语言一个 <subtitles> 块,使用 ISO 639-2 代码标识。

  4. 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:视频、语音和配音都放在同一个文件中。

保留在 .usf 中
  • 每条字幕的文本、格式和位置
  • 译文,每种语言一个块
  • 说话人及其颜色,需要时包括头像
  • 配音及其声音,需要时包括音频片段
  • 开始和结束时间,精确到毫秒
无法保存
  • 逐行设置的字体、大小、描边和阴影
  • 图片、图形和卡拉 OK 计时
  • 特效

Subtitld 添加的内容,其他工具会原样保留。

打开 USF 文件

Subtitld 既能读取它自己写出的 USF,也能读取其他工具写出的 USF:

  • XML 中声明的编码;
  • 文本所用命名样式的斜体、粗体、下划线、颜色和位置;
  • 带有 italic、bold 或 underline 属性的 <font>,这是某些工具的写法;
  • 缺少 stop 时使用 duration,以及只有秒数的时间;
  • 一条字幕中的多段文本,作为多行显示;
  • 每种语言的块按时间与第一种语言对应,因此各块的字幕数量不必相同;
  • ISO 639-2 代码和语言名称,以及旧版 Subtitld 写出的代码。

如果文件不是 USF,Subtitld 会说明原因,并且不打开任何内容。

保存 USF

Subtitld 的导出对话框,选中了 USF,并嵌入了说话人头像

USF 保存的是整个项目,因此在 导出 中选择 字幕 和 USF 时,只会询问要包含哪些内容:

  • 嵌入说话人头像每位说话人的头像,以 base64 编码,写入其样式中。
  • 嵌入音频片段每段配音的音频片段,以 base64 编码,写入其字幕中。

文件使用 UTF-8 编码,语言以 ISO 639-2 代码和名称标识,并包含 USF 要求的标题,且不包含 Default 样式。

小知识

2002

USF 首次发布于 2002 年 11 月,是 CoreCodec 项目,旨在替代 Advanced SubStation Alpha 的 XML 版本。

1.1

最后一个版本发布于 2010 年 11 月。其规范中仍把 <s> 列为计划支持的内容。

VLC 0.9

从 0.9 版开始,VLC 能显示 USF 的文本和时间,并像 VSFilter 一样显示一部分格式。

相关格式

有 .usf 需要修正吗?

在 Subtitld 中打开它,连同视频一起,在波形上重新打轴。

下载 Subtitld