如何给`<video>`视频添加字幕(WebVTT)?

727 阅读2分钟

在 Web 开发中,为 <video> 元素添加字幕是提升用户体验的重要步骤。WebVTT(Web Video Text Tracks)是一种用于视频字幕和其他文本轨道的标准格式,下面将介绍如何为 <video> 元素添加 WebVTT 字幕。

1. 准备 WebVTT 文件

首先,您需要创建一个 WebVTT 文件,文件扩展名通常为 .vtt。以下是一个简单的 WebVTT 文件示例:

WEBVTT

1
00:00:00.000 --> 00:00:05.000
这是第一行字幕。

2
00:00:05.000 --> 00:00:10.000
这是第二行字幕。

在这个文件中,WEBVTT 是文件的开头,后面是字幕的时间戳和内容。每个字幕块由一个编号、时间范围和字幕文本组成。

2. 引入视频和字幕

在 HTML 中使用 <video> 标签引入视频并添加 WebVTT 字幕。以下是基本的结构:

<video controls width="600">
  <source src="your-video.mp4" type="video/mp4">
  <track src="subtitles.vtt" kind="subtitles" srclang="zh" label="中文" default>
  您的浏览器不支持视频标签。
</video>

代码解析:

  • controls 属性:为视频添加控制按钮(播放、暂停等)。
  • <source>:指定视频文件及其格式。
  • <track>:用于添加字幕,包含以下属性:
    • src:指向 WebVTT 文件的路径。
    • kind:指定轨道类型(如 subtitles)。
    • srclang:指定字幕语言(如 zh 表示中文)。
    • label:为字幕轨道提供一个用户可读的名称。
    • default:指定该字幕为默认显示字幕。

3. 自定义字幕样式

您可以通过 CSS 自定义字幕的样式。例如,改变字体、颜色和背景:

video::-webkit-media-text-track {
  color: white;
  background: rgba(0, 0, 0, 0.7); /* 半透明黑色背景 */
  font-size: 16px;
  text-shadow: 1px 1px 2px black; /* 字体阴影 */
}

4. 使用 JavaScript 控制字幕

可以通过 JavaScript 动态控制字幕的显示和隐藏。以下是一个简单的示例:

<button id="toggle-subtitles">切换字幕</button>

<script>
  const video = document.querySelector('video');
  const track = video.querySelector('track');

  document.getElementById('toggle-subtitles').addEventListener('click', () => {
    if (track.mode === 'showing') {
      track.mode = 'hidden'; // 隐藏字幕
    } else {
      track.mode = 'showing'; // 显示字幕
    }
  });
</script>

5. 注意事项

  • 浏览器兼容性:大多数现代浏览器都支持 <video> 和 WebVTT,但在某些老旧浏览器中可能不支持。
  • 字幕同步:确保 WebVTT 文件中的时间戳与视频内容同步。
  • 多语言支持:如果需要支持多种语言,您可以添加多个 <track> 元素,每个元素指向不同的 WebVTT 文件。

6. 总结

<video> 元素添加 WebVTT 字幕不仅能提升可访问性,还能改善用户体验。通过创建标准的 WebVTT 文件、在 HTML 中正确使用 <track> 标签、以及使用 CSS 和 JavaScript 进行自定义和控制,您可以轻松实现视频字幕功能。希望这些技巧能够帮助您在项目中成功添加字幕功能。