From 06aeb386213f33275cf49fde6b8708258399cda8 Mon Sep 17 00:00:00 2001 From: GLDuval Date: Sun, 7 May 2023 15:22:49 -0400 Subject: [PATCH] Cleanup code --- script/rtspServer.js | 2 +- .../components/Feed/Feeds/RTSPFeed.tsx | 47 ++++++++----------- 2 files changed, 21 insertions(+), 28 deletions(-) diff --git a/script/rtspServer.js b/script/rtspServer.js index 76a166b9..d2d9b52e 100644 --- a/script/rtspServer.js +++ b/script/rtspServer.js @@ -19,7 +19,7 @@ new Stream({ wsPort: parseInt(args[1]), ffmpegOptions: { // options ffmpeg flags - '-re': '', // read input at native frame rate + '-r': 30, '-q': 0, // quality video in scale [0, 32] }, }); diff --git a/src/renderer/components/Feed/Feeds/RTSPFeed.tsx b/src/renderer/components/Feed/Feeds/RTSPFeed.tsx index 111cccac..bc0945fc 100644 --- a/src/renderer/components/Feed/Feeds/RTSPFeed.tsx +++ b/src/renderer/components/Feed/Feeds/RTSPFeed.tsx @@ -1,4 +1,4 @@ -import React, { useEffect, useRef, useState } from 'react'; +import React, { useEffect, useRef } from 'react'; import JSMpeg from '@cycjimmy/jsmpeg-player'; import { log } from '@/renderer/logger'; @@ -11,47 +11,40 @@ interface Props { export const RTSPFeed = ({ url, flipped, rotated }: Props) => { const videoRef = useRef(null); const canvasRef = useRef(null); - const [port, setPort] = useState(null); - const [videoElement, setVideoElement] = - useState(); useEffect(() => { const videoWrapper = videoRef.current; const canvas = canvasRef.current; + let videoElement: JSMpeg.VideoElement | null = null; + let port: number | null = null; const startServer = async () => { - const port = (await window.preloadApi.rtsp.start(url)) as number; - log.info(`RTSP server started on port ${port}`); + port = (await window.preloadApi.rtsp.start(url)) as number; + if (videoWrapper && canvas) { - setVideoElement( - new JSMpeg.VideoElement( - videoWrapper, - `ws://localhost:${port}`, - { - canvas, - autoplay: true, - audio: false, - }, - { videoBufferSize: 2048 * 2048 } - ) + log.info(`RTSP server started on port ${port}`); + videoElement = new JSMpeg.VideoElement( + videoWrapper, + `ws://localhost:${port}`, + { + canvas, + autoplay: true, + audio: false, + }, + { videoBufferSize: 2048 * 2048 } ); - setPort(port); } }; - if (!port && !videoElement) { - startServer().catch((e) => log.error(e)); - } + + startServer().catch((e) => log.error(e)); return () => { - if (port) { + if (videoElement && port) { log.info(`Stopping RTSP server for ${url}`); window.preloadApi.rtsp.stop(port); - setPort(null); - if (videoElement) { - videoElement.destroy(); - } + videoElement.destroy(); } }; - }, [port, url, videoElement]); + }, [url]); return (