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);
					
				});
			},
相关推荐
wetyuo32 分钟前
【随手记】uniapp + V3 使用TailwindCss3
uni-app·vue·css3·vite
专业开发者43 分钟前
楷登电子(Cadence)将如何借助蓝牙 ® 低功耗音频(LE Audio)解决市场挑战
物联网·音视频
筏.k1 小时前
FFmpeg 视频解码进阶:H264_CUVID 硬解码器简单示例
ffmpeg·音视频
专业开发者2 小时前
Auracast™ 广播音频将如何掀起新一轮音频创新浪潮
物联网·音视频
阿猿收手吧!3 小时前
【音视频】将数据包的时间戳从输入流时间基转换为输出流时间基的目的
音视频
阿猿收手吧!3 小时前
【音视频】HLS 协议详细解析
c++·音视频
诺狞猫3 小时前
黄山派播放TF卡MP4视频
学习·音视频·思澈·sifli
阿猿收手吧!3 小时前
【音视频】MP4 文件结构详细解析
c++·音视频
迈火21 小时前
ComfyUI - ELLA:解锁ComfyUI图像生成新境界的神奇插件
人工智能·gpt·stable diffusion·aigc·音视频·midjourney·llama
行业探路者1 天前
如何利用二维码提升标牌标识实用性和用户体验?
学习·音视频·语音识别·二维码·设备巡检