什么是 JSON3 字幕文件?YouTube 字幕格式详解
什么是 JSON3 字幕文件?YouTube 内部字幕格式详解。了解 JSON3 的工作原理、文件结构,以及如何将 JSON3 转换为 SRT、VTT 或 LRC 格式。
JSON3 是 YouTube 用于存储和传输字幕的内部字幕格式。它是一种基于 JSON 的格式,每个字幕事件都有精确的毫秒级时间戳、词级偏移和文本段。虽然不如 SRT 或 VTT 那么知名,但对于需要提取 YouTube 字幕并转换为标准字幕格式的人来说,JSON3 是必不可少的。
JSON3 的含义
JSON3 是 YouTube 字幕系统使用的基于 JSON 的 timedtext 格式。"3" 表示 YouTube timed text API 响应格式的第三个版本。与 SRT 等纯文本格式不同,JSON3 将字幕数据存储为结构化的 JSON 对象,支持词级时间、样式元数据和自动字幕对齐。
JSON3 文件的工作原理
JSON3 文件包含一个 "events" 数组,每个事件代表一条字幕。每个事件有以毫秒为单位的开始时间(tStartMs)、可选的持续时间(dDurationMs)和一个或多个文本段(segs)。每个文本段可以包含 tOffsetMs 字段,实现词级时间精度,使 JSON3 成为时间精度最高的字幕格式之一。
何时使用 JSON3
JSON3 主要在下载或提取 YouTube 视频字幕时遇到。如果你需要将 YouTube 自动生成或手动创建的字幕用于视频编辑软件、其他平台或存档,你需要将 JSON3 转换为更广泛支持的格式,如 SRT、VTT 或 LRC。AllSubConverter 可以自动完成这个转换。
JSON3 文件结构
{
"events": [
{
"tStartMs": 0,
"dDurationMs": 3120,
"segs": [
{ "utf8": "Hi " },
{ "utf8": "everyone." }
]
},
{
"tStartMs": 3120,
"dDurationMs": 0,
"segs": [{ "utf8": "\n" }]
},
{
"tStartMs": 3120,
"dDurationMs": 4840,
"segs": [
{ "utf8": "In " },
{ "utf8": "this " },
{ "tOffsetMs": 640, "utf8": "video," }
]
}
]
}
JSON3 的优势
- ✓通过 tOffsetMs 实现词级时间精度
- ✓结构化 JSON 格式使程序化解析更加简单
- ✓保留 YouTube 自动字幕的所有时间数据
- ✓支持包括中日韩字符、emoji 和所有语言的 Unicode 文本
JSON3 的局限性
- ⚠标准视频播放器或编辑软件不支持
- ⚠YouTube 专有格式,非行业标准
- ⚠需要转换为 SRT、VTT 等格式才能实际使用
- ⚠由于 JSON 开销,文件大小比纯文本格式更大
JSON3 常见问题
如何从 YouTube 获取 JSON3 字幕?
可以使用 yt-dlp 或浏览器扩展工具以 JSON3 格式下载 YouTube 字幕。当指定 fmt=json3 参数时,YouTube 的 timedtext API 会返回 JSON3 数据。下载后,你可以使用 AllSubConverter 将 JSON3 文件转换为 SRT、VTT、LRC 等格式。
可以将 JSON3 转换为 SRT 吗?
可以。AllSubConverter 可以将 JSON3 文件直接转换为 SRT、VTT、LRC、ASS、TXT、TTML、SCC、STL 和 SMI 格式。只需上传 JSON3 文件并选择输出格式,转换器会保留所有时间信息和文本内容。
JSON3 和 SRT 有什么区别?
JSON3 是 YouTube 的结构化 JSON 格式,具有毫秒级时间戳和词级时间。SRT 是更简单的纯文本格式,具有秒级时间戳且不支持样式。JSON3 更精确但仅被 YouTube 使用,而 SRT 在所有平台和播放器上都被普遍支持。
JSON3 支持多种语言吗?
支持。JSON3 使用 UTF-8 编码,完全支持所有语言,包括中日韩文、带重音的拉丁字符、阿拉伯语和 emoji。YouTube 为视频的每个语言轨道提供单独的 JSON3 文件。
将 JSON3 转换为其他格式
AllSubConverter 支持将 JSON3 转换为所有主流字幕格式。选择下面的转换工具开始使用: