diff --git a/src/element/live-video-player.tsx b/src/element/live-video-player.tsx index bad2cec..6b3df9b 100644 --- a/src/element/live-video-player.tsx +++ b/src/element/live-video-player.tsx @@ -1,9 +1,15 @@ import Hls from "hls.js"; -import { HTMLProps, useEffect, useMemo, useRef } from "react"; +import { HTMLProps, useEffect, useMemo, useRef, useState } from "react"; + +export enum VideoStatus { + Online = "online", + Offline = "offline" +} export function LiveVideoPlayer(props: HTMLProps & { stream?: string }) { const video = useRef(null); const streamCached = useMemo(() => props.stream, [props.stream]); + const [status, setStatus] = useState(); useEffect(() => { if (streamCached && video.current && !video.current.src && Hls.isSupported()) { @@ -13,17 +19,22 @@ export function LiveVideoPlayer(props: HTMLProps & { stream?: hls.on(Hls.Events.ERROR, (event, data) => { console.debug(event, data); const errorType = data.type; - if(errorType === Hls.ErrorTypes.NETWORK_ERROR) { + if (errorType === Hls.ErrorTypes.NETWORK_ERROR) { hls.stopLoad(); hls.detachMedia(); + setStatus(VideoStatus.Offline); } }) + hls.on(Hls.Events.MANIFEST_PARSED, () => { + setStatus(VideoStatus.Online); + }) return () => hls.destroy(); } }, [video, streamCached]); return ( -
-