Javascript 如何在HTML5视频播放器中获取特定时间戳的字幕文本?

Javascript 如何在HTML5视频播放器中获取特定时间戳的字幕文本?,javascript,html,ajax,Javascript,Html,Ajax,所以我有这个html5视频播放器代码,它可以播放视频和加载字幕。它还试图以精确的时间戳显示字幕,以便将该时间戳处的文本读入变量并提交到数据库 但我希望动态显示字幕文本,以便在我按下submit时,该特定时间戳处的字幕可以保存在数据库中,保存在类似以下的帧中:- <p>Subtitle_tstamp: <span id="s_tstamp"></span></p> <input name="s_tstamp" id="hidden-tstamp

所以我有这个html5视频播放器代码,它可以播放视频和加载字幕。它还试图以精确的时间戳显示字幕,以便将该时间戳处的文本读入变量并提交到数据库

但我希望动态显示字幕文本,以便在我按下submit时,该特定时间戳处的字幕可以保存在数据库中,保存在类似以下的帧中:-

<p>Subtitle_tstamp: <span id="s_tstamp"></span></p>
<input name="s_tstamp" id="hidden-tstamp" type="hidden">
<p class="submit">
<button type="submit" class="btn btn-primary" name="submit" value="Submit" id="submit_form">Submit</button>
<p>
副标题\u tstamp:

提交

我可以看到“隐藏的tstamp:”,但字幕并没有显示在它前面。我希望它显示在“hidden tstamp:”前面的视频下,如中所示。当我单击submit时,此时的字幕文本应该被传递/保存到一个变量中以供进一步处理

元素具有事件。每当更改字幕时,此事件都会激发。这意味着当文本显示和消失时

选择您的
元素,聆听
提示更改
事件,并基于当前显示的
文本
更新您的
输入

在事件处理程序中,检查是否存在任何
活动提示。它们存储在一个数组中。因此,如果数组为空,则不显示文本;如果数组为空,则选择第一个键并选择其
text
属性。这是当前的副标题。将
'值设置为
text
属性

关于轨迹的所有数据都存储在
cuechange
事件的
event.target.track
属性中

// Select the track and the input element.
const video = document.getElementById('my_video_1');
const track = video.querySelector('track');
const stamp = document.getElementById('hidden-tstamp');

// Listen for the cuechange event.
// Check if there are active cues and use them as value.
track.addEventListener('cuechange', event => {
  const currentCues = event.target.track.activeCues;
  if (currentCues.length) {
    stamp.value = currentCues[0].text;
  } else {
    stamp.value = '';
  }
});
元素具有该事件。每当更改字幕时,此事件都会激发。这意味着当文本显示和消失时

选择您的
元素,聆听
提示更改
事件,并基于当前显示的
文本
更新您的
输入

在事件处理程序中,检查是否存在任何
活动提示。它们存储在一个数组中。因此,如果数组为空,则不显示文本;如果数组为空,则选择第一个键并选择其
text
属性。这是当前的副标题。将
'值设置为
text
属性

关于轨迹的所有数据都存储在
cuechange
事件的
event.target.track
属性中

// Select the track and the input element.
const video = document.getElementById('my_video_1');
const track = video.querySelector('track');
const stamp = document.getElementById('hidden-tstamp');

// Listen for the cuechange event.
// Check if there are active cues and use them as value.
track.addEventListener('cuechange', event => {
  const currentCues = event.target.track.activeCues;
  if (currentCues.length) {
    stamp.value = currentCues[0].text;
  } else {
    stamp.value = '';
  }
});

谢谢Emiel,但是作为一个noob,我不知道我是否应该按原样使用这个代码。复制粘贴不起作用。你能帮我查一下工作代码吗!!非常感谢!!我没有正确选择视频。我已经修改了代码。请再试一次。谢谢,我已根据您在我的问题中的建议更新了我的全部代码。它仍然没有按预期工作。你能看一下吗?你能说明什么不起作用吗?控制台是否显示任何错误?我可以看到“隐藏的tstamp:”,但它前面没有显示字幕。我希望它显示在“hidden tstamp:”前面的视频下,就像本教程中的-->。当我点击submit时,当时的字幕文本应该被传递/保存到一个变量中以供进一步处理。谢谢Emiel,但是作为一个noob,我不知道我是否应该按原样使用这个代码。复制粘贴不起作用。你能帮我查一下工作代码吗!!非常感谢!!我没有正确选择视频。我已经修改了代码。请再试一次。谢谢,我已根据您在我的问题中的建议更新了我的全部代码。它仍然没有按预期工作。你能看一下吗?你能说明什么不起作用吗?控制台是否显示任何错误?我可以看到“隐藏的tstamp:”,但它前面没有显示字幕。我希望它显示在“hidden tstamp:”前面的视频下,就像本教程中的-->。当我单击submit时,此时的字幕文本应该被传递/保存到一个变量中以供进一步处理。