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


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 相关文章推荐
innerHTML,outerHTML,innerTEXT三者之间的区别
Jan 28 Javascript
js网页侧边随页面滚动广告效果实现
Apr 14 Javascript
ASP.NET jQuery 实例1(在TextBox里面创建一个默认提示)
Jan 13 Javascript
JavaScript取得鼠标绝对位置程序代码介绍
Sep 16 Javascript
jquery实现弹出层效果实例
May 19 Javascript
基于jquery实现简单的手风琴特效
Nov 24 Javascript
JavaScript+html5 canvas绘制缤纷多彩的三角形效果完整实例
Jan 26 Javascript
详解angular element()方法使用
Apr 08 Javascript
使用angular帮你实现拖拽的示例
Jul 05 Javascript
template.js前端模板引擎使用详解
Oct 10 Javascript
JavaScript大数相加相乘的实现方法实例
Oct 18 Javascript
vue 数据遍历筛选 过滤 排序的应用操作
Nov 17 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
深入eAccelerator与memcached的区别详解
2013/06/06 PHP
php内嵌函数用法实例
2015/03/20 PHP
Yii框架表单模型和验证用法
2016/05/20 PHP
Laravel程序架构设计思路之使用动作类
2018/06/07 PHP
JAVASCRIPT  THIS详解 面向对象
2009/03/25 Javascript
JQuery 绑定事件时传递参数的实现方法
2009/10/13 Javascript
基于jquery的DIV随滚动条滚动而滚动的代码
2012/07/20 Javascript
JavaScript中的私有/静态属性介绍
2012/07/26 Javascript
JavaScript避免内存泄露及内存管理技巧
2014/09/05 Javascript
IE10中flexigrid无法显示数据的解决方法
2015/07/26 Javascript
异步JavaScript编程中的Promise使用方法
2015/07/28 Javascript
JQuery移动页面开发之屏幕方向改变与滚屏的实现
2015/12/03 Javascript
深入理解JavaScript单体内置对象
2016/06/06 Javascript
各式各样的导航条效果css3结合jquery代码实现
2016/09/17 Javascript
在Web项目中引入Jquery插件报错的完美解决方案(图解)
2016/09/19 Javascript
简单三步实现报表页面集成天气
2016/12/15 Javascript
JS填写银行卡号每隔4位数字加一个空格
2016/12/19 Javascript
js中DOM三级列表(代码分享)
2017/03/20 Javascript
vue-lazyload使用总结(推荐)
2018/11/01 Javascript
javascript(基于jQuery)实现鼠标获取选中的文字示例【测试可用】
2019/10/26 jQuery
Openlayers实现图形绘制
2020/09/28 Javascript
Python 执行字符串表达式函数(eval exec execfile)
2014/08/11 Python
在Django框架中编写Contact表单的教程
2015/07/17 Python
编写Python脚本抓取网络小说来制作自己的阅读器
2015/08/20 Python
Python3学习笔记之列表方法示例详解
2017/10/06 Python
HTML5 Plus 实现手机APP拍照或相册选择图片上传功能
2016/07/13 HTML / CSS
美国Randolph太阳镜官网:美国制造的飞行员太阳镜和射击眼镜
2018/06/15 全球购物
职业生涯规划书结束语
2014/04/15 职场文书
服装设计师求职信
2014/06/04 职场文书
2014年旅游局法制宣传日活动总结
2014/11/01 职场文书
优秀教师个人总结
2015/02/11 职场文书
电影地道战观后感
2015/06/04 职场文书
大学生读书笔记范文
2015/07/01 职场文书
KTV员工管理制度
2015/08/06 职场文书
女性励志书籍推荐
2019/08/19 职场文书
解决SpringCloud Feign传对象参数调用失败的问题
2021/06/23 Java/Android