From abdf30dc47de01f326aa32b019bdfb70fedd9ed5 Mon Sep 17 00:00:00 2001
From: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com>
Date: Wed, 3 Jan 2024 08:12:27 -0600
Subject: [PATCH] birdseye mse
---
.../components/player/BirdseyeLivePlayer.tsx | 16 +++++++++++++++-
web/src/components/player/LivePlayer.tsx | 10 +---------
web/src/components/player/MsePlayer.tsx | 18 ++++++------------
3 files changed, 22 insertions(+), 22 deletions(-)
diff --git a/web/src/components/player/BirdseyeLivePlayer.tsx b/web/src/components/player/BirdseyeLivePlayer.tsx
index a43e2266a..2c742ee1c 100644
--- a/web/src/components/player/BirdseyeLivePlayer.tsx
+++ b/web/src/components/player/BirdseyeLivePlayer.tsx
@@ -2,6 +2,7 @@ import WebRtcPlayer from "./WebRTCPlayer";
import { BirdseyeConfig } from "@/types/frigateConfig";
import ActivityIndicator from "../ui/activity-indicator";
import JSMpegPlayer from "./JSMpegPlayer";
+import MSEPlayer from "./MsePlayer";
type LivePlayerProps = {
birdseyeConfig: BirdseyeConfig;
@@ -19,7 +20,20 @@ export default function BirdseyeLivePlayer({
);
} else if (liveMode == "mse") {
- return
Not yet implemented
;
+ if ("MediaSource" in window || "ManagedMediaSource" in window) {
+ return (
+
+
+
+ );
+ } else {
+ return (
+
+ MSE is only supported on iOS 17.1+. You'll need to update if available
+ or use jsmpeg / webRTC streams. See the docs for more info.
+
+ );
+ }
} else if (liveMode == "jsmpeg") {
return (
diff --git a/web/src/components/player/LivePlayer.tsx b/web/src/components/player/LivePlayer.tsx
index fca7cb440..93fb61b9e 100644
--- a/web/src/components/player/LivePlayer.tsx
+++ b/web/src/components/player/LivePlayer.tsx
@@ -67,15 +67,7 @@ export default function LivePlayer({
if ("MediaSource" in window || "ManagedMediaSource" in window) {
return (
-
+
);
} else {
diff --git a/web/src/components/player/MsePlayer.tsx b/web/src/components/player/MsePlayer.tsx
index c5b01c02e..6051ada07 100644
--- a/web/src/components/player/MsePlayer.tsx
+++ b/web/src/components/player/MsePlayer.tsx
@@ -1,10 +1,11 @@
+import { baseUrl } from "@/api/baseUrl";
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
type MSEPlayerProps = {
- src: URL;
+ camera: string;
};
-function MSEPlayer({ src }: MSEPlayerProps) {
+function MSEPlayer({ camera }: MSEPlayerProps) {
let connectTS: number = 0;
const RECONNECT_TIMEOUT: number = 30000;
@@ -33,16 +34,9 @@ function MSEPlayer({ src }: MSEPlayerProps) {
const msRef = useRef
(null);
const wsURL = useMemo(() => {
- let updatedSrc = src.toString();
-
- if (updatedSrc.startsWith("http")) {
- updatedSrc = `ws${updatedSrc.substring(4)}`;
- } else if (updatedSrc.startsWith("/")) {
- updatedSrc = `ws${location.origin.substring(4)}${src}`;
- }
-
- return updatedSrc;
- }, [src]);
+ console.log(camera);
+ return `${baseUrl.replace(/^http/, "ws")}live/webrtc/api/ws?src=${camera}`;
+ }, [camera]);
const play = () => {
const currentVideo = videoRef.current;