mirror of
https://github.com/blakeblackshear/frigate.git
synced 2025-09-26 19:41:29 +08:00
Fixes (#18500)
* fix i18n keys * hide disable from context menu for viewers * Fix auto live check for default dashboard and camera groups Disabling the Automatic Live View switch in Settings should prevent streaming from occurring. Overriding any settings in a camera group will override the global setting. The check here incorrectly always returned false instead of undefined. * clarify hardware accelerated enrichments * clarify * add note about detect stream to face rec docs * add note about low end Dahuas for autotracking * Catch invalid face box / image * Video tab tweaks With the changes in https://github.com/blakeblackshear/frigate/pull/18220, the video tab in the Tracked Object Details pane now correctly trims the in-browser HLS video. Because of keyframes and record/detect stream differences, we can manually subtract a couple of seconds from the event start_time to ensure the first few frames aren't cut off from the video * Clarify * Don't use Migraphx by default * Provide better support for running embeddings on GPU * correctly join cameras * Adjust blur confidence reduction --------- Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
This commit is contained in:
@@ -46,6 +46,7 @@ import {
|
||||
} from "@/api/ws";
|
||||
import { useTranslation } from "react-i18next";
|
||||
import { useDateLocale } from "@/hooks/use-date-locale";
|
||||
import { useIsAdmin } from "@/hooks/use-is-admin";
|
||||
|
||||
type LiveContextMenuProps = {
|
||||
className?: string;
|
||||
@@ -90,6 +91,10 @@ export default function LiveContextMenu({
|
||||
const { t } = useTranslation("views/live");
|
||||
const [showSettings, setShowSettings] = useState(false);
|
||||
|
||||
// roles
|
||||
|
||||
const isAdmin = useIsAdmin();
|
||||
|
||||
// camera enabled
|
||||
|
||||
const { payload: enabledState, send: sendEnabled } = useEnabledState(camera);
|
||||
@@ -301,17 +306,21 @@ export default function LiveContextMenu({
|
||||
</>
|
||||
)}
|
||||
<ContextMenuSeparator />
|
||||
<ContextMenuItem>
|
||||
<div
|
||||
className="flex w-full cursor-pointer items-center justify-start gap-2"
|
||||
onClick={() => sendEnabled(isEnabled ? "OFF" : "ON")}
|
||||
>
|
||||
<div className="text-primary">
|
||||
{isEnabled ? t("camera.disable") : t("camera.enable")}
|
||||
</div>
|
||||
</div>
|
||||
</ContextMenuItem>
|
||||
<ContextMenuSeparator />
|
||||
{isAdmin && (
|
||||
<>
|
||||
<ContextMenuItem>
|
||||
<div
|
||||
className="flex w-full cursor-pointer items-center justify-start gap-2"
|
||||
onClick={() => sendEnabled(isEnabled ? "OFF" : "ON")}
|
||||
>
|
||||
<div className="text-primary">
|
||||
{isEnabled ? t("camera.disable") : t("camera.enable")}
|
||||
</div>
|
||||
</div>
|
||||
</ContextMenuItem>
|
||||
<ContextMenuSeparator />
|
||||
</>
|
||||
)}
|
||||
<ContextMenuItem disabled={!isEnabled}>
|
||||
<div
|
||||
className="flex w-full cursor-pointer items-center justify-start gap-2"
|
||||
|
@@ -1231,7 +1231,9 @@ export function VideoTab({ search }: VideoTabProps) {
|
||||
]);
|
||||
const endTime = useMemo(() => search.end_time ?? Date.now() / 1000, [search]);
|
||||
|
||||
const source = `${baseUrl}vod/${search.camera}/start/${search.start_time}/end/${endTime}/index.m3u8`;
|
||||
// subtract 2 seconds from start_time to account for keyframes and any differences in the record/detect streams
|
||||
// to help the start of the event from not being completely cut off
|
||||
const source = `${baseUrl}vod/${search.camera}/start/${search.start_time - 2}/end/${endTime}/index.m3u8`;
|
||||
|
||||
return (
|
||||
<>
|
||||
|
@@ -708,8 +708,8 @@ export default function ZoneEditPane({
|
||||
{
|
||||
unit:
|
||||
config?.ui.unit_system == "imperial"
|
||||
? t("feet", { ns: "common" })
|
||||
: t("meters", { ns: "common" }),
|
||||
? t("unit.length.feet", { ns: "common" })
|
||||
: t("unit.length.meters", { ns: "common" }),
|
||||
},
|
||||
)}
|
||||
</FormLabel>
|
||||
@@ -735,8 +735,8 @@ export default function ZoneEditPane({
|
||||
{
|
||||
unit:
|
||||
config?.ui.unit_system == "imperial"
|
||||
? t("feet", { ns: "common" })
|
||||
: t("meters", { ns: "common" }),
|
||||
? t("unit.length.feet", { ns: "common" })
|
||||
: t("unit.length.meters", { ns: "common" }),
|
||||
},
|
||||
)}
|
||||
</FormLabel>
|
||||
@@ -762,8 +762,8 @@ export default function ZoneEditPane({
|
||||
{
|
||||
unit:
|
||||
config?.ui.unit_system == "imperial"
|
||||
? t("feet", { ns: "common" })
|
||||
: t("meters", { ns: "common" }),
|
||||
? t("unit.length.feet", { ns: "common" })
|
||||
: t("unit.length.meters", { ns: "common" }),
|
||||
},
|
||||
)}
|
||||
</FormLabel>
|
||||
@@ -789,8 +789,8 @@ export default function ZoneEditPane({
|
||||
{
|
||||
unit:
|
||||
config?.ui.unit_system == "imperial"
|
||||
? t("feet", { ns: "common" })
|
||||
: t("meters", { ns: "common" }),
|
||||
? t("unit.length.feet", { ns: "common" })
|
||||
: t("unit.length.meters", { ns: "common" }),
|
||||
},
|
||||
)}
|
||||
</FormLabel>
|
||||
|
@@ -563,9 +563,12 @@ export default function DraggableGridLayout({
|
||||
const streamName = streamExists
|
||||
? streamNameFromSettings
|
||||
: firstStreamEntry;
|
||||
const streamType =
|
||||
currentGroupStreamingSettings?.[camera.name]?.streamType;
|
||||
const autoLive =
|
||||
currentGroupStreamingSettings?.[camera.name]?.streamType !==
|
||||
"no-streaming";
|
||||
streamType !== undefined
|
||||
? streamType !== "no-streaming"
|
||||
: undefined;
|
||||
const showStillWithoutActivity =
|
||||
currentGroupStreamingSettings?.[camera.name]?.streamType !==
|
||||
"continuous";
|
||||
|
@@ -486,9 +486,12 @@ export default function LiveDashboardView({
|
||||
const streamName = streamExists
|
||||
? streamNameFromSettings
|
||||
: firstStreamEntry;
|
||||
const streamType =
|
||||
currentGroupStreamingSettings?.[camera.name]?.streamType;
|
||||
const autoLive =
|
||||
currentGroupStreamingSettings?.[camera.name]?.streamType !==
|
||||
"no-streaming";
|
||||
streamType !== undefined
|
||||
? streamType !== "no-streaming"
|
||||
: undefined;
|
||||
const showStillWithoutActivity =
|
||||
currentGroupStreamingSettings?.[camera.name]?.streamType !==
|
||||
"continuous";
|
||||
|
@@ -91,7 +91,7 @@ export function RecordingView({
|
||||
"recordings/summary",
|
||||
{
|
||||
timezone: timezone,
|
||||
cameras: allCameras ?? null,
|
||||
cameras: allCameras.join(",") ?? null,
|
||||
},
|
||||
]);
|
||||
|
||||
|
Reference in New Issue
Block a user