【发布时间】:2021-07-27 14:32:53
【问题描述】:
我正在尝试从一组音频路径中获取音频的总持续时间。
数组如下所示:
var sound_paths = ["1.mp3","2.mp3",...]
我看过这篇文章,它有帮助: how to get audio.duration value by a function
但是,我不知道如何在数组上实现它。这个想法是我想遍历每个音频文件,获取其持续时间,并将其添加到“sum_duration”变量中。
我似乎无法找到通过 for 循环执行此操作的方法。我已经尝试过 Promises(我承认我是新手):(注意函数来自一个类)
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。
如何循环播放音频文件并返回每个文件的总音频时长?
【问题讨论】: