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