ios 获取 mp3 总时长为 NaN
时间: 2023-08-18 12:38:58 浏览: 56
可能是因为获取总时长的方法返回的值为 NaN,这可能是由于 MP3 文件的元数据中缺少所需的信息而导致的。您可以尝试使用其他方法来获取 MP3 文件的总时长。
一种可行的方法是使用 AVAudioPlayer 类来获取 MP3 文件的总时长。您可以使用以下代码示例:
```
let url = URL(fileURLWithPath: "path/to/mp3/file")
let player = try! AVAudioPlayer(contentsOf: url)
let duration = player.duration
```
请注意,此方法需要在 iOS 设备上运行,无法在模拟器上运行。如果您仍然遇到问题,请检查 MP3 文件的元数据并确保其包含所需的信息。
相关问题
js 中 ios 获取 audio.duration为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 格式。如果您仍然遇到问题,可以检查音频文件的元数据并确保其包含所需的信息。
js 初始化给 audio 标签赋值 mp3 链接,然后 ios 获取 audio.duration为NaN
这个问题可能与iOS浏览器对自动播放的限制有关,iOS浏览器要求用户手动触发播放操作后才能获取音频的duration属性。你可以尝试在用户手动触发播放后再获取duration属性。你也可以在初始化时加入一些判断,如果是iOS浏览器,就不获取duration属性,而是等待用户手动触发播放后再获取。另外,你也可以尝试使用其他的音频播放库,如Howler.js或者SoundJS,它们可能能够更好地处理这个问题。