mirror of
https://github.com/blakeblackshear/frigate.git
synced 2025-07-30 13:48:07 +02:00
Bugfixes (#17112)
* ensure disabled and offline messages don't overlay each other * clean up enabled logic * fix on demand recording button * clean up
This commit is contained in:
parent
b3d5cd9e4b
commit
4806d30406
@ -606,23 +606,24 @@ def process_frames(
|
|||||||
|
|
||||||
startup_scan = True
|
startup_scan = True
|
||||||
stationary_frame_counter = 0
|
stationary_frame_counter = 0
|
||||||
|
camera_enabled = True
|
||||||
|
|
||||||
region_min_size = get_min_region_size(model_config)
|
region_min_size = get_min_region_size(model_config)
|
||||||
|
|
||||||
prev_enabled = None
|
|
||||||
|
|
||||||
while not stop_event.is_set():
|
while not stop_event.is_set():
|
||||||
_, enabled_config = enabled_config_subscriber.check_for_update()
|
_, updated_enabled_config = enabled_config_subscriber.check_for_update()
|
||||||
current_enabled = (
|
|
||||||
enabled_config.enabled
|
|
||||||
if enabled_config
|
|
||||||
else (prev_enabled if prev_enabled is not None else True)
|
|
||||||
)
|
|
||||||
if prev_enabled is None:
|
|
||||||
prev_enabled = current_enabled
|
|
||||||
|
|
||||||
if prev_enabled and not current_enabled and camera_metrics.frame_queue.empty():
|
if updated_enabled_config:
|
||||||
|
prev_enabled = camera_enabled
|
||||||
|
camera_enabled = updated_enabled_config.enabled
|
||||||
|
|
||||||
|
if (
|
||||||
|
not camera_enabled
|
||||||
|
and prev_enabled != camera_enabled
|
||||||
|
and camera_metrics.frame_queue.empty()
|
||||||
|
):
|
||||||
logger.debug(f"Camera {camera_name} disabled, clearing tracked objects")
|
logger.debug(f"Camera {camera_name} disabled, clearing tracked objects")
|
||||||
|
prev_enabled = camera_enabled
|
||||||
|
|
||||||
# Clear norfair's dictionaries
|
# Clear norfair's dictionaries
|
||||||
object_tracker.tracked_objects.clear()
|
object_tracker.tracked_objects.clear()
|
||||||
@ -638,9 +639,7 @@ def process_frames(
|
|||||||
for tracker in object_tracker.default_tracker.values():
|
for tracker in object_tracker.default_tracker.values():
|
||||||
tracker.tracked_objects = []
|
tracker.tracked_objects = []
|
||||||
|
|
||||||
prev_enabled = current_enabled
|
if not camera_enabled:
|
||||||
|
|
||||||
if not current_enabled:
|
|
||||||
time.sleep(0.1)
|
time.sleep(0.1)
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
@ -301,22 +301,6 @@ export default function LivePlayer({
|
|||||||
player = <ActivityIndicator />;
|
player = <ActivityIndicator />;
|
||||||
}
|
}
|
||||||
|
|
||||||
// if (cameraConfig.name == "lpr")
|
|
||||||
// console.log(
|
|
||||||
// cameraConfig.name,
|
|
||||||
// "enabled",
|
|
||||||
// cameraEnabled,
|
|
||||||
// "prev enabled",
|
|
||||||
// prevCameraEnabledRef.current,
|
|
||||||
// "offline",
|
|
||||||
// offline,
|
|
||||||
// "show still",
|
|
||||||
// showStillWithoutActivity,
|
|
||||||
// "live ready",
|
|
||||||
// liveReady,
|
|
||||||
// player,
|
|
||||||
// );
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div
|
<div
|
||||||
ref={cameraRef ?? internalContainerRef}
|
ref={cameraRef ?? internalContainerRef}
|
||||||
@ -413,7 +397,7 @@ export default function LivePlayer({
|
|||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{offline && !showStillWithoutActivity && (
|
{offline && !showStillWithoutActivity && cameraEnabled && (
|
||||||
<div className="absolute inset-0 left-1/2 top-1/2 flex h-96 w-96 -translate-x-1/2 -translate-y-1/2">
|
<div className="absolute inset-0 left-1/2 top-1/2 flex h-96 w-96 -translate-x-1/2 -translate-y-1/2">
|
||||||
<div className="flex flex-col items-center justify-center rounded-lg bg-background/50 p-5">
|
<div className="flex flex-col items-center justify-center rounded-lg bg-background/50 p-5">
|
||||||
<p className="my-5 text-lg">Stream offline</p>
|
<p className="my-5 text-lg">Stream offline</p>
|
||||||
|
@ -155,15 +155,20 @@ export interface CameraConfig {
|
|||||||
record: {
|
record: {
|
||||||
enabled: boolean;
|
enabled: boolean;
|
||||||
enabled_in_config: boolean;
|
enabled_in_config: boolean;
|
||||||
events: {
|
alerts: {
|
||||||
objects: string[] | null;
|
|
||||||
post_capture: number;
|
post_capture: number;
|
||||||
pre_capture: number;
|
pre_capture: number;
|
||||||
required_zones: string[];
|
|
||||||
retain: {
|
retain: {
|
||||||
default: number;
|
days: number;
|
||||||
|
mode: string;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
detections: {
|
||||||
|
post_capture: number;
|
||||||
|
pre_capture: number;
|
||||||
|
retain: {
|
||||||
|
days: number;
|
||||||
mode: string;
|
mode: string;
|
||||||
objects: Record<string, unknown>;
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
expire_interval: number;
|
expire_interval: number;
|
||||||
|
@ -1013,7 +1013,7 @@ function FrigateCameraFeatures({
|
|||||||
<div className="font-semibold">
|
<div className="font-semibold">
|
||||||
Started manual on-demand recording.
|
Started manual on-demand recording.
|
||||||
</div>
|
</div>
|
||||||
{!camera.record.enabled || camera.record.retain.days == 0 ? (
|
{!camera.record.enabled || camera.record.alerts.retain.days == 0 ? (
|
||||||
<div>
|
<div>
|
||||||
Since recording is disabled or restricted in the config for this
|
Since recording is disabled or restricted in the config for this
|
||||||
camera, only a snapshot will be saved.
|
camera, only a snapshot will be saved.
|
||||||
|
Loading…
Reference in New Issue
Block a user