小程序
小游戏
企业微信
微信支付
扫描小程序码分享
问题如题,此问题存在至少一年以上,论坛全是问这个,都是问要代码片段就没有然后了,别问我要代码片段了,论坛里到处都是,这bug就解决不了了吗?
16 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
const audioContext = wx.createInnerAudioContext(); const loadDuration = function () { setTimeout(() => { if (audioContext.duration === 0) { loadDuration(); } else { // 获取到正确的duration } }, 100); }; audioContext.onCanplay(loadDuration);
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
我也遇到了,这就是微信的BUG。 试过很多种办法都不行
我的做法是,数据库增加一个音频时长的字段,在播放前直接赋值到给自定义的播放器
音频播放时间在10s之前,获取不到duration值。
const app = getApp() const audioBk = wx.createInnerAudioContext(); // 创建音频播放对象 Page({ data: { m:0, curM:0, }, onLoad: function () { audioBk.onCanplay(function(){ setTimeout(function(){ console.log("播放就绪!:",audioBk.duration); }, 500); //这里设置延时1秒获取 }); }, playMusic:function(){ var that = this; audioBk.src = "***"; audioBk.play(); audioBk.onTimeUpdate(function(e){ console.log("音频总时长:",audioBk.duration) console.log("当前播放时间",audioBk.currentTime) that.setData({ curM: Math.floor(audioBk.currentTime) }); }); }, seekTap:function(e){ let m = parseInt(e.currentTarget.dataset.m); this.setData({m:m}); audioBk.seek(m); }, })
麻烦试一下这个代码片段:https://developers.weixin.qq.com/s/8JFSnRmy76iU,看能不能复现,这边这个安卓手机可以获取到这个duration不为0
audioCtx.onCanplay(function get_duration() {
console.warn("获取时长", audioCtx.duration);
if (this.timer)
clearTimeout(this.timer);
if (audioCtx.duration>0) {
} else {
this.timer = setTimeout(get_duration, 1000)
}
})
试试这么写?
innerAudioContext.onCanplay(function get_duration() { if (innerAudioContext.duration) { // 做你想做的事情 console.log(innerAudioContext.duration) } else { setTimeout(get_duration, 0) } })
正在加载...
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
const audioContext = wx.createInnerAudioContext(); const loadDuration = function () { setTimeout(() => { if (audioContext.duration === 0) { loadDuration(); } else { // 获取到正确的duration } }, 100); }; audioContext.onCanplay(loadDuration);
我也遇到了,这就是微信的BUG。 试过很多种办法都不行
我的做法是,数据库增加一个音频时长的字段,在播放前直接赋值到给自定义的播放器
音频播放时间在10s之前,获取不到duration值。
const app = getApp() const audioBk = wx.createInnerAudioContext(); // 创建音频播放对象 Page({ data: { m:0, curM:0, }, onLoad: function () { audioBk.onCanplay(function(){ setTimeout(function(){ console.log("播放就绪!:",audioBk.duration); }, 500); //这里设置延时1秒获取 }); }, playMusic:function(){ var that = this; audioBk.src = "***"; audioBk.play(); audioBk.onTimeUpdate(function(e){ console.log("音频总时长:",audioBk.duration) console.log("当前播放时间",audioBk.currentTime) that.setData({ curM: Math.floor(audioBk.currentTime) }); }); }, seekTap:function(e){ let m = parseInt(e.currentTarget.dataset.m); this.setData({m:m}); audioBk.seek(m); }, })
麻烦试一下这个代码片段:https://developers.weixin.qq.com/s/8JFSnRmy76iU,看能不能复现,这边这个安卓手机可以获取到这个duration不为0
audioCtx.onCanplay(function get_duration() {
console.warn("获取时长", audioCtx.duration);
if (this.timer)
clearTimeout(this.timer);
if (audioCtx.duration>0) {
console.warn("获取时长", audioCtx.duration);
} else {
this.timer = setTimeout(get_duration, 1000)
}
})
试试这么写?
innerAudioContext.onCanplay(function get_duration() { if (innerAudioContext.duration) { // 做你想做的事情 console.log(innerAudioContext.duration) } else { setTimeout(get_duration, 0) } })