https://github.com/devcshort/react-hls
Simple React component for playing hls/rtmp live streams.
https://github.com/devcshort/react-hls
component hacktoberfest hls hls-player react react-component video-player
Last synced: 12 months ago
JSON representation
Simple React component for playing hls/rtmp live streams.
- Host: GitHub
- URL: https://github.com/devcshort/react-hls
- Owner: devcshort
- License: mit
- Fork: true (mingxinstar/react-hls)
- Created: 2019-07-18T23:04:39.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2023-11-02T10:42:59.000Z (over 2 years ago)
- Last Synced: 2024-11-18T19:49:12.295Z (over 1 year ago)
- Topics: component, hacktoberfest, hls, hls-player, react, react-component, video-player
- Language: TypeScript
- Homepage: https://www.npmjs.com/package/react-hls-player
- Size: 2.33 MB
- Stars: 120
- Watchers: 1
- Forks: 48
- Open Issues: 28
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# React HLS Player

[](#contributors-)


## Introduction
`react-hls-player` is a simple HLS live stream player.
It uses [hls.js](https://github.com/video-dev/hls.js) to play your hls live stream if your browser supports `html 5 video` and `MediaSource Extension`.
## Examples
### Using the ReactHlsPlayer component
```javascript
import React from 'react';
import ReactDOM from 'react-dom';
import ReactHlsPlayer from 'react-hls-player';
ReactDOM.render(
,
document.getElementById('app')
);
```
### Using hlsConfig (advanced use case)
All available config properties can be found on the [Fine Tuning](https://github.com/video-dev/hls.js/blob/master/docs/API.md#fine-tuning) section of the Hls.js API.md
```javascript
import React from 'react';
import ReactDOM from 'react-dom';
import ReactHlsPlayer from 'react-hls-player';
ReactDOM.render(
,
document.getElementById('app')
);
```
### Using playerRef
The `playerRef` returns a ref to the underlying video component, and as such will give you access to all video component properties and methods.
```javascript
import React from 'react';
import ReactHlsPlayer from 'react-hls-player';
function MyCustomComponent() {
const playerRef = React.useRef();
function playVideo() {
playerRef.current.play();
}
function pauseVideo() {
playerRef.current.pause();
}
function toggleControls() {
playerRef.current.controls = !playerRef.current.controls;
}
return (
);
}
ReactDOM.render(, document.getElementById('app'));
```
You can also listen to events of the video
```javascript
import React from 'react';
import ReactHlsPlayer from 'react-hls-player';
function MyCustomComponent() {
const playerRef = React.useRef();
React.useEffect(() => {
function fireOnVideoStart() {
// Do some stuff when the video starts/resumes playing
}
playerRef.current.addEventListener('play', fireOnVideoStart);
return playerRef.current.removeEventListener('play', fireOnVideoStart);
}, []);
React.useEffect(() => {
function fireOnVideoEnd() {
// Do some stuff when the video ends
}
playerRef.current.addEventListener('ended', fireOnVideoEnd);
return playerRef.current.removeEventListener('ended', fireOnVideoEnd);
}, []);
return (
);
}
ReactDOM.render(, document.getElementById('app'));
```
## Props
All [video properties](https://www.w3schools.com/tags/att_video_poster.asp) are supported and passed down to the underlying video component
| Prop | Description |
| ------------------------ | ----------------------------------------------------------------------------------------------------------------------- |
| src `String`, `required` | The hls url that you want to play |
| autoPlay `Boolean` | Autoplay when component is ready. Defaults to `false` |
| controls `Boolean` | Whether or not to show the playback controls. Defaults to `false` |
| width `Number` | Video width. Defaults to `100%` |
| height `Number` | Video height. Defaults to `auto` |
| hlsConfig `Object` | `hls.js` config, you can see all config [here](https://github.com/video-dev/hls.js/blob/master/docs/API.md#fine-tuning) |
| playerRef `React Ref` | Pass in your own ref to interact with the video player directly. This will override the default ref. |
### Additional Notes
By default, the HLS config will have `enableWorker` set to `false`. There have been issues with the HLS.js library that breaks some React apps, so I've disabled it to prevent people from running in to this issue. If you want to enable it and see if it works with your React app, you can simply pass in `enableWorker: true` to the `hlsConfig` prop object. [See this issue for more information](https://github.com/video-dev/hls.js/issues/2064)
## Contributors ✨
Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):
This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!