当前位置: 首页 > news >正文

『从零开始学小程序』媒体组件audio组件

👨‍🎓作者简介:一位喜欢写作,计科专业大二菜鸟

🏡个人主页:starry陆离

如果文章有帮到你的话记得点赞👍+收藏💗支持一下哦

『从零开始学小程序』媒体组件audio组件

  • 1.简介
  • 2.audio组件
  • 3.AudioContext
  • 4.InnerAudioContext

多媒体包括音频、视频和相机等,为了更好地在小程序中使用这些多媒体功能,微信官方也为开发者提供了一系列多媒体组件和API接口。多媒体组件如下所示:

  • video组件:视频组件
  • camera组件:相机组件
  • audio组件:音频组件
  • image组件:图片组件

1.简介

audio组件:音频组件。在页面插入一段音频或者播放音乐有3种处理方法。

  1. 简单的插入audio组件,并利用组件的属性控制播放
  2. 利用AudioContext类,通过指定方法获取实例
  3. 使用功能最全的InnerAudioContext

下面我们来一一了解三种方法的使用。不过在基础库1.6.0版本之后就不再维护前两种方法了,我们实际开发还是用第三种InnerAudioContext

2.audio组件

首先来看看audio组件常见的属性:

属性类型默认值必填说明
idstringaudio 组件的唯一标识符
srcstring要播放音频的资源地址
loopbooleanfalse是否循环播放
controlsbooleanfalse是否显示默认控件
posterstring默认控件上的音频封面的图片资源地址,如果 controls 属性值为 false 则设置 poster 无效
namestring未知音频默认控件上的音频名字,如果 controls 属性值为 false 则设置 name 无效
authorstring未知作者默认控件上的作者名字,如果 controls 属性值为 false 则设置 author 无效
<!-- audio.wxml -->
<audio author="Taylor Swift" name="Gorgeous" 
poster="https://636c-cloud1-0gq03z948cf60a2f-1313616796.tcb.qcloud.la/111111.png?sign=9d6db5733a31686af7132b981d4e9c88&t=1663494912"
src="https://636c-cloud1-0gq03z948cf60a2f-1313616796.tcb.qcloud.la/Gorgeous%20-%20Taylor%20Swift.mp3?sign=1bc3a85378f63986bbf6f8cbe8f032e9&t=1663494659" 
id="myAudio" controls loop 
bindplay="funPlay"
bindpause="funPause"
></audio>
// audio.js
Page({
  funPlay:function(){
    console.log("audio play");
  },
  funPause:function(){
    console.log("audio pause");
  }
 
})

除了上述的基本属性外。audio还有一些属性可以监听音频的播放状态。可以看到每次点击让音频播放或暂停都会触发bindplay和bindpause属性。

属性类型默认值必填说明
bindplayeventhandle当开始/继续播放时触发 play 事件
bindpauseeventhandle当暂停播放时触发 pause 事件

wx_002

3.AudioContext

通过AudioContext类中的createAudioContext方法可以根据audio的id属性来获取到audio实例。然后进行属性操控。

类方法说明
setSrc(String src)设置音频地址
play()播放音频
pause()暂停音频
seek(number position)跳转到指定位置
// audio.js
Page({
  onReady: function (e) {
    // 使用 wx.createAudioContext 获取 audio 上下文 context
    this.audioCtx = wx.createAudioContext('myAudio')
  },
  data: {
    name: 'Gorgeous',
    author: 'Taylor Swift',
    poster:'https://636c-cloud1-0gq03z948cf60a2f-1313616796.tcb.qcloud.la/111111.png?sign=9d6db5733a31686af7132b981d4e9c88&t=1663494912',
    src: 'https://636c-cloud1-0gq03z948cf60a2f-1313616796.tcb.qcloud.la/Gorgeous%20-%20Taylor%20Swift.mp3?sign=1bc3a85378f63986bbf6f8cbe8f032e9&t=1663494659',
  },
  funPlay:function(){
    console.log("audio play");
  },
  funPause:function(){
    console.log("audio pause");
  },
  audioPlay: function () {
    this.audioCtx.play()
  },
  audioPause: function () {
    this.audioCtx.pause()
  },
  audio14: function () {
    this.audioCtx.seek(14)
  },
  audioStart: function () {
    this.audioCtx.seek(0)
  }
})
<audio author="{{author}}" name="{{name}}" 
poster="{{poster}}"
src="{{src}}" 
id="myAudio" controls loop 
bindplay="funPlay"
bindpause="funPause"
></audio>
<view class="container">
  <button type="primary" bindtap="audioPlay">播放</button>
  <button type="primary" bindtap="audioPause">暂停</button>
  <button type="primary" bindtap="audio14">设置当前播放时间为14秒</button>
  <button type="primary" bindtap="audioStart">回到开头</button>
</view>

image-20220918181454554

4.InnerAudioContext

InnerAudioContext是官方推荐功能最全的音频类,其实例可在js文件的生命周期函数中通过调用createInnerAudioContext接口获取。

InnerAudioContext类的中包括了audio的属性,除这些属性外它新增的常见属性说明如下:可在js函数中获取实例后通过“this.audioCtx.属性名”的写法获取相应的属性值。

属性类型说明
obeyMuteSwitchboolean是否遵循系统静音,默认为true
numberstartTime开始播放的位置,默认值为0
volumenumber音量,范围0~1,默认为1
durationnumber当前音频的长度
currentTimenumber当前音频的播放位置,单位为s
bufferednumber当前音频缓冲的时间点

同样的InnerAudioContext类中的类方法也包括了AudioContext类的方法,除此之外它还新增了许多其他的类方法,读者可自行查阅官方文档。InnerAudioContext | 微信开放文档 (qq.com)

使用方法与AudioContext大同小异,无非是在获取实例时使用createInnerAudioContext方法替代createAudioContext方法。

onReady: function (e) {
    // 使用 wx.createAudioContext 获取 audio 上下文 context
    this.audioCtx = wx.createInnerAudioContext('myAudio')
  },

t方法。

onReady: function (e) {
    // 使用 wx.createAudioContext 获取 audio 上下文 context
    this.audioCtx = wx.createInnerAudioContext('myAudio')
  },

相关文章:

  • [HJ73 计算日期到天数转换]
  • FastDFS数据迁移
  • Java Web 10 JSP 10.3 JSP 原理
  • extern “C“
  • 基于ARM9平台的网络可视电话设计
  • [Qualcomm][GPIO]高通芯片引脚相关知识记录
  • 平衡二叉树之红黑树
  • 【python-Unet】计算机视觉~舌象舌头图片分割~机器学习
  • 【云原生】Hive on k8s 环境部署
  • 一起来学Kotlin:概念:1. Kotlin ArrayListOf 的使用案例
  • 基于MATLAB/GUI的自组网仿真平台,对比leach,ADOV协议
  • 四、哈希表相关题目
  • 【WSN定位】基于改进chan算法和talor算法实现多基站目标定位附matlab代码
  • 【LeetCode每日一题】2022-10-02 777. 在LR字符串中交换相邻字符 Java实现
  • 网络安全从业人员能力图谱
  • [数据结构]链表的实现在PHP中
  • Angular Elements 及其运作原理
  • Dubbo 整合 Pinpoint 做分布式服务请求跟踪
  • happypack两次报错的问题
  • JavaScript 基本功--面试宝典
  • mysql常用命令汇总
  • React的组件模式
  • Redis 懒删除(lazy free)简史
  • ViewService——一种保证客户端与服务端同步的方法
  • 成为一名优秀的Developer的书单
  • 聊聊hikari连接池的leakDetectionThreshold
  • 使用 QuickBI 搭建酷炫可视化分析
  • 微信小程序设置上一页数据
  • 学习笔记:对象,原型和继承(1)
  • 哈罗单车融资几十亿元,蚂蚁金服与春华资本加持 ...
  • ​io --- 处理流的核心工具​
  • ​创新驱动,边缘计算领袖:亚马逊云科技海外服务器服务再进化
  • # Maven错误Error executing Maven
  • #pragma预处理命令
  • #宝哥教你#查看jquery绑定的事件函数
  • (30)数组元素和与数字和的绝对差
  • (4)STL算法之比较
  • (4)事件处理——(6)给.ready()回调函数传递一个参数(Passing an argument to the .ready() callback)...
  • (floyd+补集) poj 3275
  • (ZT)北大教授朱青生给学生的一封信:大学,更是一个科学的保证
  • (附源码)spring boot儿童教育管理系统 毕业设计 281442
  • (附源码)ssm高校社团管理系统 毕业设计 234162
  • (附源码)小程序 交通违法举报系统 毕业设计 242045
  • (论文阅读11/100)Fast R-CNN
  • (亲测成功)在centos7.5上安装kvm,通过VNC远程连接并创建多台ubuntu虚拟机(ubuntu server版本)...
  • (一)Mocha源码阅读: 项目结构及命令行启动
  • (转)Unity3DUnity3D在android下调试
  • ***php进行支付宝开发中return_url和notify_url的区别分析
  • .NET 8 中引入新的 IHostedLifecycleService 接口 实现定时任务
  • .NET 设计模式—适配器模式(Adapter Pattern)
  • .Net7 环境安装配置
  • .NetCore项目nginx发布
  • .NET建议使用的大小写命名原则
  • .net连接MySQL的方法
  • @value 静态变量_Python彻底搞懂:变量、对象、赋值、引用、拷贝