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


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 相关文章推荐
js canvas仿支付宝芝麻信用分仪表盘
Nov 16 Javascript
Html中 IFrame的用法及注意点
Dec 22 Javascript
理解javascript中的闭包
Jan 11 Javascript
微信小程序实战之自定义toast(6)
Apr 18 Javascript
jQury Ajax使用Token验证身份实例代码
Sep 22 Javascript
微信小程序scroll-x失效的完美解决方法
Jul 18 Javascript
一个Vue视频媒体多段裁剪组件的实现示例
Aug 09 Javascript
Vue.js 中的 v-show 指令及用法详解
Nov 19 Javascript
vue实现的树形结构加多选框示例
Feb 02 Javascript
vue缓存的keepalive页面刷新数据的方法
Apr 23 Javascript
9种方法优化jQuery代码详解
Feb 04 jQuery
js+css3实现炫酷时钟
Aug 18 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
关于PHP二进制流 逐bit的低位在前算法(详解)
2013/06/13 PHP
php常用图片处理类
2016/03/16 PHP
Thinkphp 中 distinct 的用法解析
2016/12/14 PHP
Jquery Change与bind事件代码
2011/09/29 Javascript
jQuery内置的AJAX功能和JSON的使用实例
2014/07/27 Javascript
JS使用ajax从xml文件动态获取数据显示的方法
2015/03/24 Javascript
javascript模拟php函数in_array
2015/04/27 Javascript
JS动态插入并立即执行回调函数的方法
2016/04/21 Javascript
selenium 与 chrome 进行qq登录并发邮件操作实例详解
2017/04/06 Javascript
JSON 数据格式详解
2017/09/13 Javascript
create-react-app修改为多页面支持的方法
2018/05/17 Javascript
layui2.0使用table+laypage实现真分页
2019/07/27 Javascript
Vue数字输入框组件示例代码详解
2020/01/15 Javascript
JavaScript 函数用法详解【函数定义、参数、绑定、作用域、闭包等】
2020/05/12 Javascript
JS array数组检测方式解析
2020/05/19 Javascript
如何在vue 中引入使用jquery
2020/11/10 jQuery
跟老齐学Python之编写类之四再论继承
2014/10/11 Python
python检查指定文件是否存在的方法
2015/07/06 Python
用Python抢过年的火车票附源码
2015/12/07 Python
对变量赋值的理解--Pyton中让两个值互换的实现方法
2017/11/29 Python
Python实现获取前100组勾股数的方法示例
2018/05/04 Python
Django框架登录加上验证码校验实现验证功能示例
2019/05/23 Python
django创建简单的页面响应实例教程
2019/09/06 Python
Python3的unicode编码转换成中文的问题及解决方案
2019/12/10 Python
Python文本处理简单易懂方法解析
2019/12/19 Python
TensorFlow自定义损失函数来预测商品销售量
2020/02/05 Python
python实现opencv+scoket网络实时图传
2020/03/20 Python
python3通过udp实现组播数据的发送和接收操作
2020/05/05 Python
Python使用paramiko连接远程服务器执行Shell命令的实现
2021/03/04 Python
英国的屈臣氏:Boots博姿
2017/12/23 全球购物
说出数据连接池的工作机制是什么?
2013/04/19 面试题
工伤私了协议书范本
2014/11/24 职场文书
公务员个人总结
2015/02/12 职场文书
创业计划书之水果店
2019/07/18 职场文书
Python中X[:,0]和X[:,1]的用法
2021/05/10 Python
教你使用TensorFlow2识别验证码
2021/06/11 Python