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$$
Original: https://www.cnblogs.com/xym4869/p/13826630.html
Author: Shaw_喆宇
Title: JavaScript 计算音频时长
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/535904/
转载文章受原作者版权保护。转载请注明原作者出处!