As a frontend project, surmon-china/videojs-player has picked up 5.4k stars on GitHub (TypeScript). @videojs player component for @vuejs(3) and React.
Snapshot summary built from the project's own GitHub metadata — there's no written TopGit review yet. The page will update automatically when a full review is published.
WHY NO REVIEW YET
TopGit writes full reviews for the most-starred, most-requested repositories. This page is a snapshot until then — see the READ ME tab for the original README in full.
The vue-video-player package has now been renamed to @videojs-player/vue due to the addition of support for React. Also, support for Vue has undergone a Breaking change, with the latest version of the component only supporting Vue3.
The last version of the vue-video-player package will be released in v6.0, which will just re-export everything from @videojs-player/vue, so if you're ready to use the new version of vue-video-player, please import @videojs-player/vue directly.
The latest version of videojs-player supports responsiveness for the vast majority of Video.js configuration options and allows you to fully customize the player's control panel and interaction details, thanks to the fact that the component does enough processing internally for different frameworks.
Legacy Version
If you are looking for a legacy version of the component for Vue2, use the [email protected]
Component Documentation
Examples
Usage in Vue
Usage in React
Component Props
Component Events
Player State
Video.js Documentation
Video.js Guides
Video.js API Documentation
Video.js Options Reference
Video.js Plugins and Skins
Usage (Vue)
Install
npm install video.js @videojs-player/vue --save
yarn add video.js @videojs-player/vue
Global component
import { createApp } from 'vue'
import VueVideoPlayer from '@videojs-player/vue'
import 'video.js/dist/video-js.css'
const app = createApp()
app.use(VueVideoPlayer)
All parameters are optional and Video.js determines the default value of each prop.
"responsive" means that if the prop value you pass in the component changes,
Video.js will automatically respond to the corresponding update,
e.g. a change in volume will cause the player to change the volume.
Prop Name
Video.js API Doc & Description
Type
Responsive
id
options.id
String
src
options.src
String
✓
sources
options.sources
Array
✓
width
options.width
Number
✓
height
options.height
Number
✓
preload
options.preload
String
✓
loop
options.loop
Boolean
✓
muted
options.muted
Boolean
✓
poster
options.poster
String
✓
controls
options.controls
Boolean
✓
autoplay
options.autoplay
Boolean | String
✓
playsinline
options.playsinline
Boolean
✓
crossorigin
options.crossOrigin
String
✓
volume
A number, between 0 and 1, control the volume of the player.
Number
✓
playbackRate
Control the playback rate of the player.
Number
✓
playbackRates
options.playbackRates
Array<Number>
✓
fluid
options.fluid
Boolean
✓
fill
options.fill
Boolean
✓
language
options.language
String
✓
languages
options.languages
Object
tracks
options.tracks
Array
✓
textTrackSettings
options.textTrackSettings
Object
✓
responsive
options.responsive
Boolean
✓
breakpoints
options.breakpoints
Object
✓
fullscreen
options.fullscreen
FullscreenOptions
aspectRatio
options.aspectRatio
Boolean
✓
liveui
options.liveui
Boolean
liveTracker
options.liveTracker
Object
disablePictureInPicture
options.disablePictureInPicture
Boolean
✓
notSupportedMessage
options.notSupportedMessage
String
✓
normalizeAutoplay
options.normalizeAutoplay
Boolean
✓
audioPosterMode
options.audioPosterMode
Boolean
✓
audioOnlyMode
options.audioOnlyMode
Boolean
✓
noUITitleAttributes
options.noUITitleAttributes
Boolean
preferFullWindow
options.preferFullWindow
Boolean
suppressNotSupportedError
options.suppressNotSupportedError
Boolean
techCanOverridePoster
options.techCanOverridePoster
Boolean
techOrder
options.techOrder
Array
inactivityTimeout
options.inactivityTimeout
Number
userActions
options.userActions
Object
restoreEl
options.restoreEl
Boolean | Element
vtt.js
options['vtt.js']
String
children (Vue) videoJsChildren (React)
options.children
Array | Object
html5
options.html5
Object
plugins
options.plugins
Object
options
A fallback scheme, if you need to use options that don't exist in props, pass them to options.
VideoJsPlayerOptions
Component Events
Events emitted by Video.js, the argument type is always EventTarget.
Video.js Event
🫥 🫥 🫥 🫥 🫥 🫥
Vue
React
event.loadstart
-
@loadstart
onLoadStart
event.suspend
-
@suspend
onSuspend
event.abort
-
@abort
onAbort
event.error
-
@error
onError
event.emptied
-
@emptied
onEmptied
event.stalled
-
@stalled
onStalled
event.loadedmetadata
-
@loadedmetadata
onLoadedMetadata
event.loadeddata
-
@loadeddata
onLoadedData
event.canplay
-
@canplay
onCanPlay
event.canplaythrough
-
@canplaythrough
onCanPlayThrough
event.playing
-
@playing
onPlaying
event.waiting
-
@waiting
onWaiting
event.seeking
-
@seeking
onSeeking
event.seeked
-
@seeked
onSeeked
event.ended
-
@ended
onEnded
event.durationchange
-
@durationchange
onDurationChange
event.timeupdate
-
@timeupdate
onTimeUpdate
event.progress
-
@progress
onProgress
event.play
-
@play
onPlay
event.pause
-
@pause
onpause
event.ratechange
-
@ratechange
onRateChange
event.resize
-
@resize
onResize
event.volumechange
-
@volumechange
onVolumeChange
event.posterchange
-
@posterchange
onPosterChange
event.languagechange
-
@languagechange
onLanguageChange
event.fullscreenchange
-
@fullscreenchange
onFullscreenChange
event.playbackrateschange
-
@playbackrateschange
onPlaybackRatesChange
event.controlsdisabled
-
@controlsdisabled
onControlsDisabled
event.controlsenabled
-
@controlsenabled
onControlsEnabled
event.enterFullWindow
-
@enterFullWindow
onEnterFullWindow
event.exitFullWindow
-
@exitFullWindow
onExitFullWindow
event.enterpictureinpicture
-
@enterpictureinpicture
onEnterPictureInPicture
event.leavepictureinpicture
-
@leavepictureinpicture
onLeavePictureInPicture
event.sourceset
-
@sourceset
onSourceSet
event.texttrackchange
-
@texttrackchange
onTextTrackChange
event.textdata
-
@textdata
onTextData
event.useractive
-
@useractive
onUserActive
event.userinactive
-
@userinactive
onUserInactive
event.usingcustomcontrols
-
@usingcustomcontrols
onUsingCustomControls
event.usingnativecontrols
-
@usingnativecontrols
onUsingNativeControls
event.dispose
-
@dispose
onDispose
event.beforepluginsetup
-
@beforepluginsetup
onBeforePluginSetup
event.pluginsetup
-
@pluginsetup
onPluginSetup
event.componentresize
-
@componentresize
onComponentResize
event.playerresize
-
@playerresize
onPlayerResize
event.tap
-
@tap
onTap
event.ready
-
@ready
onReady
The events emitted by videojs-player component.
Component Event
Description
Vue
React
mounted
Fires when player component mounted. ({ video: HTMLVideoElement, player: VideoJsPlayer, state: VideoPlayerState })
@mounted
onMounted
unmounted
Fires when player component unmounted.
@unmounted
onUnmounted
stateChange
Fires when player state changed (React only). (state: VideoPlayerState)
-
onStateChange
Player State
The component maintains a fully responsive state object internally with the player so that you can consume the player state out-of-the-box outside the player,
you can get this object via the mounted event or stateChange (React Only).
Key
Description
Value type
src
The URL of the currently playing video.
String
currentSrc
ditto
String
currentSource
The currently playing video source object.
videojs.Tech.SourceObject
width
Player's width.
Number
height
Player's height.
Number
currentWidth
ditto
Number
currentHeight
ditto
Number
videoWidth
Video element's width.
Number
videoHeight
Video element's height.
Number
controls
Whether player controls are enabled or not.
Boolean
volume
Player's volume.
Number
muted
Is the player muted.
Boolean
poster
Player poster image URL.
String
playing
Is it playing now.
Boolean
waiting
Is it waiting now.
Boolean
seeking
A seek operation began.
Boolean
paused
Playback has been paused.
Boolean
ended
Playback has stopped because the end of the media was reached.
Boolean
currentTime
-
Number
duration
-
Number
playbackRate
-
Number
playbackRates
-
Array<Number>
isFullscreen
-
Boolean
isInPictureInPicture
Whether it is picture-in-picture mode.
Boolean
isLive
Is the currently playing live video.
Boolean
language
Video.js current language.
String
userActive
-
Boolean
readyState
-
videojs.ReadyState
networkState
-
videojs.NetworkState
error
A Custom MediaError of Video.js.
MediaError | Null
buffered
An object that contains ranges of time.
videojs.TimeRange
bufferedPercent
-
Number
played
-
TimeRanges
seekable
-
TimeRanges
textTracks
-
videojs.TextTrackList
audioTracks
-
videojs.AudioTrackList
videoTracks
-
videojs.VidioTrackList
Video.js extension
import videojs from 'video.js'
// Video.js plugin
const Plugin = videojs.getPlugin('plugin')
class ExamplePlugin extends Plugin {
// do something...
}
videojs.registerPlugin('examplePlugin', ExamplePlugin)
// more Video.js operation...
How active is development on surmon-china/videojs-player?
The most recent commit recorded on surmon-china/videojs-player was 4.0 years ago, based on the GitHub push timestamp. The repository has 1.1k forks — one of the better signals of community interest.
How many stars does surmon-china/videojs-player have?
surmon-china/videojs-player has 5.4k GitHub stars — refresh the page for the live number, or check github.com/surmon-china/videojs-player. TopGit mirrors GitHub's count but does not claim minute-by-minute accuracy.
What else is in the Frontend space?
surmon-china/videojs-player is tracked by TopGit under the Frontend category, alongside 19 GitHub-tagged topics. Trending and Topics pages list peer repositories of comparable stars and language.
What language is surmon-china/videojs-player written in?
surmon-china/videojs-player is written primarily in TypeScript. GitHub's language field is based on the largest share of bytes in the default branch.
What topics is surmon-china/videojs-player associated with?
Where do I read more about surmon-china/videojs-player?
This TopGit page is a snapshot — the READ ME tab shows the project's own README content (links stripped, images preserved). The GitHub repository at github.com/surmon-china/videojs-player is the definitive source.
Why is surmon-china/videojs-player categorized under Frontend?
TopGit places surmon-china/videojs-player in the Frontend category based on its GitHub topics and description (tagged: "dash-player", "flv-player", "hls-player"). Categories are assigned from real repository metadata, not editorial guesswork.
Read full README in the tab above.
Curious whether videojs-player is right for you?
Let ChatGPT, Claude, or Perplexity look into it — click below and see what AI actually says about videojs-player.