程序员scholar 程序员scholar
首页
  • Java 基础

    • JavaSE
    • JavaIO
    • JavaAPI速查
  • Java 高级

    • JUC
    • JVM
    • Java新特性
    • 设计模式
  • Web 开发

    • Servlet
    • Java网络编程
  • Web 标准

    • HTML
    • CSS
    • JavaScript
  • 前端框架

    • Vue2
    • Vue3
    • Vue3 + TS
    • 微信小程序
    • uni-app
  • 工具与库

    • jQuery
    • Ajax
    • Axios
    • Webpack
    • Vuex
    • WebSocket
    • 第三方登录
  • 后端与语言扩展

    • ES6
    • Typescript
    • node.js
  • Element-UI
  • Apache ECharts
  • 数据结构
  • HTTP协议
  • HTTPS协议
  • 计算机网络
  • Linux常用命令
  • Windows常用命令
  • SQL数据库

    • MySQL
    • MySQL速查
  • NoSQL数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • RabbitMQ
  • 服务器

    • Nginx
  • Spring框架

    • Spring6
    • SpringMVC
    • SpringBoot
    • SpringSecurity
  • SpringCould微服务

    • SpringCloud基础
    • 微服务之DDD架构思想
  • 日常必备

    • 开发常用工具包
    • Hutoll工具包
    • IDEA常用配置
    • 开发笔记
    • 日常记录
    • 项目部署
    • 网站导航
    • 产品学习
    • 英语学习
  • 代码管理

    • Maven
    • Git教程
    • Git小乌龟教程
  • 运维工具

    • Docker
    • Jenkins
    • Kubernetes
  • 算法笔记

    • 算法思想
    • 刷题笔记
  • 面试问题常见

    • 十大经典排序算法
    • 面试常见问题集锦
关于
GitHub (opens new window)
首页
  • Java 基础

    • JavaSE
    • JavaIO
    • JavaAPI速查
  • Java 高级

    • JUC
    • JVM
    • Java新特性
    • 设计模式
  • Web 开发

    • Servlet
    • Java网络编程
  • Web 标准

    • HTML
    • CSS
    • JavaScript
  • 前端框架

    • Vue2
    • Vue3
    • Vue3 + TS
    • 微信小程序
    • uni-app
  • 工具与库

    • jQuery
    • Ajax
    • Axios
    • Webpack
    • Vuex
    • WebSocket
    • 第三方登录
  • 后端与语言扩展

    • ES6
    • Typescript
    • node.js
  • Element-UI
  • Apache ECharts
  • 数据结构
  • HTTP协议
  • HTTPS协议
  • 计算机网络
  • Linux常用命令
  • Windows常用命令
  • SQL数据库

    • MySQL
    • MySQL速查
  • NoSQL数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • RabbitMQ
  • 服务器

    • Nginx
  • Spring框架

    • Spring6
    • SpringMVC
    • SpringBoot
    • SpringSecurity
  • SpringCould微服务

    • SpringCloud基础
    • 微服务之DDD架构思想
  • 日常必备

    • 开发常用工具包
    • Hutoll工具包
    • IDEA常用配置
    • 开发笔记
    • 日常记录
    • 项目部署
    • 网站导航
    • 产品学习
    • 英语学习
  • 代码管理

    • Maven
    • Git教程
    • Git小乌龟教程
  • 运维工具

    • Docker
    • Jenkins
    • Kubernetes
  • 算法笔记

    • 算法思想
    • 刷题笔记
  • 面试问题常见

    • 十大经典排序算法
    • 面试常见问题集锦
关于
GitHub (opens new window)
npm

(进入注册为作者充电)

  • 原生微信小程序

  • uniapp多端开发

    • 快速入门

    • 内置组件

      • 视图容器

      • 基础内容

      • 表单组件

      • 路由页面跳转

      • 媒体组件

        • 动画视图组件
        • 音频播放组件
          • 1. 什么是 audio 组件?
          • 2. audio 组件的常用属性
            • 2.1 音频资源地址 src
            • 2.2 循环播放 loop
            • 2.3 显示控件 controls
            • 2.4 音频封面 poster
            • 2.5 音频播放事件 @play
          • 3. 音频播放控件与事件监听
        • 相机组件
        • 图片组件
        • 视频播放组件
        • 直播播放器组件
        • 直播推流组件
      • 地图

      • 画布

      • 网页嵌入

      • 页面属性配置节点

      • nvue组件

      • 小程序组件

    • 扩展组件

  • 小程序开发
  • uniapp多端开发
  • 内置组件
  • 媒体组件
scholar
2024-10-21
目录

音频播放组件

# 音频播放组件

audio 组件是 Uniapp 中用于播放音频文件的基础组件,支持多种平台。该组件可以实现音频的播放、暂停、循环、进度更新等操作,并提供了一些事件用于音频状态的监听。audio 组件主要用于简单的音频播放场景,如背景音乐、音效播放等。

# 1. 什么是 audio 组件?

audio 组件用于在页面中嵌入音频播放器,支持播放本地或网络音频文件。它可以展示音频封面、音频名称、作者等信息,并且提供了默认的控件用于控制播放行为。此外,开发者可以通过监听音频的播放、暂停、结束等事件,实现自定义交互。

使用场景

  • 背景音乐播放:在页面中播放背景音乐。
  • 音频教程播放:嵌入音频播放组件,用于播放学习教程。
  • 播客或有声书播放:提供音频内容,如播客、有声书等。
  • 音效播放:用于播放短时音效,如按钮点击、提醒声音等。

# 2. audio 组件的常用属性

audio 组件提供了多个属性,用于控制音频的播放、循环、控件展示等。以下是常用属性的详细说明及使用示例。

属性名 类型 默认值 说明
src String 无 要播放的音频资源地址,可以是本地路径或网络路径
loop Boolean false 是否循环播放
controls Boolean false 是否显示默认控件
poster String 无 音频封面图片地址,需 controls 为 true 时才有效
name String 未知音频 音频名称,需 controls 为 true 时才有效
author String 未知作者 音频作者,需 controls 为 true 时才有效
@error EventHandle 无 当发生错误时触发该事件
@play EventHandle 无 音频开始或继续播放时触发
@pause EventHandle 无 音频暂停播放时触发
@timeupdate EventHandle 无 播放进度变化时触发该事件,返回当前时间和总时长
@ended EventHandle 无 音频播放结束时触发

# 2.1 音频资源地址 src

  • 说明:指定要播放的音频文件地址,可以是本地文件或网络音频资源。
  • 类型:String
  • 默认值:无
<template>
  <view>
    <audio :src="audioSrc" controls />
  </view>
</template>

<script setup>
const audioSrc = 'https://web-ext-storage.dcloud.net.cn/uni-app/ForElise.mp3';
</script>
1
2
3
4
5
6
7
8
9

# 2.2 循环播放 loop

  • 说明:该属性控制音频是否循环播放。
  • 类型:Boolean
  • 默认值:false
<template>
  <view>
    <audio :src="audioSrc" :loop="true" controls />
  </view>
</template>

<script setup>
const audioSrc = 'https://web-ext-storage.dcloud.net.cn/uni-app/ForElise.mp3';
</script>
1
2
3
4
5
6
7
8
9

# 2.3 显示控件 controls

  • 说明:该属性控制是否显示默认音频播放器控件,包括播放、暂停按钮以及进度条等。
  • 类型:Boolean
  • 默认值:false
<template>
  <view>
    <audio :src="audioSrc" :controls="true" />
  </view>
</template>

<script setup>
const audioSrc = 'https://web-ext-storage.dcloud.net.cn/uni-app/ForElise.mp3';
</script>
1
2
3
4
5
6
7
8
9

# 2.4 音频封面 poster

  • 说明:指定音频控件上展示的封面图片地址,只有当 controls 属性为 true 时才生效。
  • 类型:String
  • 默认值:无
<template>
  <view>
    <audio :src="audioSrc" :controls="true" :poster="posterSrc" />
  </view>
</template>

<script setup>
const audioSrc = 'https://web-ext-storage.dcloud.net.cn/uni-app/ForElise.mp3';
const posterSrc = 'https://qiniu-web-assets.dcloud.net.cn/unidoc/zh/music-a.png';
</script>
1
2
3
4
5
6
7
8
9
10

# 2.5 音频播放事件 @play

  • 说明:当音频开始或继续播放时触发该事件,可以用于监听音频播放状态。
  • 类型:EventHandle
<template>
  <view>
    <audio :src="audioSrc" :controls="true" @play="onPlay" />
  </view>
</template>

<script setup>
const audioSrc = 'https://web-ext-storage.dcloud.net.cn/uni-app/ForElise.mp3';

const onPlay = () => {
  console.log('音频开始播放');
};
</script>
1
2
3
4
5
6
7
8
9
10
11
12
13

# 3. 音频播放控件与事件监听

以下案例展示了如何使用 audio 组件,结合播放控件、音频封面、播放状态监听等功能,实现基础的音频播放效果。

<template>
  <view>
    <audio
      :src="currentAudio.src"
      :controls="true"
      :poster="currentAudio.poster"
      :name="currentAudio.name"
      :author="currentAudio.author"
      @play="handlePlay"
      @pause="handlePause"
      @timeupdate="handleTimeUpdate"
      @ended="handleEnded"
    />
  </view>
</template>

<script setup>
import { ref } from 'vue';

const currentAudio = ref({
  src: 'https://web-ext-storage.dcloud.net.cn/uni-app/ForElise.mp3',
  poster: 'https://qiniu-web-assets.dcloud.net.cn/unidoc/zh/music-a.png',
  name: '致爱丽丝',
  author: '贝多芬',
});

const handlePlay = () => {
  console.log('音频开始播放');
};

const handlePause = () => {
  console.log('音频暂停播放');
};

const handleTimeUpdate = (event) => {
  const { currentTime, duration } = event.detail;
  console.log(`当前时间: ${currentTime} / 总时长: ${duration}`);
};

const handleEnded = () => {
  console.log('音频播放结束');
};
</script>

<style scoped>
/* 添加一些基础样式 */
audio {
  width: 100%;
  height: 50px;
}
</style>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51

image-20241021034532902

编辑此页 (opens new window)
上次更新: 2025/02/01, 02:18:15
动画视图组件
相机组件

← 动画视图组件 相机组件→

Theme by Vdoing | Copyright © 2019-2025 程序员scholar
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式