js 中 ios 获取 audio.duration为NaN
时间: 2024-03-20 07:40:25 浏览: 96
js获取时间 的时分秒出现NaN
在 iOS 中,获取 audio 元素的 duration 属性可能会返回 NaN。这可能是因为 audio 元素尚未加载完全,或者音频文件的元数据中缺少所需的信息。
为了解决这个问题,您可以尝试使用以下方法:
1. 等待 audio 元素加载完成后再获取 duration 属性,可以通过监听 `loadedmetadata` 事件来实现:
```
var audio = document.getElementById('audio');
audio.addEventListener('loadedmetadata', function() {
console.log(audio.duration);
});
```
2. 如果音频文件的元数据中缺少 duration 信息,您可以使用第三方库来解析音频文件并获取 duration。例如,您可以使用 `wavefile` 库来解析 WAV 文件:
```
var xhr = new XMLHttpRequest();
xhr.open('GET', 'audio.wav', true);
xhr.responseType = 'arraybuffer';
xhr.onload = function() {
var wav = new WaveFile(xhr.response);
console.log(wav.getDuration());
};
xhr.send();
```
请注意,这需要您将音频文件转换为 WAV 格式。如果您仍然遇到问题,可以检查音频文件的元数据并确保其包含所需的信息。
阅读全文