JavaScript 计算音频时长


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$$


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM