Taro(React+TS)基于InnerAudioContext封装一个基本的音频组件(uni-app(vue)后续更新)
为什么要封装一个音频组件
主要因为微信小程序官方的audio
不维护了,并且在很多iOS
真机上确实也存在点击无法播放,总时长不显示等问题.
音频组件的要求与限制
- 点击播放或者暂停
- 显示播放进度及总时长
- 通过图标变化显示当前音频所处状态(暂停/播放/加载中)
- 页面音频更新时刷新组件状态
- 全局有且只有一个音频处于播放状态
- 离开页面之后要自动停止播放并销毁音频实例
材料:
icon_loading.gif
icon_playing.png
icon_paused.png
InnerAudioContext提供的属性和方法
属性:
stringsrc
: 音频资源的地址,用于直接播放。
bumberstartTime
: 开始播放的位置(单位:s),默认为 0
booleanautoplay
: 是否自动开始播放,默认为false
booleanloop
: 是否循环播放,默认为false
numbervolume
: 音量。范围 0~1。默认为 1
numberplaybackRate
: 播放速度。范围 0.5-2.0,默认为 1。(Android 需要 6 及以上版本)
numberduration
: 当前音频的长度(单位 s)。只有在当前有合法的 src 时返回(只读)
numbercurrentTime
: 当前音频的播放位置(单位 s)。只有在当前有合法的 src 时返回,时间保留小数点后 6 位(只读)
booleanpaused
: 当前是是否暂停或停止状态(只读)
numberbuffered
: 音频缓冲的时间点,仅保证当前播放时间点到此时间点内容已缓冲(只读)
方法:
play()
: 播放pause()
: 暂停。暂停后的音频再播放会从暂停处开始播放stop()
: 停止。停止后的音频再播放会从头开始播放。seek(postions: number)
:跳转到指定位置destory()
: 销毁当前实例onCanplay(callback)
: 监听音频进入可以播放状态的事件。但不保证后面可以流畅播放offCanplay(callback)
: 取消监听音频进入可以播放状态的事件onPlay(callback)
: 监听音频播放事件offPlay(callback)
: 取消监听音频播放事件onPause(callback)
: 监听音频暂停事件offPause(callback)
: 取消监听音频暂停事件onStop(callback)
: 监听音频停止事件offStop(callback)
: 取消监听音频停止事件onEnded(callback)
: 监听音频自然播放至结束的事件offEnded(callback)
: 取消监听音频自然播放至结束的事件onTimeUpdate(callback)
: 监听音频播放进度更新事件offTimeUpdate(callback)
: 取消监听音频播放进度更新事件onError(callback)
: 监听音频播放错误事件offError(callbcak)
: 取消监听音频播放错误事件onWaiting(callback)
: 监听音频加载中事件。当音频因为数据不足,需要停下来加载时会触发offWaiting(callback)
: 取消监听音频加载中事件onSeeking(callback)
: 监听音频进行跳转操作的事件offSeeking(callback)
: 取消监听音频进行跳转操作的事件onSeeked(callback)
: 监听音频完成跳转操作的事件offSeeked(callback)
: 取消监听音频完成跳转操作的事件
让我们开始吧
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
你这发错区了吧,这里发的是提问,文章应该发自己专栏里的