小程序wx.createInnerAudioContext()获取不到时长问题

时间: 2018-11-08阅读: 787标签: 小程序

最近在开发小程序中,需要用到音频播放功能。但在初始化时,使用InnerAudioContext.duration获取不到音频的时长。

Page({
 /**
  * 生命周期函数--监听页面初次渲染完成
  */
  onReady: function () {
    // 创建一个audio
    this.innerAudioContext = wx.createInnerAudioContext();
    // 设置audio的资源地址
    this.innerAudioContext.src = 'http://ws.stream.qqmusic.qq.com/M500001VfvsJ21xFqb.mp3?guid=ffffffff82def4af4b12b3cd9337d5e7&uin=346897220&vkey=6292F51E1E384E06DCBDC9AB7C49FD713D632D313AC4858BACB8DDD29067D3C601481D36E62053BF8DFEAF74C0A5CCFADD6471160CAF3E6A&fromtag=46';  
    // 直接获取时长,获取到的为0
    console.log(this.innerAudioContext.duration); // 0
    // 延时获取时长,获取到的还是0
    setTimeout(()=> {
      console.log(this.innerAudioContext.duration); // 0
    }, 1000);
  }
})


解决方法

1.使用innerAudioContext.onPlay()监听播放获取时长,此方法用于播放音频后获取

Page({
/**
 * 生命周期函数--监听页面初次渲染完成
 */
 onReady: function () {
   // 创建一个audio
   this.innerAudioContext = wx.createInnerAudioContext();
   // 设置audio的资源地址
   this.innerAudioContext.src = 'http://ws.stream.qqmusic.qq.com/M500001VfvsJ21xFqb.mp3?guid=ffffffff82def4af4b12b3cd9337d5e7&uin=346897220&vkey=6292F51E1E384E06DCBDC9AB7C49FD713D632D313AC4858BACB8DDD29067D3C601481D36E62053BF8DFEAF74C0A5CCFADD6471160CAF3E6A&fromtag=46';  
   // 监听音频播放事件
   this.innerAudioContext.onPlay(() => {
     // 可以获取到音频时长
     console.log(this.innerAudioContext.duration); // 401.475918
   });
 }
})


2.使用innerAudioContext.onCanplay()监听音频进入可以播放状态,此方法用于初始化时获取。

Page({
 /**
  * 生命周期函数--监听页面初次渲染完成
  */
  onReady: function () {
    // 创建一个audio
    this.innerAudioContext = wx.createInnerAudioContext();
    // 设置audio的资源地址
    this.innerAudioContext.src = 'http://ws.stream.qqmusic.qq.com/M500001VfvsJ21xFqb.mp3?guid=ffffffff82def4af4b12b3cd9337d5e7&uin=346897220&vkey=6292F51E1E384E06DCBDC9AB7C49FD713D632D313AC4858BACB8DDD29067D3C601481D36E62053BF8DFEAF74C0A5CCFADD6471160CAF3E6A&fromtag=46';  
    // 监听音频进入可以播放状态的事件
    this.innerAudioContext.onCanplay(()=> {
      // 必须。可以当做是初始化时长
      this.innerAudioContext.duration;
      // 必须。不然也获取不到时长
      setTimeout(() => {
        console.log(this.innerAudioContext.duration); // 401.475918
      }, 1000)
    })  
  }
})


原文来源:https://segmentfault.com/a/1190000016952617


小程序 wepy框架 + iview-weapp的用法

最近在弄wepy的时候在想有没有什么ui比较合适一点的wepy的,也是在网上看了好久发现iview还不错。引用简单,上手超快,组件绚丽!当然,这里还介绍下微信官方建议的框架也是和不错的,有需要的可以看看

小程序自定义tabbar占位问题

针对于小程序中自定义tabbar问题,有多种自定义方式。其中之一就是需要将原先系统自带的tabbar隐藏,调用,就是在小程序底部原先放置tabbar的内容会出现空白,仍然会出现占位问题。

微信小程序开发早知道

小程序没有跳转公众号、跳转公众号图文素材的能力。除非用户通过扫描二维码进入小程序的情景,可以显示关注公众号组件。公众号菜单、公众号图文素材可以打开小程序,网页无法直接打开小程序。

小程序多端框架全面测评

最近前端届多端框架频出,相信很多有代码多端运行需求的开发者都会产生一些疑惑:这些框架都有什么优缺点?到底应该用哪个?作为 Taro 开发团队一员,笔者想在本文尽量站在一个客观公正的角度去评价各个框架的选型和优劣。

优雅解决微信小程序授权登录需要button触发

聊一聊最近的一个项目,这个项目是一个收书、售书的小程序,有商城、专栏、信息发布论坛等功能。虽然不是面向所有用户,但要求无论用户是否授权都皆可使用,但同时也要求部分功能对不授权的用户限制开放。

支付宝小程序个人开发者,但暂未开放支付接口

支付宝小程序今日正式面向个人开发者开放公测。这是继微信之后,业内第2家面向个人开发者开放的小程序平台。有开发能力的个人用户可访问支付宝小程序平台,扫码验证个人身份以后即可开始支付宝小程序账号申请并进行代码开发。

小程序wxs中的时间格式化以及格式化时间和date时间互转

WXS(WeiXin Script)是小程序的一套脚本语言,wxs 与 javascript 是不同的语言,有自己的语法,并不和 javascript 一致。其中包括了很多日常使用的javascript函数,在wxs中都是不能同样使用的。

微信小程序中清除定时器

在微信小程序的开发过程中,经常会遇到使用倒计时的情况,但是小程序的页面跳转经常会遇到跳转的下一个页面后,前一个页面的倒计时还在运行。这时候需要我们在关闭或者离开当前页面的时候清除掉当前的倒计时,但是传统的方式在小程序中无法使用,在小程序中我采用的是赋值然后清除的方法。

在微信小程序中保存网络图片

在小程序的文档中我们得知,wx.saveImageToPhotosAlbum 是用来保存图片到相册的。 但是仔细一看会发现这个接口的filePath参数只接受临时文件路径或永久文件路径,不支持网络图片路径,意味着我们不能直接调用这个接口。

个人怎么做微信小程序

据说移动互联网的轻量级应用是微信applet。简而言之,applet是基于微信平台的应用程序。目前,小方案的主题非常重要。它通知主要媒体和新闻,以及小程序如何打开。它也在增加,甚至个人也可以开发它

内容以共享、参考为目的,请勿用于商业用途。其版权归原作者所有,如有侵权,请与小编联系,情况属实将予以删除!

广告赞助文章投稿关于web前端网站点搜索站长推荐网站地图站长QQ:522607023

小程序专栏: 土味情话心理测试脑筋急转弯幽默笑话段子句子语录成语大全