javascript - 使用 Howler.js 时有没有办法指示音频下载进度/缓冲区?

标签 javascript html5-audio web-audio-api howler.js

我正在使用 Howler.js并尝试完成这样的事情:

download with buffer

但是,Howler 似乎不支持 audio "progress" events .有人知道我该如何解决这个问题吗?

最佳答案

您需要绑定(bind)到 Howler 的非公共(public) API 才能实现此目的,至少在实现此功能之前(如果有的话)。

const audio = new Howl({
  src: 'https://howlerjs.com/assets/howler.js/examples/player/audio/rave_digger.webm',
  html5: true,
  preload: false,
});

const handleLoad = () => {
  const node = audio._sounds[0]._node;
  // const node:HTMLAudioElement = (audio as any)._sounds[0]._node; // For Typescript
  node.addEventListener('progress', () => {
    const duration = audio.duration();

    // https://developer.mozilla.org/en-US/Apps/Fundamentals/Audio_and_video_delivery/buffering_seeking_time_ranges#Creating_our_own_Buffering_Feedback
    if (duration > 0) {
      for (let i = 0; i < node.buffered.length; i++) {
        if (node.buffered.start(node.buffered.length - 1 - i) < node.currentTime) {
          const bufferProgress = (node.buffered.end(node.buffered.length - 1 - i) / duration) * 100;
          // do what you will with it. I.E - store.set({ bufferProgress });
          break;
        }
      }
    }
  }
};

audio.on('load', handleLoad);

原始答案可见heregoldfire/howler.js

关于javascript - 使用 Howler.js 时有没有办法指示音频下载进度/缓冲区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37769535/

相关文章:

javascript - 索引不在允许的范围内

web-audio-api - 在javascript中确定大型音频文件的采样率?

javascript - 根据复选框更改 href

php - 是否可以制作安全的 JS 脚本或函数?

html - 您可以使用具有 Flash 故障安全功能的 HTML5 视频/音频播放器吗?

html - 音频输出2台设备

javascript - Firefox 首次/页面加载时不会触发 'play' 或 'playing' 事件

html - 在 HTML5/Chrome 中获取 AudioBuffer 的 onended 事件

javascript - XML 中的正则表达式替换

javascript - 从客户端填充 IFRAME