@codeniu/vue3-audio-player
Version:
A Vue 3 audio player component
149 lines (121 loc) • 5.21 kB
Markdown
# Vue3 Audio Player API 文档
Vue3 Audio Player 是一个基于 Vue3 的音频播放器组件,提供了丰富的功能和自定义选项。
[Try the demo](https://codeniu.github.io/vue3-audio-player/)

## 安装
使用 npm 安装 Vue3 Audio Player:
```bash
npm install @codeniu/vue3-audio-player
```
## 引入
在你的 Vue 项目中引入 Vue3 Audio Player:
```js
import { Vue3AudioPlayer } from '@codeniu/vue3-audio-player'
import '@codeniu/vue3-audio-player/dist/vue3-audio-player.css'
```
## 使用
在你的组件中使用 Vue3 Audio Player:
```vue
<template>
<vue3-audio-player
:audioList="audioList"
themeColor="#EC4141"
@play="handlePlay"
@pause="handlePause"
/>
</template>
<script setup lang="ts">
const audioList = [
{
src: 'path/to/audio1.mp3',
title: '歌曲1',
artist: '艺术家1',
album: '专辑1'
},
'path/to/audio2.mp3'
]
const handlePlay = () => {
console.log('开始播放')
}
const handlePause = () => {
console.log('暂停播放')
}
</script>
```
## 属性 (Props)
| 属性名 | 类型 | 默认值 | 说明 |
|--------|------|--------|------|
| audioList | `Array<AudioItem \| string>` | `[]` | 音频列表,支持对象数组或字符串数组 |
| showPlayButton | `boolean` | `true` | 是否显示播放/暂停按钮 |
| showPrevButton | `boolean` | `true` | 是否显示上一曲按钮 |
| showNextButton | `boolean` | `true` | 是否显示下一曲按钮 |
| showVolumeButton | `boolean` | `true` | 是否显示音量控制按钮 |
| showProgressBar | `boolean` | `true` | 是否显示进度条 |
| beforePlay | `(callback: (state: boolean) => void) => void` | `undefined` | 播放前的钩子函数 |
| beforePrev | `(callback: (state: boolean) => void) => void` | `undefined` | 切换上一曲前的钩子函数 |
| beforeNext | `(callback: (state: boolean) => void) => void` | `undefined` | 切换下一曲前的钩子函数 |
| isLoop | `boolean` | `true` | 是否循环播放列表 |
| isAutoPlayNext | `boolean` | `true` | 播放结束后是否自动播放下一曲 |
| progressInterval | `number` | `500` | 进度更新间隔时间(毫秒) |
| showPlaybackRate | `boolean` | `true` | 是否显示播放速率控制 |
| showPlayLoading | `boolean` | `true` | 是否显示加载动画 |
| playbackRates | `number[]` | `[0.5, 1, 1.5, 2]` | 可选的播放速率列表 |
| themeColor | `string` | `'#EC4141'` | 主题色 |
| disabledProgressDrag | `boolean` | `false` | 是否禁用进度条拖拽 |
| disabledProgressClick | `boolean` | `false` | 是否禁用进度条点击 |
## 事件 (Events)
| 事件名 | 参数 | 说明 |
|--------|------|------|
| pause | - | 音频暂停时触发 |
| play-prev | - | 切换到上一曲时触发 |
| play-next | - | 切换到下一曲时触发 |
| timeupdate | - | 播放时间更新时触发 |
| durationchange | `event: Event` | 音频时长变化时触发 |
| ended | `event: Event` | 音频播放结束时触发 |
| progress-start | `event: Event` | 开始拖动进度条时触发 |
| progress-end | `event: Event` | 结束拖动进度条时触发 |
| progress-move | `event: Event` | 拖动进度条过程中触发 |
| progress-click | `event: Event` | 点击进度条时触发 |
| playing | - | 音频正在播放时触发 |
| play | - | 音频开始播放时触发 |
| play-error | `error: any` | 播放出错时触发 |
## 插槽 (Slots)
| 插槽名 | 说明 |
|--------|------|
| play-start | 自定义播放按钮 |
| play-pause | 自定义暂停按钮 |
| play-prev | 自定义上一曲按钮 |
| play-next | 自定义下一曲按钮 |
## 方法
| 方法名 | 说明 | 参数 |
|--------|------|------|
| play | 播放音频 | `opts?: { currentTime?: number }` 可选的开始播放时间(秒) |
| pause | 暂停播放 | - |
| playNext | 播放下一曲 | - |
| playPrev | 播放上一曲 | - |
| handleSetPlaybackRate | 设置播放速率 | `rate: number` 播放速率值 |
| handleVolumeIconTouchstart | 显示/隐藏音量控制条 | - |
| handleVolumePanmove | 调节音量大小 | `event: MouseEvent \| TouchEvent` 鼠标或触摸事件 |
| handleClickProgressWrap | 点击进度条跳转播放 | `event: MouseEvent \| TouchEvent` 鼠标或触摸事件 |
## 类型定义
```typescript
interface AudioItem {
src: string; // 音频源地址
title?: string; // 音频标题
artist?: string; // 艺术家
album?: string; // 专辑名
artwork?: { // 封面图片
src: string;
sizes: string;
type: string;
}[];
}
```
## 注意事项
1. audioList 支持两种格式:
- 字符串数组:直接传入音频文件地址
- 对象数组:包含更多音频信息,支持媒体会话 API
2. 钩子函数 ( beforePlay 、 beforePrev 、 beforeNext ) 可用于拦截相应操作,需要调用回调函数并传入 true 或 false 来决定是否继续操作
3. 主题色 themeColor 会影响播放器的按钮、进度条等元素的颜色
4. 播放速率控制支持自定义速率列表,通过 playbackRates 属性配置
5. 组件支持移动端触摸操作,包括进度条拖拽和音量调节