diff --git a/frigate/config/ui.py b/frigate/config/ui.py
index 2f66aeed3..ea28571bd 100644
--- a/frigate/config/ui.py
+++ b/frigate/config/ui.py
@@ -43,3 +43,4 @@ class UIConfig(FrigateBaseModel):
unit_system: UnitSystemEnum = Field(
default=UnitSystemEnum.metric, title="The unit system to use for measurements."
)
+ show_camera_names: Optional[bool] = Field(default=False, title="Show camera name")
diff --git a/web/public/locales/en/config/ui.json b/web/public/locales/en/config/ui.json
index fec0a9528..af221b923 100644
--- a/web/public/locales/en/config/ui.json
+++ b/web/public/locales/en/config/ui.json
@@ -18,6 +18,9 @@
},
"unit_system": {
"label": "The unit system to use for measurements."
+ },
+ "show_camera_names": {
+ "label": "Show the camera name in the player"
}
}
}
\ No newline at end of file
diff --git a/web/src/components/player/LivePlayer.tsx b/web/src/components/player/LivePlayer.tsx
index 1f5ca703a..5e4f368c1 100644
--- a/web/src/components/player/LivePlayer.tsx
+++ b/web/src/components/player/LivePlayer.tsx
@@ -35,6 +35,7 @@ type LivePlayerProps = {
streamName: string;
preferredLiveMode: LivePlayerMode;
showStillWithoutActivity?: boolean;
+ alwaysShowCameraName?: boolean;
useWebGL: boolean;
windowVisible?: boolean;
playAudio?: boolean;
@@ -59,6 +60,7 @@ export default function LivePlayer({
streamName,
preferredLiveMode,
showStillWithoutActivity = true,
+ alwaysShowCameraName = false,
useWebGL = false,
windowVisible = true,
playAudio = false,
@@ -433,20 +435,26 @@ export default function LivePlayer({
)}
-
+
+ {(alwaysShowCameraName ||
+ (offline && showStillWithoutActivity) ||
+ !cameraEnabled) && (
+
+ {cameraName}
+
+ )}
{autoLive &&
!offline &&
activeMotion &&
((showStillWithoutActivity && !liveReady) || liveReady) && (
)}
- {((offline && showStillWithoutActivity) || !cameraEnabled) && (
-
- {cameraName}
-
- )}
{showStats && (
diff --git a/web/src/types/frigateConfig.ts b/web/src/types/frigateConfig.ts
index ffe4cc14d..8ae94ce56 100644
--- a/web/src/types/frigateConfig.ts
+++ b/web/src/types/frigateConfig.ts
@@ -10,6 +10,7 @@ export interface UiConfig {
dashboard: boolean;
order: number;
unit_system?: "metric" | "imperial";
+ show_camera_names?: boolean;
}
export interface BirdseyeConfig {
diff --git a/web/src/views/live/DraggableGridLayout.tsx b/web/src/views/live/DraggableGridLayout.tsx
index ccd1b373b..2a6793145 100644
--- a/web/src/views/live/DraggableGridLayout.tsx
+++ b/web/src/views/live/DraggableGridLayout.tsx
@@ -610,6 +610,7 @@ export default function DraggableGridLayout({
streamName={streamName}
autoLive={autoLive ?? globalAutoLive}
showStillWithoutActivity={showStillWithoutActivity ?? true}
+ alwaysShowCameraName={config?.ui.show_camera_names ?? false}
useWebGL={useWebGL}
cameraRef={cameraRef}
className={cn(
diff --git a/web/src/views/live/LiveCameraView.tsx b/web/src/views/live/LiveCameraView.tsx
index 2253385ac..1d0aca9b0 100644
--- a/web/src/views/live/LiveCameraView.tsx
+++ b/web/src/views/live/LiveCameraView.tsx
@@ -654,6 +654,7 @@ export default function LiveCameraView({
className={`${fullscreen ? "*:rounded-none" : ""}`}
windowVisible
showStillWithoutActivity={false}
+ alwaysShowCameraName={config?.ui.show_camera_names ?? false}
cameraConfig={camera}
playAudio={audio}
playInBackground={playInBackground ?? false}
diff --git a/web/src/views/live/LiveDashboardView.tsx b/web/src/views/live/LiveDashboardView.tsx
index 0aaca18a1..18402ae02 100644
--- a/web/src/views/live/LiveDashboardView.tsx
+++ b/web/src/views/live/LiveDashboardView.tsx
@@ -549,6 +549,7 @@ export default function LiveDashboardView({
preferredLiveMode={preferredLiveModes[camera.name] ?? "mse"}
autoLive={autoLive ?? globalAutoLive}
showStillWithoutActivity={showStillWithoutActivity ?? true}
+ alwaysShowCameraName={config?.ui.show_camera_names ?? false}
useWebGL={useWebGL}
playInBackground={false}
showStats={statsStates[camera.name]}