diff --git a/web/src/components/JSMpegPlayer.jsx b/web/src/components/JSMpegPlayer.jsx index 323b30771..389d8a8da 100644 --- a/web/src/components/JSMpegPlayer.jsx +++ b/web/src/components/JSMpegPlayer.jsx @@ -5,14 +5,13 @@ import JSMpeg from '@cycjimmy/jsmpeg-player'; export default function JSMpegPlayer({ camera }) { const playerRef = useRef(); - const canvasRef = useRef(); const url = `${baseUrl.replace(/^http/, 'ws')}/live/${camera}` useEffect(() => { const video = new JSMpeg.VideoElement( playerRef.current, url, - {canvas: canvasRef.current}, + {}, {protocols: [], audio: false} ); @@ -22,8 +21,7 @@ export default function JSMpegPlayer({ camera }) { }, [url]); return ( -
- +
); } diff --git a/web/src/index.css b/web/src/index.css index d55a9aabc..1ccb2fad7 100644 --- a/web/src/index.css +++ b/web/src/index.css @@ -25,3 +25,7 @@ transform: rotate(360deg); } } + +.jsmpeg canvas { + position: static !important; +} diff --git a/web/src/routes/Camera.jsx b/web/src/routes/Camera.jsx index dab0350e4..fa83255c6 100644 --- a/web/src/routes/Camera.jsx +++ b/web/src/routes/Camera.jsx @@ -1,5 +1,6 @@ -import { h } from 'preact'; +import { h, Fragment } from 'preact'; import AutoUpdatingCameraImage from '../components/AutoUpdatingCameraImage'; +import JSMpegPlayer from '../components/JSMpegPlayer'; import Button from '../components/Button'; import Card from '../components/Card'; import Heading from '../components/Heading'; @@ -16,6 +17,7 @@ export default function Camera({ camera }) { const { data: config } = useConfig(); const apiHost = useApiHost(); const [showSettings, setShowSettings] = useState(false); + const [viewMode, setViewMode] = useState('live'); const cameraConfig = config?.cameras[camera]; const [options, setOptions] = usePersistence(`${camera}-feed`, emptyObject); @@ -79,9 +81,16 @@ export default function Camera({ camera }) {
) : null; - return ( -
- {camera} + let player; + if (viewMode == 'live') { + player = <> +
+ +
+ ; + } + else if (viewMode == 'debug') { + player = <>
@@ -93,6 +102,24 @@ export default function Camera({ camera }) { {showSettings ? 'Hide' : 'Show'} Options {showSettings ? : null} + ; + } + + return ( +
+ {camera} +
+ +
+ + {player}
Tracked objects