import React, { useEffect, useRef } from "react"; import videojs from "video.js"; import type Player from "video.js/dist/types/player"; import "video.js/dist/video-js.css"; interface VideoPlayerProps { streamId: number; } const VideoPlayer: React.FC = ({ streamId }) => { const videoRef = useRef(null); const playerRef = useRef(null); useEffect(() => { // Makes sure Video.js player is only initialized once if (!playerRef.current && videoRef.current) { const videoElement = document.createElement("video"); videoElement.classList.add( "video-js", "vjs-big-play-centered", "w-full", "h-full", ); videoRef.current.appendChild(videoElement); playerRef.current = videojs(videoElement, { controls: true, fluid: true, responsive: true, // autoplay: true, loop: true, aspectRatio: "16:9", sources: [ { src: `/images/sample_game_video.mp4`, // type: "application/x-mpegURL", type: "video/mp4", }, ], }); } // Dispose the Video.js player when the component unmounts return () => { if (playerRef.current) { playerRef.current.dispose(); playerRef.current = null; } }; }, [streamId]); return (
); }; export default VideoPlayer;