Skip to content

Types

All types are exported from @vue-player/core.

ts
import type { PlayerState, PlayerControls, Track, Chapter, ThumbnailCue, VideoSource, Quality, PlayerError } from '@vue-player/core'

PlayerState

Readonly reactive state returned by usePlayer.

ts
interface PlayerState {
  isPlaying:  boolean
  isPaused:   boolean
  isEnded:    boolean
  isLoading:  boolean
  isBuffering: boolean

  currentTime: number
  duration:    number
  buffered:    number

  volume:  number
  isMuted: boolean

  isFullscreen: boolean
  isPiP:        boolean
  isLive:       boolean

  playbackRate:       number
  currentQuality:     number | 'auto'
  availableQualities: Quality[]

  currentTrack:   Track | null
  availableTracks: Track[]

  error: PlayerError | null
}
PropertyTypeDescription
isPlayingbooleanVideo is actively playing
isPausedbooleanVideo is paused
isEndedbooleanReached end of video
isLoadingbooleanSource is loading
isBufferingbooleanWaiting for data mid-playback
currentTimenumberCurrent position in seconds
durationnumberTotal duration in seconds (0 until metadata loads)
bufferednumberFurthest buffered position in seconds
volumenumberVolume level 0–1
isMutedbooleanAudio is muted
isFullscreenbooleanFullscreen is active
isPiPbooleanPicture-in-Picture is active
isLivebooleanSource is a live stream (duration is Infinity)
playbackRatenumberCurrent playback speed
currentQualitynumber | 'auto'Active quality value in pixels (e.g. 1080), or 'auto'
availableQualitiesQuality[]Quality levels parsed from HLS manifest
currentTrackTrack | nullActive subtitle track, or null
availableTracksTrack[]All available subtitle tracks
errorPlayerError | nullCurrent playback error, or null

PlayerControls

Methods returned by usePlayer to control playback.

ts
interface PlayerControls {
  play:            () => Promise<void>
  pause:           () => void
  seek:            (seconds: number) => void
  setVolume:       (value: number) => void
  toggleMute:      () => void
  setSpeed:        (rate: number) => void
  setQuality:      (value: number | 'auto') => void
  setTrack:        (track: Track | null) => void
  toggleFullscreen: () => Promise<void>
  togglePiP:       () => Promise<void>
  retry:           () => void
}
MethodDescription
play()Start playback
pause()Pause playback
seek(seconds)Jump to position, clamped to 0–duration
setVolume(value)Set volume 0–1, unmutes if previously muted
toggleMute()Toggle mute on/off
setSpeed(rate)Set playback speed (e.g. 0.5, 1, 2)
setQuality(value)Set HLS quality in px height, or 'auto' for ABR
setTrack(track)Activate a subtitle track, or null to disable
toggleFullscreen()Enter/exit fullscreen on the player element
togglePiP()Enter/exit Picture-in-Picture
retry()Reload the last source after an error

Track

A subtitle or caption track.

ts
interface Track {
  src:      string
  label:    string
  language: string
  kind?:    'subtitles' | 'captions'
  default?: boolean
}
PropertyTypeDescription
srcstringURL of the WebVTT file
labelstringDisplay name in the subtitle menu
languagestringBCP 47 language code (e.g. 'en', 'fr')
kind'subtitles' | 'captions'Track kind, default 'subtitles'
defaultbooleanAuto-activate on load

Chapter

A named timeline segment.

ts
interface Chapter {
  time:  number
  label: string
}
PropertyTypeDescription
timenumberChapter start time in seconds
labelstringShown in the timeline tooltip

ThumbnailCue

A single cue from a WebVTT thumbnail file.

ts
interface ThumbnailCue {
  start: number
  end:   number
  url:   string
  x?:    number
  y?:    number
  w?:    number
  h?:    number
}
PropertyTypeDescription
startnumberCue start time in seconds
endnumberCue end time in seconds
urlstringAbsolute image URL
xnumberSprite x offset in pixels
ynumberSprite y offset in pixels
wnumberSprite frame width in pixels
hnumberSprite frame height in pixels

VideoSource

A video source with optional type hint and quality metadata.

ts
interface VideoSource {
  src:     string
  type?:   'hls' | 'dash' | 'mp4' | 'webm' | 'auto'
  quality?: number
  label?:  string
}

Quality

A quality level parsed from an HLS manifest.

ts
interface Quality {
  value:    number
  label:    string
  bitrate?: number
}

PlayerError

A playback error.

ts
interface PlayerError {
  code:    number
  message: string
  type:    'network' | 'decode' | 'source' | 'unknown'
}
PropertyTypeDescription
codenumberMediaError.code value (1–4), or 0 for HLS errors
messagestringHuman-readable error description
typestringError category

Released under the MIT License.