簡體   English   中英

音頻持續時間返回 NaN

[英]Audio duration returns NaN

在 Chrome 中使用 JavaScript 訪問 HTML5 音頻元素(.ogg 文件)。 該文件確實可以正常播放,但不知何故它無法識別持續時間。

我只是抄了這個代碼: https ://www.w3schools.com/jsref/prop_audio_duration.asp(我知道 w3schools 不是很好,但似乎還有其他問題......)

var x = document.getElementById("testTone").duration;
console.log("duration:"+x);  // duration:NaN

var y = document.getElementById("testTone");
y.play();   // works!

元素...

<audio controls id="testTone">
    <source src="autoharp/tone0.ogg" type="audio/ogg">
</audio>

preload="metadata"添加到您的標簽以使其請求您的音頻對象的元數據:

<audio controls id="testTone" preload="metadata">
    <source src="autoharp/tone0.ogg" type="audio/ogg">
</audio>

在您的代碼中,附加一個事件處理程序,以設置加載元數據時的持續時間:

var au = document.getElementById("testTone");
au.onloadedmetadata = function() {
    console.log(au.duration)
};

除了@FrankerZ 的解決方案,您還可以執行以下操作:

 <audio controls id="testTone"> <source src="https://www.w3schools.com/jsref/horse.ogg" type="audio/ogg"> <source src="https://www.w3schools.com/jsref/horse.mp3" type="audio/mpeg"> </audio> <button onclick="myFunction()">Try it</button> <script> function myFunction() { var x = document.getElementById("testTone").duration; console.log("duration:" + x); // duration:NaN var y = document.getElementById("testTone"); y.play(); // works! } </script>

W3schools 將 Audio 對象的持續時間屬性描述為只讀,因此您無法將音頻的持續時間歸因於變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM