javascript - 音频持续时间返回 NaN

标签 javascript audio 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>

在您的代码中,附加一个事件处理程序,以设置 metadata has been loaded 时的持续时间:

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

关于javascript - 音频持续时间返回 NaN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44610417/

相关文章:

c# - 为什么在 C# 中使用 float.NaN != double.NaN?

javascript - jquery 选择图像不起作用

javascript - __hash__ 用于 JavaScript?

android - 在Android中同时播放多个声音

iphone - 尝试使用SimpleAudioEngine播放随机声音,没有声音

python - 在数据框上应用转换,而不是在元素上应用转换(对于音频文件)

c - Float 打印为 NaN,但之后立即打印正确的值

c++ - C/C++ NaN 常量(字面量)?

javascript - 检测移动和桌面设备上的字符代码

javascript - 如何使用 JavaScript 和 HTML 组合框 (<select>) 加载文本文件?