track标签需用kind="chapters"声明章节轨道,对应UTF-8无BOM的.vtt文件,首行为WEBVTT,每段含毫秒级时间轴与标题,不可设default属性,且服务器须返回text/vtt MIME类型。

track 标签加章节,不是“加字幕”的变体,而是用 kind="chapters" 明确声明轨道类型为章节导航——它不显示文字,只提供时间点索引,供用户点击跳转。
chapter.vtt 文件必须以 WEBVTT 开头且含合法时间轴
浏览器只认标准 WebVTT 格式:首行必须是 WEBVTT,每段需有唯一序号、精确到毫秒的时间轴(HH:MM:SS.mmm --> HH:MM:SS.mmm),后跟章节标题。空行分隔各段。
- 错误示例:
00:01:00 --> 00:02:30(缺毫秒位)或1:00 --> 2:30(格式非法) - 正确写法:
1 00:01:00.000 --> 00:02:30.500 Introduction - 文件必须保存为 UTF-8 无 BOM 编码,扩展名严格为
.vtt
video 内嵌 track 时不能设 default 属性
章节轨道(kind="chapters")和字幕/描述不同:它不用于“显示”,而是供播放器生成章节菜单或进度条标记。设 default 会导致部分浏览器忽略该轨道,或在 UI 中错误激活。
- ✅ 正确:
- ❌ 错误:
- 多个
chapters轨道仅允许一个生效;重复声明会静默失败,不报错也不提示
浏览器支持差异直接影响章节 UI 是否出现
Chrome 和 Edge 原生支持章节轨道,并在全屏模式下自动显示章节缩略图+标题;Firefox 不渲染任何章节 UI,但可通过 JavaScript 读取 video.textTracks 手动构建;Safari 对 chapters 支持最弱,常完全忽略。
- 验证是否加载成功:
console.log(video.textTracks[0].kind)应输出"chapters" - 时间轴偏移超过 ±200ms,章节跳转可能卡顿或失效
- 服务器需返回正确 MIME 类型:
text/vtt,否则 Chrome 会静默丢弃 .vtt 文件
真正麻烦的不是写对 track 标签,而是确保 .vtt 时间轴与视频关键帧对齐——哪怕差一帧,点击章节就可能跳到黑场或画面撕裂处。校验只能靠逐段手动拖拽比对,没有捷径。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











