blakeblackshear.frigate/web/src/components/VideoPlayer.jsx

45 lines
977 B
React
Raw Normal View History

2021-05-28 19:13:48 +02:00
import { h, Component } from 'preact';
import videojs from 'video.js';
import 'videojs-playlist';
import 'video.js/dist/video-js.css';
const defaultOptions = {
controls: true,
fluid: true,
};
export default class VideoPlayer extends Component {
componentDidMount() {
const { options, onReady = () => {} } = this.props;
const videoJsOptions = {
...defaultOptions,
...options,
};
this.player = videojs(this.videoNode, videoJsOptions, function onPlayerReady() {
onReady(this);
});
}
componentWillUnmount() {
if (this.player) {
this.player.dispose();
}
}
shouldComponentUpdate() {
return false;
}
render() {
2021-06-02 08:41:26 +02:00
const { style, children } = this.props;
2021-05-28 19:13:48 +02:00
return (
<div style={style}>
<div data-vjs-player>
2021-06-02 08:41:26 +02:00
<video ref={(node) => (this.videoNode = node)} className="video-js vjs-default-skin" controls playsinline />
{children}
2021-05-28 19:13:48 +02:00
</div>
</div>
);
}
}