如何从多个音频文件中获取总音频持续时间

yebdmbv4  于 2021-09-13  发布在  Java
关注(0)|答案(0)|浏览(161)

我试图从一组音频路径中获取音频的总持续时间。
以下是阵列的外观:

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。
如何循环音频文件并返回每个文件的总音频持续时间?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题