A Howler.js mixin for Vue 2 that makes it easy to create custom audio player components
Installation
$ npm install vue-howler
Usage
First create a component that uses the mixin
audio-player.vue
<script> import VueHowler from 'vue-howler' export default { mixins: [VueHowler] }</script> <template> <div> <span>Total duration: {{ duration }} seconds</span> <span>Progress: {{ (progress * 100) }}%</span> <button @click="togglePlayback">{{ playing ? 'Pause' : 'Play' }}</button> <button @click="stop">Stop</button> </div></template>
Then you can use that component in your templates
home.vue
<script> import AudioPlayer from './audio-player.vue' export default { components: { AudioPlayer }, data () { return { audioSources: [ "assets/audio/music.webm", "assets/audio/fallback.mp3", "assets/audio/fallback2.wav" ] } } }</script> <template> <div> <audio-player :sources="audioSources" :loop="true"></audio-player> </div></template>
API
Props
sources
Type: String[]
- Required
An array of audio file urls
html5
Type: Boolean
- Default: false
Whether to force HTML5 Audio
loop
Type: Boolean
- Default: false
Whether to start the playback again automatically after it is done playing
preload
Type: Boolean
- Default: true
Whether to start downloading the audio file when the component is mounted
autoplay
Type: Boolean
- Default: false
Whether to start the playback when the component is mounted
formats
Type: String[]
- Default: []
Howler.js automatically detects your file format from the extension, but you may also specify a format in situations where extraction won't work (such as with a SoundCloud stream)
xhrWithCredentials
Type: Boolean
- Default: false
Whether to enable the withCredentials
flag on XHR requests
used to fetch audio files when using Web Audio API (see reference)
Data
playing
Type: Boolean
Whether audio is currently playing
muted
Type: Boolean
Whether the audio playback is muted
volume
Type: Number
The volume of the playback on a scale of 0
to 1
rate
Type: Number
The rate (speed) of the playback on a scale of 0.5
to 4
seek
Type: Number
The position of the playback in seconds
duration
Type: Number
The duration of the audio in seconds
progress
Type: Number
The progress of the playback on a scale of 0
to 1
Methods
play()
Start the playback
pause()
Pause the playback
togglePlayback()
Toggle playing or pausing the playback
stop()
Stop the playback (also resets the seek
to 0
)
mute()
Mute the playback
unmute()
Unmute the playback
toggleMute()
Toggle muting and unmuting the playback
setVolume(volume)
Set the volume of the playback (value is clamped between 0
and 1
)
setRate(rate)
Set the rate (speed) of the playback (value is clamped between 0.5
and 4
)
setSeek(seek)
Set the position of the playback (value is clamped between 0
and duration
)
setProgress(progress)
Set the progress of the playback (value is clamped between 0
and 1
)
License
MIT © Mick Dekkers