小程序
小游戏
企业微信
微信支付
扫描小程序码分享
innerAudioContext.onCanplay() 方法获取到的 duration 值为“只读”格式,请问怎么能取到 duration 值?
src 已经获取到。
3 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
播放中获取时长 大概就这么写,未播放前获取时长走服务端吧。你问的问题 要先自己搜索,百度或者社区内就能查到解决办法
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
需要调用两次方法获取 , 基本第二次就可以正常获取到值 ; 具体可以设置一个计时器 , 获取到值的时候我们再把计时器清除掉; 在InnerAudioContext .onCanplay()方法中进行操作获取;
/* 小程序特有相关 */ myaudio = wx.createInnerAudioContext(); myaudio.src = dataset.resource_path || dataset.path; //视频地址 myaudio.onCanplay(function getDuration() { let intervalID = setInterval(function() { if (myaudio.duration !== 0) { console.log(myaudio.duration,'测试') clearInterval(intervalID); } }, 500); })
// 预播放,每隔50ms获取一次音频时长 audioCtx.onCanplay(async () => { this.playAudio(); let duration = 0; await new Promise((resolve) => { const timer = setInterval(() => { if (Math.floor(audioCtx.duration) !== 0) { clearInterval(timer); resolve(1); }}, 50); }); this.pauseAudio(); duration = Math.floor(audioCtx.duration); this.audioStatus.duration = Math.max(1, duration); this.audioStatus.loaded = true; });
目前的方案是这样比较合理
https://www.jackchanel.top/
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
播放中获取时长 大概就这么写,未播放前获取时长走服务端吧。你问的问题 要先自己搜索,百度或者社区内就能查到解决办法
需要调用两次方法获取 , 基本第二次就可以正常获取到值 ; 具体可以设置一个计时器 , 获取到值的时候我们再把计时器清除掉; 在InnerAudioContext .onCanplay()方法中进行操作获取;
/* 小程序特有相关 */ myaudio = wx.createInnerAudioContext(); myaudio.src = dataset.resource_path || dataset.path; //视频地址 myaudio.onCanplay(function getDuration() { let intervalID = setInterval(function() { if (myaudio.duration !== 0) { console.log(myaudio.duration,'测试') clearInterval(intervalID); } }, 500); })
// 预播放,每隔50ms获取一次音频时长 audioCtx.onCanplay(async () => { this.playAudio(); let duration = 0; await new Promise((resolve) => { const timer = setInterval(() => { if (Math.floor(audioCtx.duration) !== 0) { clearInterval(timer); resolve(1); }}, 50); }); this.pauseAudio(); duration = Math.floor(audioCtx.duration); this.audioStatus.duration = Math.max(1, duration); this.audioStatus.loaded = true; });
目前的方案是这样比较合理
https://www.jackchanel.top/