什么是 srv3?YouTube 彩色卡拉 OK 字幕的格式
更新于 2026年10月2日
srv3 是 YouTube 自己的字幕格式,也叫 YouTube Timed Text,扩展名通常是 .srv3 或 .ytt。和最常见的 SRT 不同,srv3 能记录文字颜色、描边、在画面上的位置以及每个字的时间,所以 YouTube 上那些跟着歌声变色的卡拉 OK 字幕,几乎都是用 srv3 做的。
srv3 这个名字的由来
YouTube 的字幕系统内部把这种格式叫作“srv3”(第 3 版),文件的根元素里就写着 format="3"。用 yt-dlp 下载字幕时选择 srv3 格式,得到的就是这种文件。制作彩色字幕的社区工具(例如 YTSubConverter)则习惯叫它 YouTube Timed Text,保存为 .ytt。两者内容相同,只是扩展名不同。
YouTube 官方的“支持的字幕文件格式”说明里没有列出 srv3,但实际上可以在 YouTube Studio 上传,社区用这种方式制作彩色字幕已经很多年了。
文件长什么样
srv3 是 XML 文本文件。<head> 里定义样式,<body> 里是一句一句的字幕:
<?xml version="1.0" encoding="utf-8" ?>
<timedtext format="3">
<head>
<pen id="0"/>
<pen id="1" fc="#FFFFFF" ec="#000000" et="3"/>
<pen id="2" fc="#5B8CFF" ec="#000000" et="3"/>
<pen id="3" fo="0" bo="0"/>
<ws id="0"/>
<wp id="0"/>
<wp id="1" ap="7" ah="50" av="95"/>
</head>
<body>
<p t="1000" d="2000" wp="1"><s p="3">​</s>​<s p="1">Sing along</s></p>
</body>
</timedtext>
<pen>:文字样式。fc是文字颜色,fo是文字不透明度,ec是描边颜色,et是描边类型,sz是字体大小(百分比),fs是字体,b、i、u是粗体、斜体、下划线。<wp>:画面位置。ap是锚点(0~8,对应九宫格),ah、av是水平、垂直位置的百分比。<ws>:窗口样式,例如文字对齐方式。<p>:一句字幕。t是开始时间,d是持续时间,单位都是毫秒。<s>:字幕里的一段文字,p指定使用哪个 pen。
示例里有两处是为了适配 YouTube 而加的,不影响画面:
- id 为 0 的空定义:iOS App 会忽略第一个 pen 的背景设置,所以每种定义的第一个都放一个不使用的空项。
- 字幕开头的
​:​是看不见的零宽空格。开头先放一段使用透明 pen 3 的零宽空格,再放一个不属于任何<s>的零宽空格,YouTube 才会保留歌词那一段的样式(原因见下文“在 YouTube 上的限制”一节)。
字体
srv3 不能写字体名称,fs 只能从 YouTube 提供的 7 种字体中选一种:
fs |
字体 | 类型 |
|---|---|---|
| 不写或 0 | Roboto | 默认 |
| 1 | Courier New | 等宽衬线 |
| 2 | Times New Roman | 衬线 |
| 3 | Lucida Console | 等宽无衬线 |
| 4 | Roboto | 无衬线 |
| 5 | Comic Sans MS | 休闲 |
| 6 | Monotype Corsiva | 手写 |
| 7 | Carrois Gothic SC | 小型大写 |
这些都是西文字体,不包含中文、日文、韩文字符。中日韩文字会改用设备上的其他字体显示,所以换了字体以后,中日韩文字可能看不出变化,只有英文和数字会变。
和 SRT、WebVTT、ASS 的区别
| 功能 | SRT | WebVTT | ASS | srv3 |
|---|---|---|---|---|
| 文字颜色 | 部分播放器支持 <font color> |
支持 | 支持 | 支持 |
| 描边、阴影 | 不支持 | 有限 | 支持 | 支持 |
| 画面上的位置 | 不支持 | 支持 | 支持 | 支持 |
| 逐字时间(卡拉 OK) | 不支持 | 支持(行内时间标记) | 支持(\k) |
支持 |
| 能否上传到 YouTube | 可以 | 可以 | 不行 | 可以 |
ASS 是功能最多的字幕格式,动漫字幕组很常用,但 YouTube 不接受 ASS。想在 YouTube 上保留颜色、位置和卡拉 OK 效果,就要转换成 srv3。
卡拉 OK 效果是怎么实现的
srv3 没有“这个字在第几秒变色”的标签。卡拉 OK 效果是用一连串重复的字幕实现的:同一句歌词拆成很多条字幕,每一条都比上一条多一个字显示为“已唱”的颜色。
为了方便阅读,下面省略了开头的零宽空格:
<p t="1000" d="400"><s p="2">Sing</s><s p="1"> along</s></p>
<p t="1400" d="1600"><s p="2">Sing along</s></p>
上面两条字幕前后相接:1 秒时 Sing 先变色,1.4 秒时整句都变色。逐字时间越细,拆出来的字幕就越多,一首歌往往有好几千条,很难手写,需要用工具生成。
srv3 还有另一种写法:给 <s> 加上 t 属性,让每个字到指定时间才出现。YouTube 的自动字幕就是用这种方式一个字一个字显示出来的。
同一个时间点也可以有两条以上的字幕,叠在不同位置或使用不同的描边,做出阴影或双层描边的效果。
在 YouTube 上的限制
以下内容整理自 YTSubConverter 的说明,制作前先了解一下,可以少踩坑:
- YouTube Studio 的预览看不到样式。 上传后,Studio 字幕编辑器里显示的是纯文字,这是正常现象。只要不在 Studio 里修改,正式的播放器就会显示样式。如果在 Studio 里改过字幕,样式可能会丢失。
- 手机 App 的显示效果比较简单。 手机 App 不支持自定义背景(一律是黑色背景),注音和振假名会变成括号里的普通文字。
- 偏离中央的字幕在影院模式下会往两侧移。 放在画面左右两侧的字幕,在电脑版的影院模式下会更靠边,甚至超出视频范围。
- 每句第一段的样式可能被去掉。 上传时,YouTube 会删除每条字幕第一段文字的样式设置,除非这条字幕还有不属于任何一段的文字。常见的做法是在开头放看不见的零宽空格,Kara3 导出时会自动处理。
- 只有 7 种字体可选。 只能使用上面表格里的字体,不能指定其他字体。
- 字体大小只有四分之一的效果。
sz设为 200%,实际只会放大到 125%,最小也只能缩小到 75%。
用 Kara3 编辑 srv3
Kara3 是免费、免安装的 srv3 编辑器。它会把重复字幕合并回一句歌词,让你直接修改文字、时间、颜色和位置,导出时再自动生成重复字幕;无法识别的内容会原样保留,不会被破坏。
想从头制作一份卡拉 OK 字幕,可以看《卡拉 OK 字幕制作教程》;手上已经有 SRT 或 ASS 文件,可以看《把 SRT、ASS 转换为 srv3》。