目录

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);
					
				});
			},
本文是转载文章,点击查看原文
如有侵权,请联系 xyy@jishuzhan.net 删除
相关推荐
.清和.6 分钟前
【uniapp-兼容性处理】swiper在iOS上偶发出现后几张图片白屏情况
uni-app
堕落年代11 小时前
Uniapp当中的async/await的作用
前端·javascript·uni-app
堕落年代12 小时前
Uniapp使用onShow语法报before initialization
uni-app
大叔_爱编程12 小时前
wx212基于ssm+vue+uniapp的科创微应用平台小程序
vue.js·小程序·uni-app·毕业设计·ssm·课程设计·科创微应用平台小程序
suki45226292613 小时前
音视频转换器 AV 接口静电保护方案
音视频
Java&Develop14 小时前
ffmpeg 切割视频失败 ffmpeg 命令参数 -vbsf 在新版本中已经被弃用,需要使用 -bsf:v 替代
ffmpeg·音视频
批量小王子14 小时前
01_通过调过api文字生成音频示例
音视频
前端开发呀18 小时前
无所不能的uniapp拦截器
前端·uni-app
EQ-雪梨蛋花汤19 小时前
【Part 1全景视频拍摄与制作基础】第四节|基于UE/Unity的全景视频渲染与导出
unity·游戏引擎·音视频·vr·全景视频
weixin_4435664720 小时前
uniapp离线打包提示未添加videoplayer模块
uni-app