_this.data._laudioAudioContext.onCanplay(() => { if (_this.data.intervalLoadDuration) { return; } // 安卓要先play,再pause。。。。 _this.data._laudioAudioContext.volume = 0; _this.data._laudioAudioContext.play(); _this.data._laudioAudioContext.pause(); _this.data._laudioAudioContext.volume = 1; // 一般第一次获取不到。。。 _this.data.intervalLoadDuration = setInterval(() => { if (_this.data._laudioAudioContext.duration) { clearInterval(_this.data.intervalLoadDuration); console.log(_this.data._laudioAudioContext.duration) } }, 100); });
求解答,关于InnerAudioContext的duration音频长度获取不到问题?问题1:ios手机播放音频 无法获取总时长,安卓正常获取 [图片][图片] console.log('handleInitAudio.src:' + src); this.innerAudioContext.onPlay(() => { console.log('开始播放') this.innerAudioContext.duration; setTimeout(() => { const durationStr = this.parseTime(this.innerAudioContext.duration) console.log('onPlay播放总时长durationStr:' + durationStr); this.setData({ durationStr: durationStr }) console.log('onPlay播放总时长data.durationStr:' + this.data.durationStr); }, 1000) }) let that =this; this.innerAudioContext.onCanplay(() => { // 这是一个迷,据说要手动先触发这个属性,后面才能用setTimeout获取真实时长 let duration = that.innerAudioContext.duration; console.log(that.innerAudioContext); console.log('初始化播放总时长innerAudioContext.duration:' + duration); setTimeout(() => { const durationStr = that.parseTime(that.innerAudioContext.duration) console.log('播放总时长durationStr:' + durationStr); that.setData({ durationStr: durationStr }) console.log('播放总时长data.durationStr:' + that.data.durationStr); }, 1000) }) 问题2 :部分安卓手机无法播放音频
2022-07-28_this.data._laudioAudioContext.onCanplay(() => { if (_this.data.intervalLoadDuration) { return; } // 安卓要先play,再pause。。。。 _this.data._laudioAudioContext.volume = 0; _this.data._laudioAudioContext.play(); _this.data._laudioAudioContext.pause(); _this.data._laudioAudioContext.volume = 1; // 一般第一次获取不到。。。 _this.data.intervalLoadDuration = setInterval(() => { if (_this.data._laudioAudioContext.duration) { clearInterval(_this.data.intervalLoadDuration); console.log(_this.data._laudioAudioContext.duration) } }, 100); });
createInnerAudioContext希望在音频播放前获取到音频时长?希望在音频未播放前获取音频时长,目前测试在onCanplay回调中获取的audio.duration为0,在回调中延迟一秒获取的audio.duration开发工具显示正常,但偶尔也会是0,真机一直显示0,只有在播放后onCanplay回调中才能打印出音频时长 社区可以搜到很多类似问题最早到3月份,但现在一直未解决,希望微信重视下,在音频播放前获取到时长应该是有很多应用场景的 机型:mix2s 基础库:2.9.3 代码片段: https://developers.weixin.qq.com/s/ATLCeQmv7qci
2022-07-28_this.data._laudioAudioContext.onCanplay(() => { if (_this.data.intervalLoadDuration) { return; } // 安卓要先play,再pause。。。。 _this.data._laudioAudioContext.volume = 0; _this.data._laudioAudioContext.play(); _this.data._laudioAudioContext.pause(); _this.data._laudioAudioContext.volume = 1; // 一般第一次获取不到。。。 _this.data.intervalLoadDuration = setInterval(() => { if (_this.data._laudioAudioContext.duration) { clearInterval(_this.data.intervalLoadDuration); console.log(_this.data._laudioAudioContext.duration) } }, 100); });
InnerAudioContext 实例获取播放总时长问题我在页面初始的时候实例化 audioObj = wx.createInnerAudioContext 并且设置 src能够正常播放 但是我使用audio.duration 获取总时长0,但是播放1秒至2秒后才能够获取总时长, 这是小程序的bug? 能否在未播放之前获取到总时长,事件 onCanplay也无法获取 目前我用的是setTimeout 3秒后执行,但这个并不是一个优秀解决方案。还有其它的方案吗?在线求解
2022-07-28_this.data._laudioAudioContext.onCanplay(() => { if (_this.data.intervalLoadDuration) { return; } // 安卓要先play,再pause。。。。 _this.data._laudioAudioContext.volume = 0; _this.data._laudioAudioContext.play(); _this.data._laudioAudioContext.pause(); _this.data._laudioAudioContext.volume = 1; // 一般第一次获取不到。。。 _this.data.intervalLoadDuration = setInterval(() => { if (_this.data._laudioAudioContext.duration) { clearInterval(_this.data.intervalLoadDuration); console.log(_this.data._laudioAudioContext.duration) } }, 100); });
onCanPlay事件获取时长为0this.data.innerAudioContext.onCanplay(() => { // setTimeout(() => { console.log(this.data.innerAudioContext.duration); // }, 0) }) 输出来的是0
2022-07-28