我尝试使用比特率和文件大小来计算mp3持续时间,经过一些搜索后我发现了这个公式:
(mp3sizeInByte*0.008)/bitrate
我正在使用mp3sizeInByte*0.008
将字节转换为Kbits。
但它不那么准确,结果与实际的mp3持续时间相比,有两个不同的比较。
我想知道这个正确的公式吗?
答案 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);
}
}