如何在音频不播放前,获取音频时长duration
发布于 6 年前 作者 yujie 19397 次浏览 来自 问答

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

7 回复

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

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

updateTime: function() {

    let _this = this;

    setTimeout(function(){

        let duration = innerAudioContext.duration;

        if (duration == 0) {

            _this.updateTime();

        } else {

            //

        }

    },100);

}

innerAudioContext.onCanplay(this.updateTime);

这样可以获取到

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

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

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

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

const innerAudioContext = wx.createInnerAudioContext()

innerAudioContext.autoplay = true

innerAudioContext.src = ‘https:xxxx.mp3’

var a = innerAudioContext.duration

console.log(a)

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

回到顶部