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);
					
				});
			},
相关推荐
东风西巷20 小时前
AudioLab安卓版:音频处理,一应俱全
ffmpeg·音视频·软件需求
会一丢丢蝶泳的咻狗21 小时前
uni-app安卓端强制更新apk包
android·前端·uni-app
iOS阿玮1 天前
苹果审核被拒,其实可以靠回复也能过审
uni-app·app·apple
FakeOccupational1 天前
ESP32 005 MicroPython I2S 实现音频传输与播放
音视频
FF-Studio1 天前
【DSP笔记 · 第5章】数字滤波器的蓝图:从数学公式到硬件实现的艺术
笔记·fpga开发·自动化·音视频·音频·信号处理
程序员小刘1 天前
HarmonyOS 5中UniApp的调试步骤
华为·uni-app·harmonyos
饭啦啦1 天前
uniapp音乐播放createInnerAudioContext
uni-app
米粒宝的爸爸1 天前
uniapp中vue3 ,uview-plus使用!
前端·vue.js·uni-app
光电的一只菜鸡1 天前
ubuntu之坑(十四)——安装FFmpeg进行本地视频推流(在海思平台上运行)
ubuntu·ffmpeg·音视频
FF-Studio2 天前
万物皆数:构建数字信号处理的数学基石
算法·数学建模·fpga开发·自动化·音视频·信号处理·dsp开发