Looking for the old docs? Go here

Core

Player

This is the top-most component in the library used to group media elements and control the flow of media state.

See the following sections for more information:

  • The loading guide covers how to handle loading various media resources.
  • The events guide covers the basics on how to listen and track updates.
  • The state management guide covers how to read, update, and subscribe to state changes.
  • The API pages cover how to interact with various player APIs and hooks.
HTMLAttributes
Ref<MediaPlayerInstance>

All media components exist inside the <MediaPlayer> component. This component's main responsibilities are to manage media state updates, dispatch media events, handle media requests, and expose media state through HTML attributes and CSS properties for styling purposes.

import { MediaPlayer, type MediaPlayerProps } from "@vidstack/react";
import { MediaPlayer, type MediaPlayerProps } from "@vidstack/react";
<MediaPlayer src="...">
  <MediaProvider />
</MediaPlayer>
<MediaPlayer src="...">
  <MediaProvider />
</MediaPlayer>
PropTypeDefault
aspectRatio
string
undefined
asChild
boolean
false
children
ReactNode
null
autoplay
boolean
false
controls
boolean
false
controlsDelay
number
2000
crossorigin
mixed
null
currentTime
number
0
fullscreenOrientation
ScreenOrientationLockType
'landscape'
keyDisabled
boolean
'false'
keyShortcuts
MediaKeyShortcuts
MEDIA_KEY_SHORTCUTS
keyTarget
MediaKeyTarget
`player`
liveEdgeTolerance
number
10
load
MediaLoadingStrategy
'visible'
logLevel
LogLevel
__DEV__ ? 'warn' : 'silent'
loop
boolean
false
minLiveDVRWindow
number
30
muted
boolean
false
paused
boolean
true
playbackRate
number
1
playsinline
boolean
false
poster
string
''
preferNativeHLS
boolean
false
preload
string
'metadata'
src
MediaSrc
''
streamType
MediaStreamType
'unknown'
title
string
''
viewType
MediaViewType
'unknown'
volume
number
1
import { MediaPlayer, MediaPlayerInstance } from "@vidstack/react"

const ref = useRef<MediaPlayerInstance>(null),
  { /* state props */ } = useStore(MediaPlayerInstance, ref);

<MediaPlayer ref={ref}>
import { MediaPlayer, MediaPlayerInstance } from "@vidstack/react"

const ref = useRef<MediaPlayerInstance>(null),
  { /* state props */ } = useStore(MediaPlayerInstance, ref);

<MediaPlayer ref={ref}>
PropTypeDefault
audioTrack
object
null
audioTracks
object
[]
autoQuality
boolean
false
autoplay
boolean
false
autoplayError
object
null
autoplaying
boolean
false
buffered
object
new TimeRange()
bufferedEnd
number
undefined
bufferedStart
number
undefined
canFullscreen
boolean
false
canLoad
boolean
false
canOrientScreen
boolean
canOrientScreen()
canPictureInPicture
boolean
false
canPlay
boolean
false
canSeek
boolean
undefined
canSetPlaybackRate
boolean
true
canSetQuality
boolean
true
canSetVolume
boolean
false
controls
boolean
false
controlsVisible
boolean
false
crossorigin
string
null
currentSrc
object
undefined
currentTime
number
0
duration
number
0
ended
boolean
false
error
object
null
fullscreen
boolean
false
height
number
0
inferredPoster
string
''
inferredStreamType
string
'unknown'
inferredTitle
string
''
inferredViewType
string
'unknown'
live
boolean
undefined
liveEdge
boolean
undefined
liveEdgeStart
number
undefined
liveEdgeTolerance
number
10
liveEdgeWindow
number
undefined
liveSyncPosition
number
null
logLevel
string
__DEV__ ? 'warn' : 'silent'
loop
boolean
false
mediaHeight
number
0
mediaType
string
'unknown'
mediaWidth
number
0
minLiveDVRWindow
number
60
muted
boolean
false
orientation
string
'landscape'
paused
boolean
true
pictureInPicture
boolean
false
playbackRate
number
1
played
object
new TimeRange()
playing
boolean
false
playsinline
boolean
false
pointer
string
'fine'
poster
string
undefined
preload
string
'metadata'
providedPoster
string
''
providedStreamType
string
'unknown'
providedTitle
string
''
providedViewType
string
'unknown'
qualities
object
[]
quality
object
null
seekable
object
new TimeRange()
seekableEnd
number
undefined
seekableStart
number
undefined
seekableWindow
number
undefined
seeking
boolean
false
source
object
{ src: '', type: '' }
sources
object
[]
started
boolean
false
streamType
string
undefined
textTrack
object
null
textTracks
object
[]
title
string
undefined
userBehindLiveEdge
boolean
false
viewType
string
undefined
volume
number
1
waiting
boolean
false
width
number
0
CallbackType
onAbort
function
onAudioTrackChange
function
onAudioTracksChange
function
onAutoplay
function
onAutoplayChange
function
onAutoplayFail
function
onCanLoad
function
onCanPlay
function
onCanPlayThrough
function
onControlsChange
function
onDestroy
function
onDurationChange
function
onEmptied
function
onEnd
function
onEnded
function
onError
function
onFullscreenChange
function
onFullscreenError
function
onHlsAudioTrackLoaded
function
onHlsAudioTrackLoading
function
onHlsAudioTrackSwitched
function
onHlsAudioTrackSwitching
function
onHlsAudioTracksUpdated
function
onHlsBackBufferReached
function
onHlsBufferAppended
function
onHlsBufferAppending
function
onHlsBufferCodecs
function
onHlsBufferCreated
function
onHlsBufferEos
function
onHlsBufferFlushed
function
onHlsBufferFlushing
function
onHlsBufferReset
function
onHlsCuesParsed
function
onHlsDestroying
function
onHlsError
function
onHlsFpsDrop
function
onHlsFpsDropLevelCapping
function
onHlsFragBufferedData
function
onHlsFragChanged
function
onHlsFragDecrypted
function
onHlsFragLoadEmergencyAborted
function
onHlsFragLoaded
function
onHlsFragLoading
function
onHlsFragParsed
function
onHlsFragParsingInitSegment
function
onHlsFragParsingMetadata
function
onHlsFragParsingUserdata
function
onHlsInitPtsFound
function
onHlsInstance
function
onHlsKeyLoaded
function
onHlsKeyLoading
function
onHlsLevelLoaded
function
onHlsLevelLoading
function
onHlsLevelPtsUpdated
function
onHlsLevelSwitched
function
onHlsLevelSwitching
function
onHlsLevelUpdated
function
onHlsLevelsUpdated
function
onHlsLibLoadError
function
onHlsLibLoadStart
function
onHlsLibLoaded
function
onHlsManifestLoaded
function
onHlsManifestLoading
function
onHlsManifestParsed
function
onHlsMediaAttached
function
onHlsMediaAttaching
function
onHlsMediaDetached
function
onHlsMediaDetaching
function
onHlsNonNativeTextTracksFound
function
onHlsSubtitleFragProcessed
function
onHlsSubtitleTrackLoaded
function
onHlsSubtitleTrackLoading
function
onHlsSubtitleTrackSwitch
function
onHlsSubtitleTracksCleared
function
onHlsSubtitleTracksUpdated
function
onHlsUnsupported
function
onLiveChange
function
onLiveEdgeChange
function
onLoadStart
function
onLoadedData
function
onLoadedMetadata
function
onLoopChange
function
onMediaAudioTrackChangeRequest
function
onMediaEnterFullscreenRequest
function
onMediaEnterPipRequest
function
onMediaExitFullscreenRequest
function
onMediaExitPipRequest
function
onMediaLiveEdgeRequest
function
onMediaLoopRequest
function
onMediaMuteRequest
function
onMediaOrientationLockRequest
function
onMediaOrientationUnlockRequest
function
onMediaPauseControlsRequest
function
onMediaPauseRequest
function
onMediaPlayRequest
function
onMediaPlayerConnect
function
onMediaQualityChangeRequest
function
onMediaRateChangeRequest
function
onMediaResumeControlsRequest
function
onMediaSeekRequest
function
onMediaSeekingRequest
function
onMediaStartLoading
function
onMediaTextTrackChangeRequest
function
onMediaTypeChange
function
onMediaUnmuteRequest
function
onMediaVolumeChangeRequest
function
onOrientationChange
function
onPause
function
onPictureInPictureChange
function
onPictureInPictureError
function
onPlay
function
onPlayFail
function
onPlaying
function
onPlaysinlineChange
function
onPosterChange
function
onProgress
function
onProviderChange
function
onProviderLoaderChange
function
onProviderSetup
function
onQualitiesChange
function
onQualityChange
function
onRateChange
function
onReplay
function
onSeeked
function
onSeeking
function
onSourceChange
function
onSourcesChange
function
onStalled
function
onStarted
function
onStreamTypeChange
function
onSuspend
function
onTextTrackChange
function
onTextTracksChange
function
onTimeUpdate
function
onTitleChange
function
onVdsLog
function
onVideoPresentationChange
function
onViewTypeChange
function
onVolumeChange
function
onWaiting
function
import { MediaPlayer, type MediaPlayerInstance } from "@vidstack/react"

const ref = useRef<MediaPlayerInstance>(null);

useEffect(() => { /* Use props/methods here. */ }, [])

<MediaPlayer ref={ref}>
import { MediaPlayer, type MediaPlayerInstance } from "@vidstack/react"

const ref = useRef<MediaPlayerInstance>(null);

useEffect(() => { /* Use props/methods here. */ }, [])

<MediaPlayer ref={ref}>
PropType
audioTracks
AudioTrackList
canPlayQueue
RequestQueue
orientation
ScreenOrientationController
provider
AnyMediaProvider
qualities
VideoQualityList
state
MediaPlayerState
textRenderers
TextRenderers
textTracks
TextTrackList
enterFullscreen
method
enterPictureInPicture
method
exitFullscreen
method
exitPictureInPicture
method
matchQuery
method
pause
method
play
method
seekToLiveEdge
method
startLoading
method
subscribe