Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

@futuremeng/vue3-wave-audio-player

futuremeng32MIT3.4.4

Vue 3 Component for wave audio player

vue-audio-player, vue3-audio-player, vue-audio, vue3-audio, vue-music, vue3-music, audio-player, audio, wave, inline

readme

Vue 3 wave-audio-player

Image demo

NPM install

npm i @futuremeng/vue3-wave-audio-player

Import ans use

<template>
  <div style="max-width: 250px">
    <Vue3WaveAudioPlayer
    :wave-width="250"
    :wave-height="40"
    wave-type="mirror"
    src="/samples/file.mp3"
    :index-self="0"
    :index-sync="index"
    @on-play="index = 0"
    title="第一交响曲"
    :wave-animation="false"
    :current-time-visible="false"
    :duration-time-visible="false"
    />  
    <!-- optional wave_options -->
    <Vue3WaveAudioPlayer
    :wave-width="250"
    :wave-height="40"
    :wave-options='{"samples":50}' 
    src="/samples/file.mp3"
    :load-audio-onmount="false"
    :index-self="1"
    :index-sync="index"
    @on-play="index = 1"
    title="第二交响曲"
    :wave-animation="false"
    :current-time-visible="false"
    :duration-time-visible="false"
    />  
    <Vue3WaveAudioPlayer
    :wave-width="250"
    :wave-height="40"
    :wave-options='{"samples":40,"type":"steps","width":192,"height":40}'
    src="/samples/file.mp3"
    :index-self="2"
    :index-sync="index"
    @on-play="index = 2"
    title="第三交响曲"
    :wave-animation="false"
    :current-time-visible="false"
    :duration-time-visible="false"
    />   
  </div>
</template>
<script>
import Vue3WaveAudioPlayer from 'vue3-wave-audio-player'

export default {
  name: 'App',
  components: {
    Vue3WaveAudioPlayer
  },
  data() {
    return {
      index: 0
    }
  }
}
</script>

Attributes

Name Required Type Description
src True audio file Source path to audio file
title False String Title of the player
wave-width True Integer Width of the Waves. (Not responsive, Also remember that the buttons and the timing strings will take extra ~250px. For example, if(container === 500px) => wave-width = 500 - 250 = 250 )
wave-height True Integer Height of the waves (Not Responsive)
wave-type False String Type of wave. (Not working yet)
wave-options False Object Set settings for the waves (Not working yet)
load-audio-onmount False Boolean Load the path and audio data on mounted
disable-seeking False Boolean Disable time seeking
current-time-visible False Boolean Show current time
duration-time-visible False Boolean Show duration time
index-self False Integer Index of the player (for multiple players)
index-sync False Integer Index of the playing player to sync with (for multiple players)
disable-seeking False Boolean Disable seeking
load-audio-onmount False Boolean Load the path and audio data on mounted
circle False Boolean Show circle button

Events

I have added all the events that html has in the audio tag with a "on-" prefix. Additional events:

Name Required Type Return Description
tried_to_seek False Func Boolean Triggered when user try to seek time
on-play False Func Boolean Triggered when user click on play button
// Example 
<Vue3WaveAudioPlayer
:wave-width="250"
:wave-height="40"
src="/samples/file.mp3"

@on-error="onError"
@on-ended="customCallback" // ... many more
/> 

Check MDN Doc for all the events.

Report bug or Suggestion

please send a mail at futuremeng@gmail.com or imdarif122@mail.com or contact@arifdev.com. You can also open any issue in the GitHub page. Thanks for using this package.

Inspired by

wave-path-audio-player package waveform-path package