Uniapp使用InnerAudioContext返回内部 audio 上下文 ,获取不到duration当前音频的长度,如何解决?

原因:其实是wx的bug,这个问题在开发环境中,并不会遇到。而是真机测试或发版后,就获取不到duration。

解决:我们只要去手动播放音频后,就会抓取到duration。

代码示例

关键代码

复制代码
this.audioContext.play(); //手动播放音频

完整代码

javascript 复制代码
AudioPlay(file) {
				this.audioContext = uni.createInnerAudioContext({
					useWebAudioImplement: true
				});
				this.audioContext.src = file.path;
				this.audioContext.startTime = 0;
				this.audioContext.play(); //手动播放音频
				this.audioContext.stop(); //手动停止播放音频
				this.audioContext.onPlay(() => {
					console.log('开始播放');
				})
                 //调用onCanplay使音频进入可以播放状态
				this.audioContext.onCanplay(() => {
					console.log(_this?.audioContext?.duration, "duration");
					let intervalID = setInterval(() => {
						if (this?.audioContext?.duration !== 0) {
							const time = Math.floor(this.audioContext.duration);
							clearInterval(intervalID); // 清除定时器
                            console.log("当前音频长度",this?.audioContext?.duration, "duration");
							//这里可以做音频的限制
							if ( time > 60) {
								this.audioContext = null;
								uni.showToast({
									icon: "none",
									title: "音频不能超过1分钟",
								});
							} 
						}
					}, 500);
					
				});
			},
相关推荐
来自宇宙的曹先生4 小时前
视频网站弹幕系统简易实现
spring boot·音视频
qq_424409195 小时前
uniapp的app项目,添加全局弹窗
uni-app
七夜zippoe8 小时前
uniapp跳转页面时如何带对象参数
uni-app·携带参数
hjjdebug8 小时前
ffplay6 播放器关键技术点分析 1/2
c++·ffmpeg·音视频
racerun8 小时前
UniApp中的pages.json 和 tabBar
uni-app·json
_pengliang10 小时前
WebRTC 双向视频通话
音视频·webrtc
开开心心_Every11 小时前
全能视频处理工具介绍说明
开发语言·人工智能·django·pdf·flask·c#·音视频
沐尘而生17 小时前
【AI智能体】智能音视频-硬件设备基于 WebSocket 实现语音交互
大数据·人工智能·websocket·机器学习·ai作画·音视频·娱乐
nightunderblackcat19 小时前
进阶向:Python音频录制与分析系统详解,从原理到实践
开发语言·python·音视频
Antonio9151 天前
【音视频】HLS简介与服务器搭建
运维·服务器·音视频