1. 使用Audio获取duration

  let audioUrl;
  let duration = 0;
  const processDuration = (blob: Blob) => {
    const reader = new FileReader();
    reader.onloadend = e => {
      audioUrl = reader.result as string;
      var media = new Audio(reader.result as string);
      media.onloadedmetadata = function() {
        if (media.duration != Infinity) {
          duration = media.duration;
        }
      };
    };
    reader.readAsDataURL(blob);
  };

但这个方法在Chrome上会存在bug,可能会计算duration为Infinity。可以尝试用下面方法解决。

2. 直接获取audiobuffer的duration

audioBuffer.duration

3. 用arraybuffer计算duration

如果获取的是纯pcm数据的arraybuffer,且知道audio的samplerate,计算$$duration = arraybuffer.bytelength / sampleRate / 2$$

相关文章:

  • 2021-09-06
  • 2021-08-13
  • 2022-12-23
  • 2021-08-31
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-10-10
  • 2022-12-23
  • 2021-05-17
  • 2021-11-19
  • 2022-02-08
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案