必须将放在内部且紧随所有之后、之前;浏览器仅识别该位置和顺序的字幕,错位则静默失效,且仅支持WebVTT(.vtt)格式。

怎么用 标签引入字幕
必须把 放在 标签内部,且在所有 之后、结束标签之前;浏览器不会识别放在外面或顺序错乱的 。
常见错误现象:
- 字幕按钮不出现(
被写在外面) - 字幕加载失败但无报错(
src路径 404 或跨域) - 字幕显示为乱码(.vtt 文件不是 UTF-8 编码)
正确结构示例:
<video controls width="640"><source src="myvideo.mp4" type="video/mp4"><track src="zh.vtt" kind="subtitles" srclang="zh" label="中文" default></track></source></video>
外部字幕文件必须是 WebVTT 格式吗
是的。HTML5 原生只支持 kind="subtitles" 的 WebVTT(.vtt)文件,SRT 等格式无法直接通过 加载。
关键点:
-
.vtt文件第一行必须是WEBVTT(大小写敏感,不能有空格或 BOM) - 时间戳格式严格为
HH:MM:SS.mmm --> HH:MM:SS.mmm,毫秒位必须三位 - 中文内容需保存为 UTF-8 无 BOM 编码,否则 Chrome/Firefox 可能显示方块
- 路径是相对 HTML 文件的,不是相对于 JS 或 CSS;建议用开发者工具 Network 面板确认
zh.vtt是否返回 200
kind 和 srclang 参数填错会怎样
kind 写错(比如写成 "subtitle" 少个 s),浏览器就当它不存在;srclang 不规范(如写 "zh-CN" 却没配系统语言),会导致字幕菜单里不显示或默认不启用。
推荐值:
-
kind:固定用"subtitles"(带字幕文本)、"captions"(含音效描述,适合听障)、"descriptions"(语音描述) -
srclang:用短语言码,如"zh"、"en"、"ja";避免"zh-ch"这类非标准写法(IE 已淘汰,现代浏览器也不认) -
label必须有,否则播放器字幕菜单可能显示为空白项
多个字幕怎么切换,为什么点击没反应
浏览器原生控件靠 的 default 属性决定初始启用项,但切换依赖用户手动点击「CC」按钮——这个按钮只在至少一个 存在时才出现。
容易被忽略的细节:
- 所有
必须在同一下,跨 video 无法共享切换状态 - 没有
default的字幕,首次加载时不会显示,哪怕你用 JS 调用track.mode = "showing",也得等视频 ready 后再设 - 移动端 Safari 对
支持较弱,部分机型需手动长按视频呼出字幕菜单
真要可靠控制,得用 JS 操作 video.textTracks 列表,而不是只靠 HTML 属性。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











