收藏
回答

求解答,关于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 :部分安卓手机无法播放音频


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

3 个回答

  • 彦斌
    彦斌
    2020-10-29

    是有BUG,可以试下

    const audioContext = wx.createInnerAudioContext();
    const loadDuration = function () {
         setTimeout(() => {
            if (audioContext.duration === 0) {
                loadDuration();
             } else {
                // 获取到正确的duration
             }
         }, 100);
    };
    audioContext.onCanplay(loadDuration);
    
    2020-10-29
    有用
    回复
  • 吃鱼先生
    吃鱼先生
    2020-08-20

    试试创建一个临时的innerAudioContext

    然后播放这个音频文件

    然后就能在onTimeUpdate里拿到时长了

    最后记得停止播放录音并且销毁这个临时的innerAudioContext

    2020-08-20
    有用
    回复
  • 刘志远
    刘志远
    2020-08-20

    试下放在onCanPlay的回调里读取duration

    2020-08-20
    有用
    回复 1
    • Mr.Dolphin
      Mr.Dolphin
      2020-08-20
      上面的写法不是在onCanplay的回调里吗?那应该怎么写
      2020-08-20
      回复
登录 后发表内容
问题标签