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 分钟前
小程序包体积分析利器 -- vite-plugin-component-insight
前端·微信小程序·uni-app
chushiyunen31 分钟前
obs studio软件、直播、视频录制笔记
笔记·音视频
艾为电子1 小时前
【应用方案】AI眼镜“觉醒”:艾为帝江™音频上行算法让眼镜从“工具”变“大脑”
人工智能·音视频
木斯佳1 小时前
前端八股文面经大全:字节AIDP前端一面(2026-04-13)·面经深度解析
前端·音视频·webrtc·断点续传
y小花1 小时前
dumpsys audio指令详解
android·音视频
lq12332102 小时前
FFmpeg Batch AV Converter v3.2.8 视频批量转换工具
ffmpeg·音视频
Likeadust2 小时前
私有化音视频系统EasyDSS助力远程办公新模式
音视频
ai产品老杨2 小时前
打破品牌壁垒:基于 GB28181 与 RTSP 协议融合的企业级视频统一接入方案
音视频
Black蜡笔小新3 小时前
国标GB28181视频平台EasyCVR设备在线却无通道?先查TCP/UDP协议设置!
tcp/ip·udp·音视频
中国胖子风清扬3 小时前
基于GPUI框架构建现代化待办事项应用:从架构设计到业务落地
java·spring boot·macos·小程序·rust·uni-app·web app