1.1.0 • Published 6 months ago

@codeniu/vue3-audio-player v1.1.0

Weekly downloads
-
License
MIT
Repository
github
Last release
6 months ago

Vue3 Audio Player API 文档

Vue3 Audio Player 是一个基于 Vue3 的音频播放器组件,提供了丰富的功能和自定义选项。

Try the demo

npm.io

安装

使用 npm 安装 Vue3 Audio Player:

npm install @codeniu/vue3-audio-player

引入

在你的 Vue 项目中引入 Vue3 Audio Player:

import { Vue3AudioPlayer } from '@codeniu/vue3-audio-player'
import '@codeniu/vue3-audio-player/dist/vue3-audio-player.css'

使用

在你的组件中使用 Vue3 Audio Player:

<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)

属性名类型默认值说明
audioListArray<AudioItem \| string>[]音频列表,支持对象数组或字符串数组
showPlayButtonbooleantrue是否显示播放/暂停按钮
showPrevButtonbooleantrue是否显示上一曲按钮
showNextButtonbooleantrue是否显示下一曲按钮
showVolumeButtonbooleantrue是否显示音量控制按钮
showProgressBarbooleantrue是否显示进度条
beforePlay(callback: (state: boolean) => void) => voidundefined播放前的钩子函数
beforePrev(callback: (state: boolean) => void) => voidundefined切换上一曲前的钩子函数
beforeNext(callback: (state: boolean) => void) => voidundefined切换下一曲前的钩子函数
isLoopbooleantrue是否循环播放列表
isAutoPlayNextbooleantrue播放结束后是否自动播放下一曲
progressIntervalnumber500进度更新间隔时间(毫秒)
showPlaybackRatebooleantrue是否显示播放速率控制
showPlayLoadingbooleantrue是否显示加载动画
playbackRatesnumber[][0.5, 1, 1.5, 2]可选的播放速率列表
themeColorstring'#EC4141'主题色
disabledProgressDragbooleanfalse是否禁用进度条拖拽
disabledProgressClickbooleanfalse是否禁用进度条点击

事件 (Events)

事件名参数说明
pause-音频暂停时触发
play-prev-切换到上一曲时触发
play-next-切换到下一曲时触发
timeupdate-播放时间更新时触发
durationchangeevent: Event音频时长变化时触发
endedevent: Event音频播放结束时触发
progress-startevent: Event开始拖动进度条时触发
progress-endevent: Event结束拖动进度条时触发
progress-moveevent: Event拖动进度条过程中触发
progress-clickevent: Event点击进度条时触发
playing-音频正在播放时触发
play-音频开始播放时触发
play-errorerror: 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 鼠标或触摸事件

类型定义

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. 组件支持移动端触摸操作,包括进度条拖拽和音量调节