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);
					
				});
			},
相关推荐
Rysxt_1 小时前
UniApp获取安卓系统权限教程
android·uni-app
沛沛老爹2 小时前
Web开发者转型AI:多模态Agent视频分析技能开发实战
前端·人工智能·音视频
等风来不如迎风去3 小时前
【UniVA】1:统一的视频agent:智能体系统,专门用于处理复杂的视频生成、编辑和理解任务
音视频
知秋一叶1234 小时前
Miloco v0.1.6 :米家摄像头清晰度配置 + RTSP 音频传输
人工智能·音视频·智能家居
xmRao6 小时前
Qt+FFmpeg 实现音频重采样
qt·ffmpeg·音视频
发哥来了6 小时前
主流AI视频生成模型商用化能力评测:三大核心维度对比分析
大数据·人工智能·音视频
发哥来了6 小时前
《AI图生视频技术深度剖析:原理、应用与发展趋势》
人工智能·音视频
木子啊6 小时前
ProCamera 智能水印相机解决方案 (UniApp)
数码相机·uni-app·水印相机·小程序水印
木子啊6 小时前
Uni-app跨页面通信三剑客
前端·uni-app·传参
EasyCVR20 小时前
国标GB28181视频监控平台EasyCVR智慧农场监管可视化方案设计
音视频