当前位置:首页 > 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 实现方法 JavaScript 是一种广泛使用的编程语言,适用于网页开发、服务器端编程以及移动应用开发。以下是几种常见的 JavaScript 实现方法: 网页交互功能 使用…

js 实现vue模板

js 实现vue模板

实现 Vue 模板的 JavaScript 方法 通过原生 JavaScript 可以实现类似 Vue 的模板渲染功能,主要包括数据绑定、指令处理和模板解析。以下是核心实现思路: 数据绑定与…

js实现变形

js实现变形

使用 CSS 和 JavaScript 实现元素变形 在 JavaScript 中实现变形效果通常结合 CSS 的 transform 属性,通过动态修改该属性实现元素的旋转、缩放、倾斜或平移。 基…

js实现选题

js实现选题

实现选题功能的JavaScript方法 基础实现方案 使用数组存储选项,通过随机索引选取: const options = ['选项A', '选项B', '选项C', '选项D']; const r…

js节流实现

js节流实现

节流的概念 节流(Throttle)是一种限制函数执行频率的技术,确保函数在一定时间间隔内只执行一次。常用于滚动事件、窗口调整等高频触发的场景。 基础实现方法 使用时间戳判断是否执行函数:…

js实现图片

js实现图片

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