问题描述

最近使用uniapp的innerAudioContext获取上传的音频文件的时长时,发现获取时间是Infinity
infinity
但是直接打开地址又是能播放
audio

解决方法

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)也可以获取到时间

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐