From 51ca86268366c5475fc461c70eb261bd9fec2ed1 Mon Sep 17 00:00:00 2001 From: Nicolas Mowen Date: Tue, 13 Feb 2024 07:50:30 -0700 Subject: [PATCH] Use webrtc for safari --- web/src/components/player/LivePlayer.tsx | 1 + web/src/components/player/WebRTCPlayer.tsx | 29 ++++++++++++++-------- web/src/pages/Live.tsx | 4 ++- 3 files changed, 22 insertions(+), 12 deletions(-) diff --git a/web/src/components/player/LivePlayer.tsx b/web/src/components/player/LivePlayer.tsx index f6f9c535f..d92dcdb90 100644 --- a/web/src/components/player/LivePlayer.tsx +++ b/web/src/components/player/LivePlayer.tsx @@ -87,6 +87,7 @@ export default function LivePlayer({ setLiveReady(true)} /> ); diff --git a/web/src/components/player/WebRTCPlayer.tsx b/web/src/components/player/WebRTCPlayer.tsx index e869738d7..1e86dab70 100644 --- a/web/src/components/player/WebRTCPlayer.tsx +++ b/web/src/components/player/WebRTCPlayer.tsx @@ -4,16 +4,21 @@ import { useCallback, useEffect, useRef } from "react"; type WebRtcPlayerProps = { className?: string; camera: string; + playbackEnabled?: boolean; onPlaying?: () => void; }; export default function WebRtcPlayer({ className, camera, + playbackEnabled = true, onPlaying, }: WebRtcPlayerProps) { + // camera states + const pcRef = useRef(); const videoRef = useRef(null); + const PeerConnection = useCallback( async (media: string) => { if (!videoRef.current) { @@ -129,6 +134,10 @@ export default function WebRtcPlayer({ return; } + if (!playbackEnabled) { + return; + } + const url = `${baseUrl.replace( /^http/, "ws" @@ -143,18 +152,16 @@ export default function WebRtcPlayer({ pcRef.current = undefined; } }; - }, [camera, connect, PeerConnection, pcRef, videoRef]); + }, [camera, connect, PeerConnection, pcRef, videoRef, playbackEnabled]); return ( -
-
+