当前位置:首页 > JavaScript

js实现字幕

2026-03-14 04:26:09JavaScript

使用HTML5的<track>标签和JavaScript

HTML5提供了<track>标签,可以用于为视频添加字幕。通过JavaScript可以动态控制字幕的显示。

<video id="video" controls>
  <source src="video.mp4" type="video/mp4">
  <track id="subtitle" src="subtitles.vtt" kind="subtitles" srclang="en" label="English">
</video>
const video = document.getElementById('video');
const track = document.getElementById('subtitle');
track.mode = 'showing'; // 显示字幕

动态创建字幕元素

通过CSS和JavaScript动态创建字幕元素,可以更灵活地控制字幕样式和位置。

js实现字幕

<div id="video-container">
  <video id="video" src="video.mp4" controls></video>
  <div id="subtitle"></div>
</div>
const video = document.getElementById('video');
const subtitle = document.getElementById('subtitle');

video.addEventListener('timeupdate', () => {
  const currentTime = video.currentTime;
  // 根据时间显示不同的字幕
  if (currentTime >= 0 && currentTime < 5) {
    subtitle.textContent = "这是第一段字幕";
  } else if (currentTime >= 5 && currentTime < 10) {
    subtitle.textContent = "这是第二段字幕";
  }
});

使用WebVTT格式字幕

WebVTT是一种标准的字幕格式,可以被现代浏览器直接支持。

WEBVTT

00:00:01.000 --> 00:00:05.000
这是第一段字幕

00:00:05.000 --> 00:00:10.000
这是第二段字幕
// 动态加载字幕文件
fetch('subtitles.vtt')
  .then(response => response.text())
  .then(text => {
    const track = document.createElement('track');
    track.kind = 'subtitles';
    track.label = 'English';
    track.srclang = 'en';
    track.src = URL.createObjectURL(new Blob([text], { type: 'text/vtt' }));
    video.appendChild(track);
    track.mode = 'showing';
  });

使用第三方库

一些第三方库如Video.js提供了更丰富的字幕功能。

js实现字幕

<link href="https://vjs.zencdn.net/7.15.4/video-js.css" rel="stylesheet">
<script src="https://vjs.zencdn.net/7.15.4/video.js"></script>

<video id="video" class="video-js" controls>
  <source src="video.mp4" type="video/mp4">
  <track src="subtitles.vtt" kind="subtitles" srclang="en" label="English">
</video>
const player = videojs('video');
player.ready(() => {
  const track = player.addRemoteTextTrack({
    src: 'subtitles.vtt',
    kind: 'subtitles',
    label: 'English',
    srclang: 'en'
  }, false);
  player.textTracks()[0].mode = 'showing';
});

自定义字幕样式

通过CSS可以自定义字幕的外观,包括字体、颜色、背景等。

#subtitle {
  position: absolute;
  bottom: 20%;
  left: 50%;
  transform: translateX(-50%);
  color: white;
  font-size: 24px;
  text-shadow: 2px 2px 4px black;
  background-color: rgba(0, 0, 0, 0.5);
  padding: 5px 10px;
  border-radius: 5px;
}

实时字幕生成

结合Web Speech API可以实现实时字幕生成。

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

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

recognition.start();

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

相关文章

js实现拖拽

js实现拖拽

实现拖拽的基本步骤 使用JavaScript实现拖拽功能需要监听鼠标事件,包括mousedown、mousemove和mouseup。以下是实现的基本逻辑: const draggableEleme…

js实现拷贝

js实现拷贝

实现文本拷贝 使用 document.execCommand 方法(已废弃但兼容性较好): function copyText(text) { const textarea = document…

js实现tab选项卡切换

js实现tab选项卡切换

实现Tab选项卡切换的JavaScript方法 使用纯JavaScript实现Tab切换功能,可以通过监听点击事件动态切换内容显示状态。以下是两种常见实现方式: 基础DOM操作实现 /…

js实现百叶窗

js实现百叶窗

使用CSS和JavaScript实现百叶窗效果 通过CSS动画和JavaScript事件监听可以实现百叶窗效果。核心思路是将内容区域分割为多个条状元素,通过控制它们的展开/折叠状态来模拟百叶窗。…

js实现祖玛

js实现祖玛

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

利用js实现

利用js实现

使用 JavaScript 实现 在 JavaScript 中,可以通过多种方式实现功能,具体取决于需求。以下是几种常见的方法: 方法一:使用原生 JavaScript // 示例代码…