根据比特率和文件大小计算 Mp3 持续时间
Calculate Mp3 duration based on bitrate and file size
我尝试使用比特率和文件大小来计算 mp3 持续时间,经过一些搜索我发现了这个公式:
(mp3sizeInByte*0.008)/bitrate
我正在使用 mp3sizeInByte*0.008
将字节转换为 Kbits。
但它不是那么准确,结果与实际 mp3 持续时间相比有几秒钟的差异。
我想知道这个正确的公式?
您可以使用以下公式计算尺寸:
x = 歌曲长度(以秒为单位)
y = 比特率,单位为千比特每秒
(x * y) / 8
我们除以 8 得到以千字节 (kb) 为单位的结果。
例如,如果您有一首 3 分钟的歌曲
3 分钟 = 180 秒
128kbps * 180 秒 = 23,040 千比特数据
23,040 kb / 8 = 2880 kb
然后您将除以 1024 转换为兆字节:
2880/1024 = 2.8125 Mb
如果所有这些都是以不同的编码速率完成的,比如说 192kbps,它会看起来像这样:
(192 * 180) / 8 = 4320 kb / 1024 = 4.21875 Mb
如果其他人在尝试使用网络音频 JavaScript 计算比特率 API 时,我就是这样完成的:
<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);
}
}
我尝试使用比特率和文件大小来计算 mp3 持续时间,经过一些搜索我发现了这个公式:
(mp3sizeInByte*0.008)/bitrate
我正在使用 mp3sizeInByte*0.008
将字节转换为 Kbits。
但它不是那么准确,结果与实际 mp3 持续时间相比有几秒钟的差异。
我想知道这个正确的公式?
您可以使用以下公式计算尺寸:
x = 歌曲长度(以秒为单位)
y = 比特率,单位为千比特每秒
(x * y) / 8
我们除以 8 得到以千字节 (kb) 为单位的结果。
例如,如果您有一首 3 分钟的歌曲
3 分钟 = 180 秒
128kbps * 180 秒 = 23,040 千比特数据 23,040 kb / 8 = 2880 kb
然后您将除以 1024 转换为兆字节:
2880/1024 = 2.8125 Mb
如果所有这些都是以不同的编码速率完成的,比如说 192kbps,它会看起来像这样:
(192 * 180) / 8 = 4320 kb / 1024 = 4.21875 Mb
如果其他人在尝试使用网络音频 JavaScript 计算比特率 API 时,我就是这样完成的:
<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);
}
}