问题描述:
最近使用uniapp的innerAudioContext获取上传的音频文件的时长时,发现获取时间是Infinity
但是直接打开地址又是能播放
解决方法:
const _this = this
this.innerAudioContext.onCanplay(res=>{
// 设置定时器获取音频时间(避免获取到NaN)
let intervalID = setInterval(() => {
let time = Math.floor(_this.innerAudioContext.duration)
if(!Number.isFinite(time)){ // 如果时间是Infinity
// 先设置时间为无限大,然后再重新设置为0
// _this.innerAudioContext.seek(Number.MAX_SAFE_INTEGER)
_this.innerAudioContext.seek(0)
}
if (time !== 0 && time !== Infinity) {
clearInterval(intervalID); // 清除定时器
// TODO
// ****
}
}, 100);
})
先将语音进度设置一个值再设置回0
后来发现只用设置this.innerAudioContext.seek(0)
也可以获取到时间