根据比特率和文件大小计算Mp3持续时间

时间:2015-04-07 15:03:42

标签: mp3

我尝试使用比特率和文件大小来计算mp3持续时间,经过一些搜索后我发现了这个公式:

(mp3sizeInByte*0.008)/bitrate

我正在使用mp3sizeInByte*0.008将字节转换为Kbits。

但它不那么准确,结果与实际的mp3持续时间相比,有两个不同的比较。

我想知道这个正确的公式吗?

2 个答案:

答案 0 :(得分:11)

您可以使用以下公式计算尺寸:

x =以秒为单位的歌曲长度

y =以每秒千比特为单位的比特率

(x * y)/ 8

我们除以8得到的结果以千字节(kb)为单位。

例如,如果你有一首3分钟的歌曲

3分钟= 180秒

128kbps * 180秒= 23,040千比特的数据  23,040千比特/ 8 = 2880 kb

然后您将通过除以1024转换为兆字节:

2880/1024 = 2.8125 Mb

如果所有这些都以不同的编码速率完成,比如192kbps,它将如下所示:

(192 * 180)/ 8 = 4320kb / 1024 = 4.21875Mb

答案 1 :(得分:1)

如果遇到其他人尝试使用Web Audio API计算JavaScript的比特率,这就是我的方法:

<input type="file" id="myFiles" onchange="parseAudioFile()"/>
function parseAudioFile(){
  const input = document.getElementById('myFiles');
  const files = input.files;
  const file = files && files.length ? files[0] : null;
  if(file && file.type.includes('audio')){
    const audioContext = new (window.AudioContext || window.webkitAudioContext)();
    const reader = new FileReader();
    reader.onload = function(e){
      const arrayBuffer = e.target.result;
      audioContext.decodeAudioData(arrayBuffer)
        .then(function(buffer){
          const duration = buffer.duration || 1;
          const bitrate = Math.floor((file.size * 0.008) / duration);
          // Do something with the bitrate
          console.log(bitrate);
        });
    };
    reader.readAsArrayBuffer(file);
  }
}