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 分钟前
UNI-APP开发APP避坑指南:这些关键事项你必须掌握
uni-app
aqi004 小时前
FFmpeg开发笔记(九十一)基于Kotlin的Android直播开源框架RootEncoder
android·ffmpeg·kotlin·音视频·直播·流媒体
柳鲲鹏15 小时前
OpenCV:文件视频防抖,python版
python·opencv·音视频
柳鲲鹏16 小时前
OpenCV:实时视频防抖,python版(改进连续帧处理)
音视频
游戏开发爱好者817 小时前
iOS 商店上架全流程解析 从工程准备到审核通过的系统化实践指南
android·macos·ios·小程序·uni-app·cocoa·iphone
toooooop817 小时前
Vuex 中 state、mutations 和 actions 的原理和写法
前端·javascript·uni-app
林_xi18 小时前
uniapp使用@uni-ku/root插件实现全局组件
前端·uni-app
计算机毕设定制辅导-无忧学长18 小时前
基于uni-app的“民族风韵”特色购物小程序
uni-app
一个处女座的程序猿O(∩_∩)O18 小时前
UniApp 生命周期全解析:从应用到页面,再到组件的完美协奏曲
前端·uni-app
你听得到1120 小时前
Web前端们!我用三年亲身经历,说说从 uniapp 到 Flutter怎么转型的,这条路我爬过,坑我踩过
前端·flutter·uni-app