Skip to content

AudioPlayer

Beautiful audio player component with album cover, progress bar, and volume control.

Live Demo

loading

Basic Usage

tsx
import { AudioPlayer } from '@peakchao/react-media'

<AudioPlayer
  src="https://example.com/audio.mp3"
  title="Song Title"
  artist="Artist Name"
  cover="https://example.com/cover.jpg"
/>

Props

PropTypeDefaultDescription
srcstringrequiredAudio source URL
titlestring-Track title
artiststring-Artist name
coverstring-Cover image URL
autoplaybooleanfalseAuto-play
loopbooleanfalseLoop playback
primaryColorstring'#6366f1'Theme color
darkModebooleanfalseDark mode
preload'auto' | 'metadata' | 'none''metadata'Preload behavior

Events

PropTypeDescription
onPlay() => voidFired when playback starts
onPause() => voidFired when paused
onEnded() => voidFired when ended
onTimeUpdate(payload) => voidProgress update
onVolumeChange(payload) => voidVolume change
onError(error) => voidPlayback error

Ref Methods

tsx
import { useRef } from 'react'
import { AudioPlayer, AudioPlayerRef } from '@peakchao/react-media'

function App() {
  const playerRef = useRef<AudioPlayerRef>(null)

  return (
    <>
      <AudioPlayer ref={playerRef} src="audio.mp3" />
      <button onClick={() => playerRef.current?.play()}>Play</button>
      <button onClick={() => playerRef.current?.pause()}>Pause</button>
    </>
  )
}

Rotating Cover Animation

When audio is playing, the cover rotates automatically. This is implemented with CSS animation:

css
.vm-audio-cover.vm-spinning {
  animation: vm-rotate 8s linear infinite;
}

Released under the MIT License.