我试图从一组音频路径中获取音频的总持续时间。
以下是阵列的外观:
var sound_paths = ["1.mp3","2.mp3",...]
我看了这篇文章,它很有帮助:如何通过函数获取audio.duration值
但是,我不知道如何在阵列上实现这一点。我的想法是循环每个音频文件,获取其持续时间,并将其添加到“sum_duration”变量中。
我似乎想不出一个方法在for循环中实现这一点。我尝试过承诺(我承认这是一个新手):(注意函数来自一个类)
getDuration(src,cb){
// takes a source audio file and a callback function
var audio = new Audio();
audio.addEventListener("loadedmetadata",()=>{
cb(audio.duration);
});
audio.src = src;
}
getAudioArrayDuration(aud_path_arr){
// takes in an array of audio paths, finds the total audio duration
// in seconds
return new Promise((resolve)=>{
var duration = 0;
for(const aud_path in aud_path_arr){
var audio = new Audio();
audio.src = aud_path;
audio.onloadedmetadata = ()=>{
console.log(audio.duration);
duration += audio.duration;
}
resolve(duration);
}
});
}
但是,这显然不起作用,只会返回持续时间值0。
如何循环音频文件并返回每个文件的总音频持续时间?
暂无答案!
目前还没有任何答案,快来回答吧!