收藏
回答

InnerAudioContext 安卓下获取不到duration,获取出来全是0

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 Bug InnerAudioContext 微信安卓客户端 最新 最新

问题如题,此问题存在至少一年以上,论坛全是问这个,都是问要代码片段就没有然后了,别问我要代码片段了,论坛里到处都是,这bug就解决不了了吗?

回答关注问题邀请回答
收藏

16 个回答

  • 彦斌
    彦斌
    2020-10-29
    const audioContext = wx.createInnerAudioContext();
    const loadDuration = function () {
         setTimeout(() => {
            if (audioContext.duration === 0) {
                loadDuration();
             } else {
                // 获取到正确的duration
             }
         }, 100);
    };
    audioContext.onCanplay(loadDuration);
    
    2020-10-29
    有用
    回复 1
    • 高启伟
      高启伟
      2023-10-13
      好使  目前看下来是最方便的 🐂🍺
      2023-10-13
      回复
  • Harry🐼🐼
    Harry🐼🐼
    2020-10-24

    我也遇到了,这就是微信的BUG。 试过很多种办法都不行

    2020-10-24
    有用
    回复
  • 2020-10-22

    我的做法是,数据库增加一个音频时长的字段,在播放前直接赋值到给自定义的播放器

    2020-10-22
    有用
    回复
  • 大锣鼓
    大锣鼓
    2020-10-19

    音频播放时间在10s之前,获取不到duration值。

    const app = getApp()
    const audioBk = wx.createInnerAudioContext(); // 创建音频播放对象
    Page({
      data: {
        m:0,
        curM:0,
      },
      onLoadfunction () {
        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({
            curMMath.floor(audioBk.currentTime)
          });
        });
      },
      seekTap:function(e){
        let m = parseInt(e.currentTarget.dataset.m);
        this.setData({m:m});
        audioBk.seek(m);
      },
    })
    
    
    
    2020-10-19
    有用
    回复
  • Cjiang
    Cjiang
    2020-07-15

    麻烦试一下这个代码片段:https://developers.weixin.qq.com/s/8JFSnRmy76iU,看能不能复现,这边这个安卓手机可以获取到这个duration不为0


    2020-07-15
    有用
    回复 13
    • 大壞蛋
      大壞蛋
      2020-07-15
      试过了,相关的帖子我都挨个看了
      2020-07-15
      回复
    • 大壞蛋
      大壞蛋
      2020-07-15
      上是我代码和控制台输出,论坛里的相关帖子很多,去年就有人问了,都是要代码片段然后就没有然后了,次代码iOS下可以,安卓就是不行
      2020-07-15
      回复
    • Cjiang
      Cjiang
      2020-07-16回复大壞蛋
      麻烦提供一下具体的机型,微信版本号,基础库的版本号。
      2020-07-16
      回复
    • Cjiang
      Cjiang
      2020-07-16
      可以用存在问题的机型扫一下下面的二维码
      2020-07-16
      回复
    • 大壞蛋
      大壞蛋
      2020-07-16
      2020-07-16
      回复
    查看更多(8)
  • 浪花骑士
    浪花骑士
    2020-07-15

    试试这么写?

    innerAudioContext.onCanplay(function get_duration() {
      if (innerAudioContext.duration) {
        // 做你想做的事情
          console.log(innerAudioContext.duration)
      } else {
        setTimeout(get_duration, 0)
      }
    })
    


    2020-07-15
    有用
    回复 1
    • 大壞蛋
      大壞蛋
      2020-07-15
      试过了,安卓不行
      2020-07-15
      回复

正在加载...

登录 后发表内容
问题标签