You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何无需创建.vtt文件为视频添加全程展示的动态字幕?

无需创建.vtt文件动态添加视频字幕实现方案

问题1:你的需求是否可以实现?

完全可以实现,不需要生成外部.vtt文件,直接通过JavaScript API动态创建字幕轨道和字幕内容即可实现需求。

问题2:如何通过代码直接添加字幕?

你原有代码不显示字幕主要存在两个问题:

  • 回调内this指向错误:addEventListener普通回调中的this并不指向video元素,无法正确调用addTextTrack方法
  • 字幕轨道默认隐藏:创建的TextTrack默认mode为hidden,必须手动设置为showing才会将字幕渲染到视频上

修正后的代码示例如下:

// 替换为你的实际video元素
const video = document.getElementById('video-player');
const displayUsername = "通话者用户名";

video.srcObject = stream;
video.addEventListener("loadedmetadata", async () => {
  // 等待视频播放就绪
  await video.play();
  // 创建字幕轨道
  const captionTrack = video.addTextTrack("captions", "用户昵称展示", "zh");
  // 开启字幕显示
  captionTrack.mode = "showing";
  // 添加字幕内容
  captionTrack.addCue(new VTTCue(0, 3600, displayUsername));
});

问题3:如何让字幕在整个视频流播放期间生效?

针对实时视频流时长不确定的场景,直接将VTTCue的结束时间设置为足够大的数值即可,比如设置为86400(对应24小时),完全覆盖普通视频通话的时长范围。如果后续需要主动关闭字幕,直接删除对应cue或者将track.mode修改为hidden即可。

内容的提问来源于stack exchange,提问作者user17128189

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 15:45:02