从URL提取音频文件持续时间

时间:2017-12-26 17:37:30

标签: javascript jquery audio

我试图检索我的CDN上托管的歌曲的音频持续时间(mm:ss)。音频文件链接在此处:https://ucarecdn.com/6b1c0d8b-3145-4128-b7ff-ce5420fe154e/(请注意,将此网址粘贴到您的浏览器中会将音频文件直接下载到您的计算机上(~4mb))。

我已经能够提取bpm,现在我也想确定歌曲的长度。在线搜索似乎我需要做的就是:

var song = "https://ucarecdn.com/6b1c0d8b-3145-4128-b7ff-ce5420fe154e/";
console.log(song.duration);

但是显示undefined

我也一直在尝试这个,但收到NaN

<audio id="myAudio" controls>
    <source src="https://ucarecdn.com/6b1c0d8b-3145-4128-b7ff-ce5420fe154e/" type="audio">
</audio>

<script>
    function myFunction(e) {
    e.preventDefault;
    var x = document.getElementById("myAudio").duration;
    console.log(x);
    }
</script>

1 个答案:

答案 0 :(得分:1)

问题是持续时间返回 NAN ,因为音频元素未加载

这里需要2件事来解决你的问题  +首先你需要等到下载dom元素  +秒你需要监听音频loadmetadata事件处理程序,然后你可以访问持续时间

&#13;
&#13;
$(function(){
const ad = document.getElementById('ad');
ad.onloadedmetadata = function() {
   // duration in seconds
   alert(ad.duration);
};
  
})
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<audio id="ad" src="https://ucarecdn.com/6b1c0d8b-3145-4128-b7ff-ce5420fe154e/" controls></audio>
&#13;
&#13;
&#13;