问题描述

最近使用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

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐