微信小程序获取音频时长与实时获取播放进度问题


Posted in Javascript onAugust 28, 2018

首先在没有播放音频之前,居然拿不到总时长

但是在播放之后也需要设置setTimeout来获取

所以在监听音频播放进度更新事件中获取。顺便获取当前播放进度

按照官方的写法

audioPlayed: function () {
  myAudio.play()
  setTieout(() => {
    myAudio.onTimeUpdate(() => {
      console.log(myAudio.duration)  //总时长
      console.log(myAudio.currentTime)  //当前播放进度
    })
  }, 500)
}

但是这两个console都没有触发,很是神奇

增加延迟的时间也没有用

打断点都没有进去

但是!

audioPlayed: function () {
  myAudio.play()
  setTieout(() => {
    myAudio.currentTime
    myAudio.onTimeUpdate(() => {
      console.log(myAudio.duration)  //总时长
      console.log(myAudio.currentTime)  //当前播放进度
    })
  }, 500)
}

在里面写了一个

myAudio.currentTime  或者   myAudio.duration

断点就进去了,console也出来了

由于过于神奇,所以记录一下

下面看下微信小程序音频长度获取的问题

小程序推荐使用wx.createInnerAudioContext()创建的innerAudioContext,我们也通过这个接口创建音频。

音频的长度可以通过属性获取:

微信小程序获取音频时长与实时获取播放进度问题

但是,给innerAudioContext赋值src后就能获取吗,请看下面的例子:

onLoad: function () {
    bgM = wx.createInnerAudioContext();
    bgM.src = 'https://upyun.lesson.bbwansha.com/dub/user/2.mp3';
    console.log(bgM.duration);//0
    bgM.onCanplay(()=>{
       console.log(bgM.duration)//0
    })
    bgM.play();
    bgM.onPlay(()=>{
       console.log(bgM.duration)//0
    })
    setTimeout(()=>{
      console.log(bgM.duration)//2.795102
    },1000)
},

赋值结束后不能获取能够理解,在onCanplay,onPlay没法获取有点难以理解。

还好,我们通过setTimeout可以获取到。

获取到之后,还有个问题,在开发工具里,音频播放完之后,duration不变。

偶尔出现的问题:但在真机上,duration变为0了,也就是第二遍播放的时候,获取不到duration了。这个可以声明个个变量解决。

总结

以上所述是小编给大家介绍的微信小程序获取音频时长与实时获取播放进度问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
ExtJs3.0中Store添加 baseParams 的Bug
Mar 10 Javascript
Jquery Ajax解析XML数据(同步及异步调用)简单实例
Feb 12 Javascript
javascript+html5实现绘制圆环的方法
Jul 28 Javascript
网页挂马方式整理及详细介绍
Nov 03 Javascript
JavaScript如何一次性展示几万条数据
Mar 30 Javascript
JavaScript设计模式之代理模式详解
Jun 09 Javascript
js自定义trim函数实现删除两端空格功能
Feb 09 Javascript
vue实现密码显示隐藏切换功能
Feb 23 Javascript
vue init webpack myproject构建项目 ip不能访问的解决方法
Mar 20 Javascript
详解滑动穿透(锁body)终极探索
Apr 16 Javascript
原生js代码能实现call和bind吗
Jul 31 Javascript
微信小程序用户授权最佳实践指南
May 08 Javascript
vue表单自定义校验规则介绍
Aug 28 #Javascript
vue+axios+mock.js环境搭建的方法步骤
Aug 28 #Javascript
Vue实现用户自定义字段显示数据的方法
Aug 28 #Javascript
浅谈VUE单页应用首屏加载速度优化方案
Aug 28 #Javascript
浅谈redux以及react-redux简单实现
Aug 28 #Javascript
Vue封装的可编辑表格插件方法
Aug 28 #Javascript
JavaScript使用递归和循环实现阶乘的实例代码
Aug 28 #Javascript
You might like
ThinkPHP中URL路径访问与模块控制器之间的关系
2014/08/23 PHP
基于Swoole实现PHP与websocket聊天室
2016/08/03 PHP
ThinkPHP实现登录退出功能
2017/06/29 PHP
js 遍历对象的属性的代码
2011/12/29 Javascript
关于jQuery UI 使用心得及技巧
2012/10/10 Javascript
js和html5实现手机端刮刮卡抽奖效果完美兼容android/IOS
2013/11/18 Javascript
jQuery自带的一些常用方法总结
2014/09/03 Javascript
javascript中的Base64、UTF8编码与解码详解
2015/03/18 Javascript
js模仿php中strtotime()与date()函数实现方法
2015/08/11 Javascript
jQuery中借助deferred来请求及判断AJAX加载的实例讲解
2016/05/24 Javascript
jquery按回车键实现表单提交的简单实例
2016/05/25 Javascript
详解jQuery简单的表格应用
2016/12/16 Javascript
canvas绘制万花筒效果(代码分享)
2017/01/20 Javascript
nodejs个人博客开发第三步 载入页面
2017/04/12 NodeJs
微信小程序授权获取用户详细信息openid的实例详解
2017/09/20 Javascript
jQuery实现手机号正则验证输入及自动填充空格功能
2018/01/02 jQuery
详解JS实现简单的时分秒倒计时代码
2019/04/25 Javascript
解决layui数据表格排序图标被超出的表头挤出去的问题
2019/09/19 Javascript
vue基于v-charts封装双向条形图的实现代码
2019/12/09 Javascript
Python实现抓取百度搜索结果页的网站标题信息
2015/01/22 Python
numpy自动生成数组详解
2017/12/15 Python
微信跳一跳python代码实现
2018/01/05 Python
pytorch permute维度转换方法
2018/12/14 Python
Python3.5面向对象程序设计之类的继承和多态详解
2019/04/24 Python
使用python实现kNN分类算法
2019/10/16 Python
浅谈对pytroch中torch.autograd.backward的思考
2019/12/27 Python
python GUI库图形界面开发之PyQt5滑块条控件QSlider详细使用方法与实例
2020/02/28 Python
解决在keras中使用model.save()函数保存模型失败的问题
2020/05/21 Python
英国奢侈皮具品牌:Aspinal of London
2018/09/02 全球购物
威尔逊皮革:Wilsons Leather
2018/12/07 全球购物
恶意软件的定义
2014/11/12 面试题
为什么需要版本控制?
2013/08/08 面试题
学雷锋志愿者活动方案
2014/08/21 职场文书
祝寿主持词
2015/07/02 职场文书
USB TYPE-C 或将成为所有智能手机充电标准
2022/04/21 数码科技
什么是css原子化,有什么用?
2022/04/24 HTML / CSS