React wrapper for VideoJS. Live Demo
npm install --save @csod-oss/react-video-js-player
import React, { Component } from 'react';
import VideoPlayer from '@csod-oss/react-video-js-player';
class VideoApp extends Component {
player = {};
state = {
video: {
src: 'http://www.example.com/path/to/video.mp4',
poster: 'http://www.example.com/path/to/video_poster.jpg'
}
};
onPlayerReady(player) {
console.log('Player is ready: ', player);
this.player = player;
}
onVideoPlay(duration) {
console.log('Video played at: ', duration);
}
onVideoPause(duration) {
console.log('Video paused at: ', duration);
}
onVideoTimeUpdate(duration) {
console.log('Time updated: ', duration);
}
onVideoSeeking(duration) {
console.log('Video seeking: ', duration);
}
onVideoSeeked(from, to) {
console.log(`Video seeked from ${from} to ${to}`);
}
onVideoEnd() {
console.log('Video ended');
}
render() {
return (
<div>
<VideoPlayer
controls={true}
src={this.state.video.src}
poster={this.state.video.poster}
width='720'
height='420'
onReady={this.onPlayerReady.bind(this)}
onPlay={this.onVideoPlay.bind(this)}
onPause={this.onVideoPause.bind(this)}
onTimeUpdate={this.onVideoTimeUpdate.bind(this)}
onSeeking={this.onVideoSeeking.bind(this)}
onSeeked={this.onVideoSeeked.bind(this)}
onEnd={this.onVideoEnd.bind(this)}
/>
</div>
);
}
}
export default VideoApp;
onReady will return
videojs
instance. Which means you can use all the APIs provided by VideoJS.
List of VideoJS APIs
Since most of the VideoJS plugins needs
videojs
instance to get initialized, it is very easy to integrate any of the available plugins by making use ofvideojs
instance returnd by onReady event.
List of VideoJS plugins
Prop Name | Prop Type | Default Value | Description |
---|---|---|---|
autoplay | boolean |
false |
Video will start playing automatically if true |
bigPlayButton | boolean |
true |
Big play button visibility toggle |
bigPlayButtonCentered | boolean |
true |
Big play button center position toggle |
className | string |
"" |
Video player wrapper class. It can be used for custom player skin. |
controls | boolean |
true |
Video player control bar toggle |
height | string | number |
auto |
Video player height |
hideControls | array |
[] |
List of controls to hide. ['play','volume','seekbar','timer','playbackrates','fullscreen'] |
playbackRates | array |
[0.5, 1, 1.5, 2] |
Video speed control |
preload | string |
auto |
video tag preload attribute |
poster | string |
"" |
Video poster file path |
src | string |
"" |
Video file path |
width | string | number |
auto |
Video player width |
withCredentials | boolean |
true |
When the withCredentials property is set to true , all XHR requests for manifests and segments would have withCredentials set to true as well. This enables storing and passing cookies from the server that the manifests and segments live on. This has some implications on CORS because when set, the Access-Control-Allow-Origin header cannot be set to *, also, the response headers require the addition of Access-Control-Allow-Credentials header which is set to true . See html5rocks's article for more info. |
Method Name | Description |
---|---|
onEnd | It will fire when video is finished playing. |
onPause | It will fire when video is paused. It returns current time of the video |
onPlay | It will fire when video starts playing anytime. It returns current time of the video |
onReady | It will fire when video player is ready to be used. It returns videojs instance. |
onSeeked | It will fire after seeking is done. It returns seek start time and seek end time for the video. |
onSeeking | It will fire when video is being seeked using seekbar. It returns current time of the video |
onTimeUpdate | It keeps firing while video is in playing state. It returns current time of the video |