javascript - 如何获取特定的视频时间,然后用它来触发事件

标签 javascript html aframe

我想在特定视频时间或视频帧后触发事件/动画。 例如,视频播放到30秒,就会出现文字。

尝试了当前时间, 尝试过加载数据 并尝试了 setTimeout...但我只是不知道我正在寻找的确切 API。

如果有人能给我一些我应该搜索的关键字的提示。我想我能够弄清楚剩下的事情。谢谢你

最佳答案

如果 currentTime 为 30,您可以使用附加到视频元素的 timeupdate 事件,进行事件调用。

在调用中,我们可以使用 video.currentTime 来测试时间是否已过去,它返回视频当前的时间(以秒为单位)。

let video = document.querySelector('video')

// Times in seconds.
const timeframes = [
  {time: 30, triggered: false},
  {time: 60, triggered: false},
  {time: 90, triggered: false}
]

// Watch for currentTime changes
video.addEventListener('timeupdate', () => {
  // Find the time to be triggered
  let time = timeframes.find(i => i.time == Math.floor(video.currentTime) && !i.triggered)
  if (time) {
    // A time was found that hasn't been triggered
    time.triggered = true
    // Send the event to the window
    window.dispatchEvent(new CustomEvent('VideoTimelapse', {detail: time}))
  }
})

// Listen for the event
window.addEventListener('VideoTimelapse', (e) => {
  console.log(`${e.detail.time} seconds have passed`)
})

// The user moved the slider, reset the 'triggered' property back to false
video.addEventListener('seeked', () => timeframes.forEach(i => {i.triggered = false}))
<video controls autoplay>
  <source src="https://download.blender.org/peach/bigbuckbunny_movies/BigBuckBunny_320x180.mp4">
</video>

关于javascript - 如何获取特定的视频时间,然后用它来触发事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55345999/

相关文章:

javascript - 动态内容的危险滑动问题

javascript - 动态添加多个Jquery函数

javascript - 如果提到的输入框是使用 jquery 填充的,则启用按钮?

javascript - rails |使用 js 进行延迟作业 dom 操作后

javascript - Mongoose 中的过滤器如何工作?

html - bootstrap3如何在容器的左侧和右侧插入div block

javascript - 当新视频加载 Tauri 和 Svelte 时如何更新视频的当前时间?

javascript - threejs - 将 UV 坐标标准化为 0 和 1 问题

javascript - 如何使用 aframe.js 在场景中行走?

javascript - 如何在一个页面上查看多个vr场景?