当前位置:首页 > JavaScript

js实现字幕

2026-04-05 22:31:31JavaScript

实现字幕的基本方法

使用HTML5的<video>标签结合JavaScript可以轻松实现字幕功能。字幕通常以WebVTT格式(.vtt文件)加载,通过<track>元素与视频关联。

<video controls>
  <source src="video.mp4" type="video/mp4">
  <track label="English" kind="subtitles" srclang="en" src="subtitles.vtt" default>
</video>

动态加载字幕

通过JavaScript可以动态切换不同语言的字幕:

js实现字幕

const video = document.querySelector('video');
const track = document.createElement('track');
track.kind = 'subtitles';
track.label = '中文';
track.srclang = 'zh';
track.src = 'chinese.vtt';
video.appendChild(track);

// 切换字幕
function changeSubtitle(lang) {
  const tracks = video.textTracks;
  for (let i = 0; i < tracks.length; i++) {
    tracks[i].mode = tracks[i].language === lang ? 'showing' : 'hidden';
  }
}

WebVTT格式示例

字幕文件(.vtt)的基本格式:

WEBVTT

00:00:01.000 --> 00:00:04.000
这是第一句字幕

00:00:05.000 --> 00:00:08.000
这是第二句字幕

自定义字幕样式

通过CSS可以自定义字幕的外观:

js实现字幕

video::cue {
  color: white;
  background: rgba(0, 0, 0, 0.5);
  font-size: 16px;
  font-family: Arial, sans-serif;
}

实时字幕生成

使用Web Speech API可以实现实时语音识别并生成字幕:

const recognition = new webkitSpeechRecognition();
recognition.continuous = true;
recognition.interimResults = true;

recognition.onresult = (event) => {
  const subtitleElement = document.getElementById('subtitle');
  let interim = '';
  for (let i = event.resultIndex; i < event.results.length; i++) {
    if (event.results[i].isFinal) {
      subtitleElement.textContent = event.results[i][0].transcript;
    } else {
      interim += event.results[i][0].transcript;
    }
  }
  if (interim) subtitleElement.textContent = interim;
};

recognition.start();

字幕同步控制

精确控制字幕显示时间:

const cues = [
  { start: 0, end: 5, text: "欢迎观看" },
  { start: 5, end: 10, text: "这是一个演示" }
];

const track = new VTTCue(0, 0, '');
video.textTracks[0].addCue(track);

video.ontimeupdate = () => {
  const currentTime = video.currentTime;
  const activeCue = cues.find(c => currentTime >= c.start && currentTime < c.end);
  document.getElementById('subtitle').textContent = activeCue ? activeCue.text : '';
};

标签: 字幕js
分享给朋友:

相关文章

js实现复制

js实现复制

使用document.execCommand方法 在较旧的浏览器中,可以使用document.execCommand('copy')实现复制功能。创建一个临时的textarea或input元素,将需要…

js实现点击显示和隐藏

js实现点击显示和隐藏

实现点击显示和隐藏的JavaScript方法 使用classList.toggle切换类名 通过添加/移除CSS类控制元素的显示与隐藏,需提前在CSS中定义隐藏样式(如display: none)。…

链表实现js

链表实现js

链表的基本概念 链表是一种线性数据结构,由一系列节点组成,每个节点包含数据和一个指向下一个节点的指针(单向链表)或两个指针(双向链表)。与数组不同,链表在内存中非连续存储,插入和删除操作更高效,但随机…

js实现密码

js实现密码

密码强度验证 使用正则表达式验证密码强度是一种常见方法。以下代码检查密码是否包含大小写字母、数字和特殊字符,且长度至少为8位: function checkPasswordStrength(pass…

js实现图片

js实现图片

图片加载与显示 在JavaScript中,可以通过Image对象动态加载图片。创建实例后设置src属性触发加载,通过onload回调处理加载完成后的操作: const img = new Ima…

js 实现跳转

js 实现跳转

使用 window.location.href 进行跳转 通过修改 window.location.href 可以跳转到指定 URL,浏览器会加载新页面: window.location.hre…