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);
					
				});
			},
相关推荐
legendary_1635 小时前
Type-C 一拖二快充线:实用、便携的移动充电方式
计算机外设·电脑·音视频
EasyDSS6 小时前
视频推流平台EasyDSS与无人机推流直播技术在农业场景的科学应用
音视频·无人机
iOS阿玮8 小时前
鸿蒙激励的羊毛,你"薅"到了么?
uni-app·app·apple
TEL189246224778 小时前
IT6622:HDMI 1.4 发射,带 eARC RX 和嵌入式 MCU
音视频·实时音视频·视频编解码
TEL189246224779 小时前
IT6620BFN:带音频多路输出的ARC/eARC接收机
音视频·实时音视频·视频编解码
音视频牛哥9 小时前
Android 端构建高性能 RTSP 转 RTMP|轻量级RTSP服务 网关:透传与二次编码深度实践
android·音视频·大牛直播sdk·rtsp转rtmp推送·rtsp转发到rtsp服务器·rtsp转rtmp二次编码推送·rtsp二次编码加水印
妫以明11 小时前
FFmpeg:视频处理界的瑞士军刀
ffmpeg·音视频
ResponseState20011 小时前
安卓原生写uniapp插件手把手教学调试、打包、发布。
前端·uni-app
娅娅梨11 小时前
音视频-YUV格式
音视频
aitoolhub11 小时前
AI视频生成:核心技术框架与工作逻辑
人工智能·计算机视觉·aigc·音视频·设计语言