当前位置:首页 > 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可以动态切换不同语言的字幕:

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可以自定义字幕的外观:

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();

字幕同步控制

精确控制字幕显示时间:

js实现字幕

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实现动画

使用 CSS 动画与 JavaScript 控制 通过 JavaScript 动态添加或移除 CSS 类来触发动画。CSS 定义关键帧(@keyframes),JavaScript 通过 classL…

js 实现倒计时

js 实现倒计时

实现倒计时的基本方法 使用 JavaScript 实现倒计时可以通过 setInterval 或 setTimeout 结合日期计算来完成。以下是两种常见实现方式。 使用 setInterval 实…

vue实现字幕

vue实现字幕

Vue 实现字幕功能 在 Vue 中实现字幕功能可以通过多种方式完成,以下是几种常见的方法: 使用动态绑定和 CSS 动画 通过 Vue 的动态数据绑定和 CSS 动画可以实现简单的字幕效果。 &…

js实现瀑布流

js实现瀑布流

实现瀑布流布局 瀑布流布局是一种常见的网页布局方式,常用于图片展示、商品列表等场景。以下是使用 JavaScript 实现瀑布流布局的几种方法。 纯 JavaScript 实现 通过计算元素的位置和…

js实现祖玛

js实现祖玛

实现祖玛游戏的核心思路 祖玛游戏的核心玩法是发射彩色珠子,形成三个或以上相同颜色的珠子即可消除。以下是使用JavaScript实现的基本框架。 游戏初始化 创建画布并初始化游戏状态: const…

js怎么实现异步

js怎么实现异步

异步实现方法 JavaScript中实现异步操作主要通过以下几种方式: Promise Promise是ES6引入的异步解决方案,用于处理异步操作的成功或失败状态。 const promise =…