收藏
回答

如何在音频不播放前,获取音频时长duration

问题模块
API和组件

我现在可以在接口返回数据中拿到音频地址,如何在音频不播放前获取到时长呢,求解答,(我想在进入页面就把时长渲染到页面上)

最后一次编辑于  2017-12-19  (未经腾讯允许,不得转载)
邀请回答
复制链接收藏关注问题回答

10 个回答

  • 刘畅
    刘畅
    2017-12-26

    不要质疑我们看文档的能力,按照楼主的意思,在播放之前获取音频长度,目前没有能实现的方法。

    innerAudioContext.onCanplay(() => {
            console.log('音频对象:', innerAudioContext);
            console.log('时长:', innerAudioContext.duration);
        })
        innerAudioContext.onTimeUpdate(() => {
            console.log('进度更新', innerAudioContext)
            console.log('时长:', innerAudioContext.duration);
        })
        innerAudioContext.onPlay(() => {
            console.log('开始播放', innerAudioContext)
            console.log('时长:', innerAudioContext.duration);
        })
        innerAudioContext.onStop(() => {
            console.log('停止播放', innerAudioContext)
            console.log('时长:', innerAudioContext.duration);
        })
        innerAudioContext.onError((res) => {
            console.log(res.errMsg)
            console.log(res.errCode)
        })


    只有onTimeUpdate  和  onStop  可以获取到时长,其他事件里面获取到的都是0

    2017-12-26
    赞同 11
    回复
  • Bat
    Bat
    2018-04-19

    updateTime: function() {

        let _this = this;

        setTimeout(function(){

            let duration = innerAudioContext.duration;


            if (duration == 0) {

                _this.updateTime();

            } else {

                //

            }

        },100);

    }

    innerAudioContext.onCanplay(this.updateTime);


    这样可以获取到

    2018-04-19
    赞同 11
    回复
  • 邓坤力
    邓坤力
    2017-12-20

    请参阅文档 wx.createInnerAudioContext: https://mp.weixin.qq.com/debug/wxadoc/dev/api/createInnerAudioContext.html


    2017-12-20
    赞同
    回复 2
    • Anx&
      Anx&
      2018-05-17
      文档中描述的行为不符合实际表现
      2018-05-17
      赞同 33
      回复
    • ZippE
      ZippE
      05-10

      请官方试一下好吧

      05-10
      赞同
      回复
  • The-fighter-
    The-fighter-
    2017-12-20

    你好,主要是我使用该方法后,时长为0.

    const innerAudioContext = wx.createInnerAudioContext()

    innerAudioContext.autoplay = true

    innerAudioContext.src = 'https:xxxx.mp3'

    var a = innerAudioContext.duration

    console.log(a)

    打印a为0,这是怎么回事,求解答


    2017-12-20
    赞同
    回复
  • The-fighter-
    The-fighter-
    2017-12-20

    该接口只有在播放的时候才能拿到音频时长吗

    2017-12-20
    赞同
    回复
  • The-fighter-
    The-fighter-
    2017-12-26

    好的,谢谢解答,我这边现在是在录音的时候,把时长传到后台了,等到请求的时候,可以直接拿到时长并赋值

    2017-12-26
    赞同
    回复
  • Anna Lu夜战八方哒叭将
    Anna Lu夜战八方哒叭将
    04-12

    哎我也需要这个。。。但是我也没有找到。。。

    04-12
    赞同
    回复 1
    • The-fighter-
      The-fighter-
      07-16
      录音的时候把时长传给后台,等展示的时候,时长在返回来就行了
      07-16
      赞同 11
      回复