问题描述:
最近使用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)也可以获取到时间
文章讲述了在使用uniapp的innerAudioContext获取上传音频文件时遇到时长为Infinity的问题,解决方案包括设置定时器检测、先重置进度再获取时长,以及发现直接seek(0)即可解决问题。
841





