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

如何在Wavesurfer缩放时获取时间线点击位置的对应时间?

解决wavesurfer.js Timeline插件缩放时点击时间线获取正确时间的问题
  • 首先,不要硬编码媒体时长,改用wavesurfer.getDuration()动态获取实际总时长,避免固定值导致的误差:
this.player.on("seek", (position) => {
  // 动态获取媒体总时长
  const totalDuration = this.player.getDuration();
  // position是0-1之间的比例,对应总时长的位置
  const currentTime = position * totalDuration;

  this.updateVideoCurrentTime(currentTime);
});
  • 如果你使用的是wavesurfer内置的缩放功能(通过this.player.zoom(level)方法调整缩放),上述代码完全适用——seek事件返回的position始终是相对于媒体总时长的比例,不受缩放、滚动操作影响,直接计算就能得到正确的点击时间。

  • 如果你是自定义实现了Timeline的可视范围缩放(比如只显示媒体的某一段),可以通过getVisibleRegion()方法获取当前可视区域的起始和结束时间,再结合点击位置的比例计算:

this.player.on("seek", (position) => {
  const visibleRegion = this.player.getVisibleRegion();
  // 可视区域的时间跨度
  const visibleDuration = visibleRegion.end - visibleRegion.start;
  // 点击位置在可视区域内的比例对应的时间
  const currentTime = visibleRegion.start + position * visibleDuration;

  this.updateVideoCurrentTime(currentTime);
});

注意:getVisibleRegion()返回的start和end是当前可视区域对应的媒体时间(单位:秒),仅当你通过滚动或缩放改变了可视范围时需要用这种方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 07:55:19