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


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 相关文章推荐
jquery常用操作小结
Jul 21 Javascript
node.js中的fs.chown方法使用说明
Dec 16 Javascript
jQuery中last()方法用法实例
Jan 06 Javascript
浅谈javascript中的闭包
May 13 Javascript
轻松使用jQuery双向select控件Bootstrap Dual Listbox
Dec 13 Javascript
纯js实现倒计时功能
Jan 06 Javascript
常见的浏览器Hack技巧整理
Jun 29 Javascript
jQuery菜单实例(全选,反选,取消)
Aug 28 jQuery
JavaScript中Object基础内部方法图
Feb 05 Javascript
基于Vue2x的图片预览插件的示例代码
May 14 Javascript
antd Upload 文件上传的示例代码
Dec 14 Javascript
vue实现购物车案例
May 30 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
PHP5中的this,self和parent关键字详解教程
2007/03/19 PHP
用php或asp创建网页桌面快捷方式的代码
2010/03/23 PHP
用PHP写的一个冒泡排序法的函数简单实例
2016/05/26 PHP
PHP中Notice错误常见解决方法
2017/04/28 PHP
javascript jQuery $.post $.ajax用法
2008/07/09 Javascript
jquery中获得$.ajax()事件返回的值并添加事件的方法
2010/04/15 Javascript
javascript 中String.match()与RegExp.exec()的区别说明
2013/01/10 Javascript
js自动生成的元素与页面原有元素发生堆叠的解决方法
2014/09/04 Javascript
javascript DOM的详解及实例代码
2017/03/06 Javascript
iscroll动态加载数据完美解决方法
2017/07/18 Javascript
浅谈Express异步进化史
2017/09/09 Javascript
vue+element-ui动态生成多级表头的方法
2018/08/28 Javascript
ES6基础之数组和对象的拓展实例详解
2019/08/22 Javascript
在Webpack中用url-loader处理图片和字体的问题
2020/04/28 Javascript
JavaScript实现手机号码 3-4-4格式并控制新增和删除时光标的位置
2020/06/02 Javascript
vue中解决微信html5原生ios虚拟键返回不刷新问题
2020/10/20 Javascript
[40:48]DOTA2上海特级锦标赛D组败者赛 Liquid VS COL第二局
2016/02/28 DOTA
[01:01:29]2018DOTA2亚洲邀请赛 4.4 淘汰赛 VP vs Liquid 第一场
2018/04/05 DOTA
跟老齐学Python之玩转字符串(2)
2014/09/14 Python
举例讲解Python中的死锁、可重入锁和互斥锁
2015/11/05 Python
Python构建XML树结构的方法示例
2017/06/30 Python
python快速建立超简单的web服务器的实现方法
2018/02/17 Python
Python面向对象进阶学习
2019/05/21 Python
python交互模式下输入换行/输入多行命令的方法
2019/07/02 Python
关于python字符串方法分类详解
2019/08/20 Python
苹果美国官方商城:Apple美国
2016/08/24 全球购物
北京泡泡网网络有限公司.net面试题
2012/07/17 面试题
银行自荐信范文
2013/10/07 职场文书
中专自荐信
2013/10/13 职场文书
销售工作岗位职责
2013/12/24 职场文书
户外用品商店创业计划书
2014/01/29 职场文书
银行求职信
2014/05/31 职场文书
2014年党员学习“三严三实”思想汇报
2014/09/15 职场文书
高三英语复习计划
2015/01/19 职场文书
特种设备安全管理制度
2015/08/06 职场文书
Win11 21h2可以升级22h2吗?看看你的电脑符不符合要求
2022/07/07 数码科技