/vue-audio-player

Compact, simple and practical PC mobile audio player components(小巧简单实用的 PC 移动端的 Vue 音频播放器组件)

Primary LanguageVueMIT LicenseMIT

Vue Audio Player Component


中文文档 | English Document

Features

  • Vue2 and Vue3 are supported
  • Simple and practical
  • High versatility
  • Support for progress bar dragging
  • Support PC and mobile
  • Support Nuxt SSR
  • Complete documentation and examples

Use

Step one:

npm i -S @liripeng/vue-audio-player

Step two:

// global import
import VueAudioPlayer from '@liripeng/vue-audio-player'

Vue.use(VueAudioPlayer)

or

// part import
import VueAudioPlayer from '@liripeng/vue-audio-player'

components: {
  VueAudioPlayer
}

Step three:

<template>
  <div>
    <div class="name">
      {{ currentAudioName || audioList[0].title }}
    </div>
    <audio-player
      ref="audioPlayer"
      :audio-list="audioList"
      :before-play="handleBeforePlay"
      :show-play-loading="false"
    >
    </audio-player>
  </div>
</template>

<script>
export default {
  data() {
    return {
      currentAudioName: '',
      audioList: [
        {
          src: 'http://music.163.com/song/media/outer/url?id=317151.mp3', // Required
          title: 'Audio Title 1', // Optional,Phone lock screen music player display
          artist: 'Artist Name 1', // Optional,Phone lock screen music player display
          album: 'Album Name 1', // Optional,Phone lock screen music player display
          artwork: [
            {
              src: 'https://upload.jianshu.io/users/upload_avatars/1696356/c358e43854eb?imageMogr2/auto-orient/strip|imageView2/1/w/96/h/96/format/webp',
              sizes: '512x512',
              type: 'image/jpg',
            },
          ], // Optional,Phone lock screen music player display
        },
        {
          src: 'http://downsc.chinaz.net/Files/DownLoad/sound1/201906/11582.mp3', // Required
          title: 'Audio Title 2', // Optional,Phone lock screen music player display
        },
      ],
    }
  },

  methods: {
    // Use this function if you want to do something before you start playing
    handleBeforePlay(next) {
      this.currentAudioName =
        this.audioList[this.$refs.audioPlayer.currentPlayIndex].title

      next() // Start play
    },
  },
}
</script>

Prop

Prop Description Type Default
audio-list Audio playlist Array<Object> -
playback-rates Playrate setting list Array<Number> [0.5, 1, 1.5, 2]
show-play-button Whether to display the play button Boolean true
show-prev-button Whether to display the previous button Boolean true
show-next-button Whether to display the next button Boolean true
show-volume-button Whether to display the volume button Boolean true
show-progress-bar Whether to display a progress bar Boolean true
show-playback-rate Whether to display the play rate button Boolean true
show-play-loading Whether to display loading on playback Boolean true
isLoop Whether the list plays in a loop Boolean true
disabled-progress-drag Disable progress bar drag functionality Boolean false
disabled-progress-click Disable progress bar clickable functionality Boolean false
progress-interval Progress update interval Number 1000
theme-color Theme color String #e35924
before-play The callback function before the play starts
The play starts after next() is called
(next)=>void -
before-prev Play the previous callback function
After calling next(), the previous song starts playing
(next)=>void -
before-next Play the callback function before the next song
After calling next(), the next song starts playing
(next)=>void -
The rest is consistent with native audio

Event

Event Description Callback
play Triggers when the play starts -
pause Trigger after play pause -
play-prev Triggers after playing the previous song -
play-next Triggers after playing the next song -
play-error Triggered after play error,The parameters are the same as those of the native 'play' method data
playing The play fires every progressInterval second -
timeupdate Triggered when the current play position is sent to change event
loadedmetadata The run script is triggered when the duration of the media element and other media have loaded data event
ended Trigger after audio playback event
progress-start Trigger before moving the progress bar event
progress-move Triggered when moving the progress bar event
progress-end Triggered after moving the progress bar event
progress-click Click the progress bar to trigger event
The rest is consistent with native audio

Slot

Name Description
play-prev Play prev button,The replaceable button icon function remains unchanged
play-start Play start button,The replaceable button icon function remains unchanged
play-pause Play pause button,The replaceable button icon function remains unchanged
play-next Play next button,The replaceable button icon function remains unchanged

Data

Variable Description Default
currentPlayIndex The audio index currently playing 0
isPlaying Whether the audio is playing false
duration Audio duration ''
currentTime Current playback time of audio ''
playbackRate Current playback rate of audio 1

Call with ref,see the components for more data

Method

Method Description Parameters
play Start (opts?: { currentTime: number }) => void
pause Pause -
playPrev Previous -
playNext Next -

Call with ref,see the components for more methods

FAQ

Browser compatibility

  • Internet Explorer:not support
  • Firefox:53 and above
  • Chrome:51 and above

Reward the author with milk tea

License

MIT

Last

😘If you think it's helpful, click a 'Star',Any problem found in the process of use can be raised Issue, also very welcome to mention PR.