React video player built on top of Shaka Player.
Use the package manager yarn or npm to install @mkhuda/react-shaka-player.
yarn add @mkhuda/react-shaka-player shaka-player
or
npm install @mkhuda/react-shaka-player shaka-player// import the css. Now we have custom ui.css
import "@mkhuda/react-shaka-player/dist/ui.css";
import { ReactShakaPlayer } from "@mkhuda/react-shaka-player";
function App() {
return <ReactShakaPlayer autoPlay={true} src={"https://yourvideohere.mpd"} />;
}import "@mkhuda/react-shaka-player/dist/ui.css";
import { ReactShakaPlayer } from "@mkhuda/react-shaka-player";
function App() {
let [mainPlayer, setMainPlayer] = useState({});
useEffect(() => {
const { player, videoElement } = mainPlayer;
if (player) {
async function play() {
await player.load("https://yourvideomaster.mpd");
videoElement.play();
}
play();
}
}, [mainPlayer]);
return (
<div className="App">
<div className="App-main">
<ReactShakaPlayer
playerClassName="player-class-name"
onLoad={(player) => setMainPlayer(player)}
/>
</div>
</div>
);
}This is main props for the components:
| Props | Optional | Description | Type |
|---|---|---|---|
| src | No | MPD or HLS to play | string |
| className | Yes | string of ui overlay classname | string |
| autoPlay | Yes | as it described | boolean |
| superConfig | Yes | The special configs for Streaming or VOD. Will add more superConfig soon. |
string ("STREAMING" / "VOD") |
| config | Yes | Changes configuration settings on Shaka Player. Reference: shaka.extern.PlayerConfiguration. This config will override superConfig. |
object |
| uiConfig | Yes | Changes configuration settings for UI elements. Reference: shaka.extern.UIConfiguration. This config will override superConfig. |
object |
| onLoad | Yes | Catch Shaka.Player, Shaka.ui.Overlay and HTMLVideoElement for manual usages or improvement of configuration. see: PlayerRefs |
object: PlayerRefs => func |
| onPlay | Yes | Catch when media is playing | func |
| onPlause | Yes | Catch when media is paused | func |
| onEnded | Yes | Catch when video is end | func |
| onBuffering | Yes | Catch onBuffering status when playing |
bool => func |
| onPlayerError | Yes | Catch error when playing. Reference: Shaka.Player.ErrorEvent |
{Shaka.extern.Error} => func |
| onStatsChanged | Yes | Catch stats when playing video, including currentTime (current seek position), and currentEndTime (length of video duration if VOD) (in seconds) of media player element [IStats]. Reference: IStats & Shaka.extern.Stats |
{Shaka.extern.Stats} => func |
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
Please make sure to update tests as appropriate.