Compare commits

..

300 Commits

Author SHA1 Message Date
Nicolas Mowen
1d5c2466a8 Update HIKVISION camera link in hardware documentation (#21256) 2025-12-12 14:25:22 -06:00
GuoQing Liu
0a293aebab docs: update OpenVINO D-FINE configuration default device (#21231)
* docs: remove OpenVINO D-FINE configuration device

* docs: change D-FINE model detectors default device
2025-12-11 06:31:52 -07:00
User873902
1de7519d1a Update camera_specific.md for Wyze Cameras (Thingino) (#21221)
* Update camera_specific.md

Wyze Cameras alternative firmware considerations.

* Update docs/docs/configuration/camera_specific.md

Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>

* Update docs/docs/configuration/camera_specific.md

* Update camera_specific.md

Moved Wyze Camera section

---------

Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
2025-12-10 10:33:10 -07:00
GuoQing Liu
c3f596327e docs: fix the missing quotes in the Reolink example within the documentation (#21178) 2025-12-07 07:38:41 -07:00
Nicolas Mowen
90344540b3 Fix jetson build (#21173) 2025-12-06 09:16:23 -06:00
Josh Hawkins
7167cf57c5 pin cryptography version to fix vapid issues (#21126) 2025-12-02 07:20:50 -07:00
Josh Hawkins
e47e82f4be Pin onnx in rfdetr model generation command (#21127)
* pin onnx in rfdetr model generation command

* Apply suggestion from @NickM-27

Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>

---------

Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
2025-12-02 08:15:12 -06:00
munit85
a43d294bd1 Add Axis Q-6155E camera configuration details (#21105)
* Add Axis Q-6155E camera configuration details

Added Axis Q-6155E camera details with ONVIF service port information.

* Update Axis Q-6155E ONVIF autotracking support details

Added the reason for autotracking not working
2025-12-01 10:47:01 -07:00
Josh Hawkins
9f95a5f31f version bump in docs (#21111) 2025-12-01 07:21:27 -07:00
Josh Hawkins
592c245dcd Fixes (#21061)
* require admin role to delete users

* explicitly prevent deletion of admin user

* Recordings playback fixes

* Remove nvidia pyindex

* Update version

---------

Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
2025-11-26 07:27:16 -06:00
h-leth
914ff4f1e5 add comment about unifi g5 and newer cams (#21003) 2025-11-22 12:41:13 -06:00
Josh Hawkins
9589c5fc24 Fix rf-detr heading (#20963)
The link earlier in the file was referencing "#downloading-rf-detr-model"
2025-11-18 18:15:38 -07:00
Nicolas Mowen
3620ef27db Update hailo installation instructions (#20847)
* Update hailo docs installation

* Adjust section separation
2025-11-08 13:21:15 -06:00
GuoQing Liu
5cf2ae0121 docs: remove webrtc not support H.265 tips (#20769) 2025-11-05 06:23:45 -06:00
Nicolas Mowen
17d2bc240a Update recommended hardware to list more models (#20777)
* Update recommended hardware to list more models

* Update hardware.md with new Intel models and links
2025-11-04 10:56:28 -06:00
Nicolas Mowen
6fd7f862f5 Update coral docs / links (#20674)
* Revise GPU and AI accelerator recommendations

Updated hardware recommendations for AI acceleration.

* Revise PCIe Coral driver installation instructions

Updated instructions for PCIe Coral driver installation.

* Revise Coral driver installation instructions

Updated driver installation instructions for PCIe and M.2 versions of Google Coral.

* Change PCIe Coral driver link in getting_started.md

Updated the link for PCIe Coral driver instructions.

* Change PCIe Coral driver link in installation guide

Updated the link for PCIe Coral driver instructions.

* Update Coral TPU recommendation in hardware documentation

Added a warning about the Coral TPU's recommendation status for new Frigate installations and suggested alternatives.
2025-10-26 06:56:01 -05:00
Nicolas Mowen
5d038b5c75 Update PWA requirements and add usage section (#20562)
Added VPN as a secure context option for PWA installation and included a usage section.
2025-10-26 05:39:09 -06:00
Nicolas Mowen
c5fe354552 Improve Reolink Camera Documentation (#20605)
* Improve Reolink Camera Documentation

* Update Reolink configuration link in live.md
2025-10-21 16:20:41 -06:00
Josh Hawkins
5dc8a85f2f Update Azure OpenAI genai docs (#20549)
* Update azure openai genai docs

* tweak url
2025-10-18 06:44:26 -06:00
Nicolas Mowen
0302db1c43 Fix model exports (#20540) 2025-10-17 07:16:30 -05:00
Nicolas Mowen
a4764563a5 Fix YOLOv9 export script (#20514) 2025-10-16 07:56:37 -05:00
Josh Hawkins
942a61ddfb version bump in docs (#20501) 2025-10-15 05:53:31 -06:00
Nicolas Mowen
4d582062fb Ensure that a user must provide an image in an expected location (#20491)
* Ensure that a user must provide an image in an expected location

* Use const
2025-10-14 16:29:20 -05:00
Nicolas Mowen
e0a8445bac Improve rf-detr export (#20485) 2025-10-14 08:32:44 -05:00
Josh Hawkins
2a271c0f5e Update GenAI docs for Gemini model deprecation (#20462) 2025-10-13 10:00:21 -06:00
Nicolas Mowen
925bf78811 Update review topic description (#20445) 2025-10-12 07:28:08 -05:00
Sean Kelly
59102794e8 Add keyboard shortcut for switching to previous label (#20426)
* Add keyboard shortcut for switching to previous label

* Update docs/docs/plus/annotating.md

Co-authored-by: Blake Blackshear <blake.blackshear@gmail.com>

---------

Co-authored-by: Blake Blackshear <blake.blackshear@gmail.com>
2025-10-11 10:43:41 -06:00
mpking828
20e5e3bdc0 Update camera_specific.md to fix 2 way audio example for Reolink (#20343)
Update camera_specific.md to fix 2 way audio example for Reolink
2025-10-03 08:49:51 -06:00
AmirHossein_Omidi
b94ebda9e5 Update license_plate_recognition.md (#20306)
* Update license_plate_recognition.md

Add PaddleOCR description for license plate recognition in Frigate docs

* Update docs/docs/configuration/license_plate_recognition.md

Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com>

* Update docs/docs/configuration/license_plate_recognition.md

Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com>

---------

Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com>
2025-10-01 08:18:47 -05:00
Nicolas Mowen
8cdaef307a Update face rec docs (#20256)
* Update face rec docs

* clarify

Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com>

---------

Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com>
2025-09-28 11:31:59 -05:00
Josh Hawkins
4914029a50 Add average_estimated_speed to mqtt docs (#20101) 2025-09-16 11:03:36 -06:00
GuoQing Liu
bafdab9d67 feat: add robots.txt (#20093) 2025-09-16 06:14:27 -06:00
GuoQing Liu
b08db4913f feat: add github mirror download endpoint (#20007)
* feat: add github mirror download endpoint

* fix: fix face_embedding endpoint line

* fix: fix github raw endpoint

Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com>

---------

Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com>
2025-09-14 06:51:56 -06:00
Nicolas Mowen
7c7ff49b90 Improve d-fine model export docs (#20020) 2025-09-11 06:17:08 -05:00
Nicolas Mowen
037c4d1cc0 Don't block UI while pulling the stream live info (#19998) 2025-09-09 17:53:26 -05:00
laviddichterman
1613499218 Update object_detectors.md to document configuring image size in YOLO 9 (#19951)
* Update object_detectors.md for v16

* add configurability to IMG_SIZE for YOLOv9 export
* remove TensorRT detector as it's no longer supported in v16

* Revert removing NVIDIA TensorRT detector docs

Added documentation for NVidia TensorRT Detector, including model generation, configuration parameters, and example usage.

* Dumb copy/paste

* Enhance YOLOv9 export instructions in documentation

Updated YOLOv9 export command to include IMG_SIZE parameter and clarified model size options.
2025-09-09 14:27:30 -06:00
Nicolas Mowen
205fdf3ae3 Fixes (#19984)
* Always handle RKNN as NHWC in Frigate+ model loading

* Correct Intel stats

* Update inference time docs

* Update version

* Adjust inference speeds
2025-09-09 06:17:56 -06:00
Nicolas Mowen
f46f8a2160 More inference speed updates (#19974) 2025-09-08 10:39:33 -06:00
Josh Hawkins
880902cdd7 Add specific notes for frigate+ models in object detector docs (#19971) 2025-09-08 09:29:03 -05:00
Nicolas Mowen
c5ed95ec52 More inference speed updates (#19947)
* More inference speed updates

* Update hardware.md

* Update hardware.md

* Update index.md

* More inference speeds

* Update home-assistant.md

* Update object_detectors.md

* Update first_model.md
2025-09-08 07:43:04 -05:00
Josh Hawkins
751de141d5 Fix model selection type in Frigate+ settings pane (#19952)
* model type does not need to match config model type

As long as a model is supported by a detector, it should be available in the list

* fix missing semicolon

the web linter was complaining
2025-09-07 19:19:40 -06:00
Nicolas Mowen
0eb441fe50 Update inference times for yolov9 (#19946) 2025-09-07 14:59:48 -05:00
Josh Hawkins
7566aecb0b Add note about Apple Silicon support in 0.17 (#19944) 2025-09-07 14:12:49 -05:00
Blake Blackshear
60714a733e update docs for Frigate+ yolov9 (#19938)
* update docs for Frigate+ yolov9

* footnote memryx suport

* tweaks
2025-09-07 06:01:10 -05:00
Josh Hawkins
d7f7cd7be1 best thumbnail endpoint should pass correct extension param (#19930) 2025-09-05 06:33:57 -05:00
GuoQing Liu
6591210050 docs: fix reolink camera table display (#19926) 2025-09-05 06:01:26 -05:00
Nicolas Mowen
7e7b3288a8 Update live FAQ for camera distortion (#19907)
* Add item to FAQ about stream distortion

* Update updating docs

* Update link
2025-09-04 07:44:33 -05:00
Nicolas Mowen
fe3eb24dfe Update Reolink support docs (#19887) 2025-09-02 15:21:18 -05:00
Nicolas Mowen
e664cb2285 Set lower bound on retry interval (#19883) 2025-09-02 11:24:25 -05:00
Josh Hawkins
62047c80d5 Poll for camera status on tracking end instead of waiting (#19879) 2025-09-02 06:17:01 -06:00
Josh Hawkins
198e53bd42 Fix stream stats display (#19874)
* Fix stats calculations and labels

* fix linter from complaining

* fix mse calc

* label
2025-09-01 19:23:44 -05:00
Josh Hawkins
f7ed8b4cab Autotracking improvements (#19873)
* Use asyncio lock when checking camera status

get_camera_status() can be called during normal autotracking movement and from routine camera_maintenance(). Some cameras cause one of the status calls to hang, which then subsequently hangs autotracking. A lock serializes access and prevents the hang.

* use while loop in camera_maintenance for status check

some cameras seem to take a little bit to update their status, don't assume the first call shows the motor has stopped
2025-09-01 19:18:50 -05:00
Nicolas Mowen
e9dc30235b Cleanup vod clip handling and add padding arg (#19813) 2025-08-28 07:09:23 -05:00
Josh Hawkins
16b7f7f6e7 Fix HLS video initial aspect on Chrome (#19805)
Explore videos are very small on Chrome specifically, this has something to do with how the latest version of Chrome loads video metadata. This change provides a default aspect ratio instead of a default height when the container ref is not defined yet
2025-08-27 12:27:18 -06:00
Nicolas Mowen
281c461647 Add support for Frigate+ input data type (#19799) 2025-08-27 06:27:08 -06:00
Josh Hawkins
667c302a7d Allow scrolling on languages menu on mobile devices (#19797) 2025-08-27 05:44:10 -06:00
GuoQing Liu
ad694f5511 docs: rk ffmpeg preset is outdated (#19780)
* docs: rk ffmpeg preset is outdated

* 更新 hardware_acceleration_video.md

docs: remove video decoding page redundant titles
2025-08-26 15:24:58 -06:00
Josh Hawkins
fa6956c46e Update openapi schema with include_thumbnails deprecation comment (#19777) 2025-08-26 15:24:43 -06:00
Josh Hawkins
b5aa1b2c21 Fix autotracking calibration crash when zooming is disabled (#19776) 2025-08-26 12:39:23 -05:00
GuoQing Liu
f62feeb50c docs: update hardware acceleation video page nvidia docker compose image (#19762) 2025-08-26 06:01:34 -06:00
Josh Hawkins
0dda37ac43 fix export dialog overflowing due to i18n time lengths (#19736)
wrap the pair of custom time pickers in a flex-wrap
2025-08-25 17:11:42 -06:00
Nicolas Mowen
4fcb1ea7ac Unload HLS on unmount (#19747)
* Unload HLS player on unmount so segments don't continue to load

* Add query arg for event padding
2025-08-25 13:33:17 -05:00
Nicolas Mowen
4347402fcc Don't mention 9.0.0 GFX version (#19742) 2025-08-25 07:32:50 -05:00
Josh Hawkins
4fe246f472 Fixes (#19708)
* use custom swr fetcher to check for audio support

The go2rtc API doesn't always return stream data for anything not being actively consumed, so audio support was not always being correctly deduced. So we can use a custom swr fetcher to call the endpoint that probes the streams, which returns the correct producers data.

* return correct mime type for thumbnail and latest frame endpoints

follow up to https://github.com/blakeblackshear/frigate/pull/19555
2025-08-22 07:04:30 -05:00
Josh Hawkins
7cf439e010 remove h264 reference for webrtc (#19688) 2025-08-21 08:21:18 -06:00
Josh Hawkins
8a01643acf clarify webrtc for two way talk (#19683) 2025-08-21 04:43:07 -06:00
Josh Hawkins
664a6fd0cb remove newlines (#19671)
let mermaid format the text directly
2025-08-20 14:19:55 -06:00
Josh Hawkins
2b185a1105 Update bug report template (#19664)
* update bug report template

* remove additional field
2025-08-20 12:57:24 -06:00
Josh Hawkins
75e33d8a56 Catch invalid key in genai prompt (#19657) 2025-08-20 08:03:50 -05:00
Jan Šuklje
8f4b5b4bdb Refactored Viewer role Notifications settings (#19640)
- now each individual element is shown if allowed by role, instead of having multiple return statement for each role
2025-08-19 18:29:11 -06:00
Josh Hawkins
95cea06dd3 Revert video dimension layout fix for chrome (#19636)
originally introduced in https://github.com/blakeblackshear/frigate/pull/19414
2025-08-19 14:42:20 -05:00
Nicolas Mowen
ec2543c23f Fix hls not loading video in explore (#19625) 2025-08-19 13:14:14 -05:00
Josh Hawkins
d27e8c1bbf run autotracking setup method in asyncio coroutine (#19614) 2025-08-19 07:07:24 -05:00
Josh Hawkins
353ee1228c Return 500 from the face registration endpoint if Frigate has not yet been restarted (#19601) 2025-08-18 14:49:50 -06:00
Josh Hawkins
ba20b61c43 Deprecate API field include_thumbnails (#19584)
* Add deprecation note to API docs for include_thumbnails

* for search query params as well
2025-08-18 08:26:02 -05:00
Nicolas Mowen
b45f642868 Use sed on correct file (#19590) 2025-08-18 07:21:42 -06:00
Josh Hawkins
9ed7ccab75 Embeddings maintainer should start if bird classification is enabled (#19576) 2025-08-17 19:48:21 -06:00
harry
ceced7cc91 Install non-free i965 driver (#19571) 2025-08-17 18:45:21 -06:00
Josh Hawkins
1db26cb41e Ensure birdseye is enabled before trying to grab a frame from it (#19573) 2025-08-17 17:26:18 -06:00
Josh Hawkins
6840415b6c Fix content type for latest image API endpoint (#19555)
* Fix content type for latest image API endpoint

Extension is an enum and .value needed to be appended. Additionally, fastapi's Response() automatically sets the content type when media_type is specified, so a Content-Type in the headers was redundant.

* Remove another unneeded Content-Type
2025-08-16 21:20:21 -06:00
Nicolas Mowen
06539c925c Pull sqlite3 from mirror (#19540)
* Pull sqlite3 from mirror

* Remove extra wget

* Adjust folder name

* Use pre-built sqlite

* Include unzip
2025-08-16 09:30:24 -05:00
Josh Hawkins
addb4e6891 Fix percentage in recording cleanup log (#19525)
* Fix percentage in recording cleanup log

* fix

* update reference config
2025-08-16 07:10:08 -06:00
Nicolas Mowen
fb290c411b HLS Playback Startup Time Optimization (#19503)
* Include preferred startTime in source so that the playlist does not need to seek

* Compatibility

* Cleanup

* Adjust based on inpoint

* Don't set start position if it is not valid

* Handle firefox buggy behavior
2025-08-16 07:09:15 -06:00
Josh Hawkins
89db960c05 Remove score sorting constraint (#19501)
Do not require a score filter to be applied in order to sort by object score.
2025-08-16 07:08:11 -06:00
Josh Hawkins
2cde58037d Improve recognized license plate filter (#19491)
* Fetch all license plates outside of filter component

If the swr call took a long time, the entire select component may not display. This change moves the fetch to the parent component (like sub labels).

* add loading indicator

* improve query
2025-08-16 07:05:50 -06:00
Josh Hawkins
d1be614a10 Bump makefile version (#19539) 2025-08-16 07:05:15 -06:00
Josh Hawkins
93c7c8c518 Bump version in docs (#19538) 2025-08-16 07:47:42 -05:00
Blake Blackshear
c83a35d090 Merge pull request #16390 from blakeblackshear/dev
0.16 Release
2025-08-16 07:34:45 -05:00
Blake Blackshear
d31a4e3443 Merge remote-tracking branch 'origin/master' into dev 2025-08-16 07:32:44 -05:00
Josh Hawkins
c2f8de94e8 Add languages (#19447) 2025-08-10 06:27:47 -06:00
Hosted Weblate
f46560d2bf Translated using Weblate (Dutch)
Currently translated at 100.0% (352 of 352 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Marijn <168113859+Marijn0@users.noreply.github.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/nl/
Translation: Frigate NVR/views-settings
2025-08-10 06:24:00 -06:00
Hosted Weblate
a1acb504ee Translated using Weblate (Hungarian)
Currently translated at 100.0% (352 of 352 strings)

Translated using Weblate (Hungarian)

Currently translated at 100.0% (24 of 24 strings)

Translated using Weblate (Hungarian)

Currently translated at 100.0% (50 of 50 strings)

Translated using Weblate (Hungarian)

Currently translated at 100.0% (183 of 183 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Zsolt Fojtyik <zsozso830316@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/hu/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/hu/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-events/hu/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/hu/
Translation: Frigate NVR/common
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/views-events
Translation: Frigate NVR/views-settings
2025-08-10 06:24:00 -06:00
Hosted Weblate
3d79eef227 Translated using Weblate (Romanian)
Currently translated at 100.0% (114 of 114 strings)

Translated using Weblate (Romanian)

Currently translated at 100.0% (352 of 352 strings)

Translated using Weblate (Romanian)

Currently translated at 100.0% (115 of 115 strings)

Translated using Weblate (Romanian)

Currently translated at 100.0% (66 of 66 strings)

Translated using Weblate (Romanian)

Currently translated at 100.0% (50 of 50 strings)

Translated using Weblate (Romanian)

Currently translated at 100.0% (118 of 118 strings)

Translated using Weblate (Romanian)

Currently translated at 100.0% (427 of 427 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: lukasig <lukasig@hotmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/audio/ro/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/ro/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-filter/ro/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/objects/ro/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/ro/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/ro/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/ro/
Translation: Frigate NVR/audio
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/components-filter
Translation: Frigate NVR/objects
Translation: Frigate NVR/views-explore
Translation: Frigate NVR/views-settings
Translation: Frigate NVR/views-system
2025-08-10 06:24:00 -06:00
Hosted Weblate
efe0d2a931 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (114 of 114 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (352 of 352 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (48 of 48 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (62 of 62 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (66 of 66 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (50 of 50 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (427 of 427 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 88.5% (378 of 427 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 96.5% (340 of 352 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (62 of 62 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (115 of 115 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (25 of 25 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (183 of 183 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 88.5% (378 of 427 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 59.3% (209 of 352 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 59.3% (209 of 352 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (183 of 183 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (183 of 183 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 50.5% (216 of 427 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 50.5% (216 of 427 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Marcelo Popper Costa <marcelo_popper@hotmail.com>
Co-authored-by: Rogério Mendes <rogeriomendes.mg@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/audio/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-filter/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-player/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-search/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/pt_BR/
Translation: Frigate NVR/audio
Translation: Frigate NVR/common
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/components-filter
Translation: Frigate NVR/components-player
Translation: Frigate NVR/views-explore
Translation: Frigate NVR/views-facelibrary
Translation: Frigate NVR/views-search
Translation: Frigate NVR/views-settings
Translation: Frigate NVR/views-system
2025-08-10 06:24:00 -06:00
Hosted Weblate
cbd5bdfd88 Translated using Weblate (Galician)
Currently translated at 6.1% (7 of 114 strings)

Translated using Weblate (Galician)

Currently translated at 6.1% (7 of 114 strings)

Translated using Weblate (Galician)

Currently translated at 1.9% (7 of 352 strings)

Translated using Weblate (Galician)

Currently translated at 1.9% (7 of 352 strings)

Translated using Weblate (Galician)

Currently translated at 14.5% (7 of 48 strings)

Translated using Weblate (Galician)

Currently translated at 14.5% (7 of 48 strings)

Translated using Weblate (Galician)

Currently translated at 83.3% (5 of 6 strings)

Translated using Weblate (Galician)

Currently translated at 8.0% (5 of 62 strings)

Translated using Weblate (Galician)

Currently translated at 8.0% (5 of 62 strings)

Translated using Weblate (Galician)

Currently translated at 66.6% (6 of 9 strings)

Translated using Weblate (Galician)

Currently translated at 66.6% (6 of 9 strings)

Translated using Weblate (Galician)

Currently translated at 75.0% (6 of 8 strings)

Translated using Weblate (Galician)

Currently translated at 75.0% (6 of 8 strings)

Translated using Weblate (Galician)

Currently translated at 24.0% (6 of 25 strings)

Translated using Weblate (Galician)

Currently translated at 24.0% (6 of 25 strings)

Translated using Weblate (Galician)

Currently translated at 9.0% (6 of 66 strings)

Translated using Weblate (Galician)

Currently translated at 9.0% (6 of 66 strings)

Translated using Weblate (Galician)

Currently translated at 14.0% (7 of 50 strings)

Translated using Weblate (Galician)

Currently translated at 14.0% (7 of 50 strings)

Translated using Weblate (Galician)

Currently translated at 25.0% (6 of 24 strings)

Translated using Weblate (Galician)

Currently translated at 25.0% (6 of 24 strings)

Translated using Weblate (Galician)

Currently translated at 13.5% (16 of 118 strings)

Translated using Weblate (Galician)

Currently translated at 13.5% (16 of 118 strings)

Translated using Weblate (Galician)

Currently translated at 66.6% (6 of 9 strings)

Translated using Weblate (Galician)

Currently translated at 66.6% (6 of 9 strings)

Translated using Weblate (Galician)

Currently translated at 8.7% (7 of 80 strings)

Translated using Weblate (Galician)

Currently translated at 8.7% (7 of 80 strings)

Translated using Weblate (Galician)

Currently translated at 3.9% (17 of 427 strings)

Translated using Weblate (Galician)

Currently translated at 3.9% (17 of 427 strings)

Translated using Weblate (Galician)

Currently translated at 5.2% (6 of 115 strings)

Translated using Weblate (Galician)

Currently translated at 5.2% (6 of 115 strings)

Translated using Weblate (Galician)

Currently translated at 100.0% (2 of 2 strings)

Translated using Weblate (Galician)

Currently translated at 17.3% (8 of 46 strings)

Translated using Weblate (Galician)

Currently translated at 17.3% (8 of 46 strings)

Translated using Weblate (Galician)

Currently translated at 4.9% (9 of 183 strings)

Translated using Weblate (Galician)

Currently translated at 4.9% (9 of 183 strings)

Translated using Weblate (Galician)

Currently translated at 0.8% (1 of 114 strings)

Translated using Weblate (Galician)

Currently translated at 0.2% (1 of 352 strings)

Translated using Weblate (Galician)

Currently translated at 4.1% (2 of 48 strings)

Translated using Weblate (Galician)

Currently translated at 50.0% (3 of 6 strings)

Translated using Weblate (Galician)

Currently translated at 3.2% (2 of 62 strings)

Translated using Weblate (Galician)

Currently translated at 22.2% (2 of 9 strings)

Translated using Weblate (Galician)

Currently translated at 25.0% (2 of 8 strings)

Translated using Weblate (Galician)

Currently translated at 8.0% (2 of 25 strings)

Translated using Weblate (Galician)

Currently translated at 3.0% (2 of 66 strings)

Translated using Weblate (Galician)

Currently translated at 4.0% (2 of 50 strings)

Translated using Weblate (Galician)

Currently translated at 8.3% (2 of 24 strings)

Translated using Weblate (Galician)

Currently translated at 1.6% (2 of 118 strings)

Translated using Weblate (Galician)

Currently translated at 22.2% (2 of 9 strings)

Translated using Weblate (Galician)

Currently translated at 2.5% (2 of 80 strings)

Translated using Weblate (Galician)

Currently translated at 100.0% (2 of 2 strings)

Translated using Weblate (Galician)

Currently translated at 0.7% (3 of 427 strings)

Translated using Weblate (Galician)

Currently translated at 1.7% (2 of 115 strings)

Translated using Weblate (Galician)

Currently translated at 50.0% (1 of 2 strings)

Translated using Weblate (Galician)

Currently translated at 4.3% (2 of 46 strings)

Translated using Weblate (Galician)

Currently translated at 1.0% (2 of 183 strings)

Added translation using Weblate (Galician)

Added translation using Weblate (Galician)

Added translation using Weblate (Galician)

Update translation files

Updated by "Squash Git commits" add-on in Weblate.

Update translation files

Updated by "Squash Git commits" add-on in Weblate.

Co-authored-by: Alexandre Espinosa Menor <aemenor@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Languages add-on <noreply-addon-languages@weblate.org>
Co-authored-by: seryeb - <seryeb@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/audio/gl/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/gl/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-auth/gl/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-camera/gl/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/gl/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-filter/gl/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-icons/gl/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-input/gl/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-player/gl/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/objects/gl/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-configeditor/gl/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-events/gl/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/gl/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-exports/gl/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/gl/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-live/gl/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-recording/gl/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-search/gl/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/gl/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/gl/
Translation: Frigate NVR/audio
Translation: Frigate NVR/common
Translation: Frigate NVR/components-auth
Translation: Frigate NVR/components-camera
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/components-filter
Translation: Frigate NVR/components-icons
Translation: Frigate NVR/components-input
Translation: Frigate NVR/components-player
Translation: Frigate NVR/objects
Translation: Frigate NVR/views-configeditor
Translation: Frigate NVR/views-events
Translation: Frigate NVR/views-explore
Translation: Frigate NVR/views-exports
Translation: Frigate NVR/views-facelibrary
Translation: Frigate NVR/views-live
Translation: Frigate NVR/views-recording
Translation: Frigate NVR/views-search
Translation: Frigate NVR/views-settings
Translation: Frigate NVR/views-system
2025-08-10 06:24:00 -06:00
GuoQing Liu
6f2e6c4cb2 Fix if search word is number will be crash (#19426)
* fix: fix if filterValues is number will be crash

* chore: use String function cover filterValues
2025-08-08 09:22:08 -06:00
Josh Hawkins
84f48ee3eb Ensure arrayKeys remains a stable array reference (#19428)
fixes infinite loop and react crash from changes in #19406
2025-08-08 05:54:03 -06:00
Nicolas Mowen
49793aa655 Don't use memo on subscribable (#19424) 2025-08-07 22:28:53 -05:00
Nicolas Mowen
4869f46ab6 Fixes (#19420)
* Remove torch install

* notification fixes

the pubkey was not being returned if notifications was not enabled at the global level

* Put back

* single condition check for fetching and disabling button

---------

Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com>
2025-08-07 15:34:25 -06:00
Nicolas Mowen
5e5beb9837 Fixes (#19414)
* Don't assume video is 16 / 9

* Don't apply docker constraints for rockchp toolkit
2025-08-07 12:08:33 -05:00
Hosted Weblate
f7184c8ed5 Translated using Weblate (Vietnamese)
Currently translated at 100.0% (183 of 183 strings)

Translated using Weblate (Vietnamese)

Currently translated at 100.0% (114 of 114 strings)

Translated using Weblate (Vietnamese)

Currently translated at 100.0% (183 of 183 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Lâm Lê <silamle6@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/vi/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/vi/
Translation: Frigate NVR/common
Translation: Frigate NVR/views-system
2025-08-07 04:43:37 -06:00
Hosted Weblate
2e1b81b380 Translated using Weblate (Finnish)
Currently translated at 31.5% (36 of 114 strings)

Translated using Weblate (Finnish)

Currently translated at 56.4% (35 of 62 strings)

Translated using Weblate (Finnish)

Currently translated at 51.5% (34 of 66 strings)

Translated using Weblate (Finnish)

Currently translated at 68.0% (34 of 50 strings)

Translated using Weblate (Finnish)

Currently translated at 13.8% (59 of 427 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Toni Liski <nacree@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/audio/fi/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/fi/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-filter/fi/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/fi/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/fi/
Translation: Frigate NVR/audio
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/components-filter
Translation: Frigate NVR/views-facelibrary
Translation: Frigate NVR/views-system
2025-08-07 04:40:46 -06:00
Hosted Weblate
30cf274815 Translated using Weblate (Vietnamese)
Currently translated at 100.0% (114 of 114 strings)

Translated using Weblate (Vietnamese)

Currently translated at 100.0% (183 of 183 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Lâm Lê <silamle6@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/vi/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/vi/
Translation: Frigate NVR/common
Translation: Frigate NVR/views-system
2025-08-07 04:40:46 -06:00
Hosted Weblate
b15c799d8c Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (114 of 114 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (114 of 114 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (114 of 114 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 42.0% (148 of 352 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (115 of 115 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (118 of 118 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 81.4% (149 of 183 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 38.6% (165 of 427 strings)

Co-authored-by: Deilson Peres <deilson.peres@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Marcelo Popper Costa <marcelo_popper@hotmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/audio/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/objects/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/pt_BR/
Translation: Frigate NVR/audio
Translation: Frigate NVR/common
Translation: Frigate NVR/objects
Translation: Frigate NVR/views-explore
Translation: Frigate NVR/views-settings
Translation: Frigate NVR/views-system
2025-08-07 04:40:46 -06:00
Josh Hawkins
b6b3178e3d Fixes (#19406)
* Fix api filter hook

cameras, labels, sub labels, plates, and zones could be parsed as numeric values rather than strings, which would break the explore filter. This change adds an optional param to the useApiFilterArgs hook to always parse keys as string[]

* fix notifications register button from being incorrectly disabled
2025-08-06 22:09:43 -05:00
Nicolas Mowen
334b6670e1 Add note for Gemini base url (#19399) 2025-08-06 07:02:40 -06:00
Hosted Weblate
5fc030c3f6 Translated using Weblate (Finnish)
Currently translated at 83.3% (40 of 48 strings)

Translated using Weblate (Finnish)

Currently translated at 53.2% (33 of 62 strings)

Translated using Weblate (Finnish)

Currently translated at 46.0% (53 of 115 strings)

Translated using Weblate (Finnish)

Currently translated at 50.0% (33 of 66 strings)

Translated using Weblate (Finnish)

Currently translated at 64.0% (32 of 50 strings)

Translated using Weblate (Finnish)

Currently translated at 13.5% (58 of 427 strings)

Translated using Weblate (Finnish)

Currently translated at 77.0% (37 of 48 strings)

Translated using Weblate (Finnish)

Currently translated at 48.3% (30 of 62 strings)

Translated using Weblate (Finnish)

Currently translated at 45.2% (52 of 115 strings)

Translated using Weblate (Finnish)

Currently translated at 46.9% (31 of 66 strings)

Translated using Weblate (Finnish)

Currently translated at 13.3% (57 of 427 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Julius Hyvönen <julius.hyvonen@gmail.com>
Co-authored-by: Risto Toivanen <risto.toivanen@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/audio/fi/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/fi/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-filter/fi/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/fi/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/fi/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-search/fi/
Translation: Frigate NVR/audio
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/components-filter
Translation: Frigate NVR/views-explore
Translation: Frigate NVR/views-facelibrary
Translation: Frigate NVR/views-search
2025-08-05 16:35:12 -06:00
Hosted Weblate
ca3afa8ac4 Translated using Weblate (Swedish)
Currently translated at 28.9% (33 of 114 strings)

Translated using Weblate (Swedish)

Currently translated at 21.0% (24 of 114 strings)

Translated using Weblate (Swedish)

Currently translated at 14.9% (17 of 114 strings)

Translated using Weblate (Swedish)

Currently translated at 57.5% (38 of 66 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Lars Gustavsson <lars@textalk.se>
Co-authored-by: Oscar Haraldsson <oscar.haraldsson@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-filter/sv/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/sv/
Translation: Frigate NVR/components-filter
Translation: Frigate NVR/views-system
2025-08-05 16:35:12 -06:00
Hosted Weblate
878f401ad2 Translated using Weblate (Indonesian)
Currently translated at 18.7% (9 of 48 strings)

Translated using Weblate (Indonesian)

Currently translated at 8.6% (10 of 115 strings)

Translated using Weblate (Indonesian)

Currently translated at 41.6% (10 of 24 strings)

Translated using Weblate (Indonesian)

Currently translated at 18.0% (9 of 50 strings)

Co-authored-by: Fikry Budi Hasbillah <fikrybudih@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/id/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-events/id/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/id/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-search/id/
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/views-events
Translation: Frigate NVR/views-explore
Translation: Frigate NVR/views-search
2025-08-05 16:35:12 -06:00
Hosted Weblate
99f9c1529d Translated using Weblate (Portuguese (Brazil))
Currently translated at 85.9% (98 of 114 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 27.8% (98 of 352 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (62 of 62 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 85.2% (98 of 115 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 83.8% (99 of 118 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 54.0% (99 of 183 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 27.4% (117 of 427 strings)

Update translation files

Updated by "Squash Git commits" add-on in Weblate.

Update translation files

Updated by "Squash Git commits" add-on in Weblate.

Translated using Weblate (Portuguese (Brazil))

Currently translated at 76.3% (87 of 114 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 24.7% (87 of 352 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (80 of 80 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 76.5% (88 of 115 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 48.6% (89 of 183 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 65.7% (75 of 114 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 65.7% (75 of 114 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 21.3% (75 of 352 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (48 of 48 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 93.7% (75 of 80 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 98.3% (61 of 62 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 98.3% (61 of 62 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 66.0% (76 of 115 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (66 of 66 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (66 of 66 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (50 of 50 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (46 of 46 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 65.2% (77 of 118 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 41.5% (76 of 183 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 20.6% (88 of 427 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Marcelo Popper Costa <marcelo_popper@hotmail.com>
Co-authored-by: Rogério Mendes <rogeriomendes.mg@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/audio/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-camera/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-filter/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/objects/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-live/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-search/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/pt_BR/
Translation: Frigate NVR/audio
Translation: Frigate NVR/common
Translation: Frigate NVR/components-camera
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/components-filter
Translation: Frigate NVR/objects
Translation: Frigate NVR/views-explore
Translation: Frigate NVR/views-facelibrary
Translation: Frigate NVR/views-live
Translation: Frigate NVR/views-search
Translation: Frigate NVR/views-settings
Translation: Frigate NVR/views-system
2025-08-05 16:35:12 -06:00
Hosted Weblate
369e6ba2c2 Translated using Weblate (Lithuanian)
Currently translated at 7.8% (9 of 114 strings)

Translated using Weblate (Lithuanian)

Currently translated at 2.2% (8 of 352 strings)

Translated using Weblate (Lithuanian)

Currently translated at 20.8% (10 of 48 strings)

Translated using Weblate (Lithuanian)

Currently translated at 8.7% (7 of 80 strings)

Translated using Weblate (Lithuanian)

Currently translated at 11.2% (7 of 62 strings)

Translated using Weblate (Lithuanian)

Currently translated at 5.2% (6 of 115 strings)

Translated using Weblate (Lithuanian)

Currently translated at 13.6% (9 of 66 strings)

Translated using Weblate (Lithuanian)

Currently translated at 18.0% (9 of 50 strings)

Translated using Weblate (Lithuanian)

Currently translated at 21.7% (10 of 46 strings)

Translated using Weblate (Lithuanian)

Currently translated at 8.4% (36 of 427 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Povilas Arlauskas <povilas.arl@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/audio/lt/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-camera/lt/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/lt/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-filter/lt/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/lt/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/lt/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-live/lt/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-search/lt/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/lt/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/lt/
Translation: Frigate NVR/audio
Translation: Frigate NVR/components-camera
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/components-filter
Translation: Frigate NVR/views-explore
Translation: Frigate NVR/views-facelibrary
Translation: Frigate NVR/views-live
Translation: Frigate NVR/views-search
Translation: Frigate NVR/views-settings
Translation: Frigate NVR/views-system
2025-08-05 16:35:12 -06:00
Nicolas Mowen
8254602449 Fix not deleting thumbnails (#19371)
* Fix not deleting thumbnails

* Consoldiate langauge tags
2025-08-04 00:56:23 -05:00
Hosted Weblate
a0a5aad3c2 Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (118 of 118 strings)

Translated using Weblate (Chinese (Traditional Han script))

Currently translated at 8.6% (37 of 427 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: fascinate722 <fascinate722@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/audio/zh_Hant/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/objects/zh_Hant/
Translation: Frigate NVR/audio
Translation: Frigate NVR/objects
2025-08-02 07:55:35 -06:00
Hosted Weblate
f107aa3cea Added translation using Weblate (Korean)
Added translation using Weblate (Korean)

Added translation using Weblate (Korean)

Added translation using Weblate (Korean)

Added translation using Weblate (Korean)

Added translation using Weblate (Korean)

Added translation using Weblate (Korean)

Added translation using Weblate (Korean)

Added translation using Weblate (Korean)

Added translation using Weblate (Korean)

Added translation using Weblate (Korean)

Added translation using Weblate (Korean)

Added translation using Weblate (Korean)

Added translation using Weblate (Korean)

Added translation using Weblate (Korean)

Added translation using Weblate (Korean)

Added translation using Weblate (Korean)

Added translation using Weblate (Korean)

Added translation using Weblate (Korean)

Added translation using Weblate (Korean)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Languages add-on <noreply-addon-languages@weblate.org>
Co-authored-by: 김민성 <noom0290@gmail.com>
2025-08-02 07:55:35 -06:00
Hosted Weblate
cd7b9b604e Translated using Weblate (Serbian)
Currently translated at 5.2% (6 of 114 strings)

Translated using Weblate (Serbian)

Currently translated at 6.0% (7 of 115 strings)

Translated using Weblate (Serbian)

Currently translated at 29.1% (7 of 24 strings)

Translated using Weblate (Serbian)

Currently translated at 87.5% (7 of 8 strings)

Translated using Weblate (Serbian)

Currently translated at 28.0% (7 of 25 strings)

Translated using Weblate (Serbian)

Currently translated at 100.0% (2 of 2 strings)

Translated using Weblate (Serbian)

Currently translated at 100.0% (2 of 2 strings)

Translated using Weblate (Serbian)

Currently translated at 10.6% (7 of 66 strings)

Translated using Weblate (Serbian)

Currently translated at 15.2% (7 of 46 strings)

Translated using Weblate (Serbian)

Currently translated at 77.7% (7 of 9 strings)

Translated using Weblate (Serbian)

Currently translated at 5.9% (7 of 118 strings)

Translated using Weblate (Serbian)

Currently translated at 13.6% (25 of 183 strings)

Translated using Weblate (Serbian)

Currently translated at 3.0% (13 of 427 strings)

Co-authored-by: Dalibor Radovanović <darkobg@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/audio/sr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/sr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-auth/sr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-camera/sr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-filter/sr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-icons/sr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-input/sr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-player/sr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/objects/sr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-configeditor/sr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-events/sr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/sr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/sr/
Translation: Frigate NVR/audio
Translation: Frigate NVR/common
Translation: Frigate NVR/components-auth
Translation: Frigate NVR/components-camera
Translation: Frigate NVR/components-filter
Translation: Frigate NVR/components-icons
Translation: Frigate NVR/components-input
Translation: Frigate NVR/components-player
Translation: Frigate NVR/objects
Translation: Frigate NVR/views-configeditor
Translation: Frigate NVR/views-events
Translation: Frigate NVR/views-explore
Translation: Frigate NVR/views-system
2025-08-02 07:55:35 -06:00
Hosted Weblate
1bbc8823da Translated using Weblate (Polish)
Currently translated at 100.0% (183 of 183 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Łukasz Jernaś <deejay1@srem.org>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/pl/
Translation: Frigate NVR/common
2025-08-02 07:55:35 -06:00
Hosted Weblate
30de45a6f4 Translated using Weblate (Hungarian)
Currently translated at 100.0% (352 of 352 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Zsolt Fojtyik <zsozso830316@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/hu/
Translation: Frigate NVR/views-settings
2025-08-02 07:55:35 -06:00
Hosted Weblate
f9e5350d5a Translated using Weblate (Portuguese)
Currently translated at 100.0% (114 of 114 strings)

Translated using Weblate (Portuguese)

Currently translated at 100.0% (352 of 352 strings)

Translated using Weblate (Portuguese)

Currently translated at 100.0% (66 of 66 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Tiago Krüger <tiagokruger404@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-filter/pt/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/pt/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/pt/
Translation: Frigate NVR/components-filter
Translation: Frigate NVR/views-settings
Translation: Frigate NVR/views-system
2025-08-02 07:55:35 -06:00
Hosted Weblate
1471491124 Translated using Weblate (Romanian)
Currently translated at 100.0% (24 of 24 strings)

Translated using Weblate (Romanian)

Currently translated at 100.0% (183 of 183 strings)

Translated using Weblate (Romanian)

Currently translated at 100.0% (50 of 50 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: lukasig <lukasig@hotmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/ro/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/ro/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-events/ro/
Translation: Frigate NVR/common
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/views-events
2025-08-02 07:55:35 -06:00
Hosted Weblate
c1da7128da Translated using Weblate (Russian)
Currently translated at 100.0% (183 of 183 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Артём Владимиров <artyomka71@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/ru/
Translation: Frigate NVR/common
2025-08-02 07:55:35 -06:00
Hosted Weblate
f33468767e Translated using Weblate (Portuguese (Brazil))
Currently translated at 39.4% (45 of 114 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 39.4% (45 of 114 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 93.7% (45 of 48 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 93.7% (45 of 48 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 57.5% (46 of 80 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 57.5% (46 of 80 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 74.1% (46 of 62 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 74.1% (46 of 62 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 39.1% (45 of 115 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 39.1% (45 of 115 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 63.6% (42 of 66 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 63.6% (42 of 66 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 92.0% (46 of 50 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 92.0% (46 of 50 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 95.6% (44 of 46 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 95.6% (44 of 46 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 34.7% (41 of 118 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 34.7% (41 of 118 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 22.4% (41 of 183 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 12.4% (53 of 427 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 29.8% (34 of 114 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 70.8% (34 of 48 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 42.5% (34 of 80 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 31.3% (36 of 115 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 53.0% (35 of 66 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 70.0% (35 of 50 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 76.0% (35 of 46 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 29.6% (35 of 118 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 19.6% (36 of 183 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 11.0% (47 of 427 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 26.3% (30 of 114 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 62.5% (30 of 48 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 37.5% (30 of 80 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 69.3% (43 of 62 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 26.9% (31 of 115 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 45.4% (30 of 66 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 60.0% (30 of 50 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 67.3% (31 of 46 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 26.2% (31 of 118 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 17.4% (32 of 183 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 10.0% (43 of 427 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 22.8% (26 of 114 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 54.1% (26 of 48 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 32.5% (26 of 80 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 66.1% (41 of 62 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 23.4% (27 of 115 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (24 of 24 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (25 of 25 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 39.3% (26 of 66 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 52.0% (26 of 50 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 56.5% (26 of 46 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 22.8% (27 of 118 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 15.3% (28 of 183 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 9.1% (39 of 427 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 19.2% (22 of 114 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 15.6% (55 of 352 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 45.8% (22 of 48 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 45.8% (22 of 48 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 28.7% (23 of 80 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 28.7% (23 of 80 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 62.9% (39 of 62 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 20.8% (24 of 115 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 20.8% (24 of 115 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 95.8% (23 of 24 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 92.0% (23 of 25 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 92.0% (23 of 25 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 34.8% (23 of 66 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 34.8% (23 of 66 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 46.0% (23 of 50 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 46.0% (23 of 50 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 50.0% (23 of 46 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 19.4% (23 of 118 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 13.1% (24 of 183 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 8.1% (35 of 427 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 8.1% (35 of 427 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 15.3% (54 of 352 strings)

Co-authored-by: Cleiton Carvalho <cleitonsilvacarvalho@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Marcelo Popper Costa <marcelo_popper@hotmail.com>
Co-authored-by: Rogério Mendes <rogeriomendes.mg@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/audio/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-camera/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-filter/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-player/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/objects/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-events/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-live/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-search/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/pt_BR/
Translation: Frigate NVR/audio
Translation: Frigate NVR/common
Translation: Frigate NVR/components-camera
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/components-filter
Translation: Frigate NVR/components-player
Translation: Frigate NVR/objects
Translation: Frigate NVR/views-events
Translation: Frigate NVR/views-explore
Translation: Frigate NVR/views-facelibrary
Translation: Frigate NVR/views-live
Translation: Frigate NVR/views-search
Translation: Frigate NVR/views-settings
Translation: Frigate NVR/views-system
2025-08-02 07:55:35 -06:00
Hosted Weblate
76fbc103b0 Translated using Weblate (Lithuanian)
Currently translated at 1.7% (2 of 114 strings)

Translated using Weblate (Lithuanian)

Currently translated at 0.5% (2 of 352 strings)

Translated using Weblate (Lithuanian)

Currently translated at 4.1% (2 of 48 strings)

Translated using Weblate (Lithuanian)

Currently translated at 100.0% (6 of 6 strings)

Translated using Weblate (Lithuanian)

Currently translated at 3.7% (3 of 80 strings)

Translated using Weblate (Lithuanian)

Currently translated at 4.8% (3 of 62 strings)

Translated using Weblate (Lithuanian)

Currently translated at 100.0% (9 of 9 strings)

Translated using Weblate (Lithuanian)

Currently translated at 2.6% (3 of 115 strings)

Translated using Weblate (Lithuanian)

Currently translated at 100.0% (24 of 24 strings)

Translated using Weblate (Lithuanian)

Currently translated at 100.0% (8 of 8 strings)

Translated using Weblate (Lithuanian)

Currently translated at 100.0% (25 of 25 strings)

Translated using Weblate (Lithuanian)

Currently translated at 100.0% (2 of 2 strings)

Translated using Weblate (Lithuanian)

Currently translated at 100.0% (2 of 2 strings)

Translated using Weblate (Lithuanian)

Currently translated at 4.5% (3 of 66 strings)

Translated using Weblate (Lithuanian)

Currently translated at 6.0% (3 of 50 strings)

Translated using Weblate (Lithuanian)

Currently translated at 6.5% (3 of 46 strings)

Translated using Weblate (Lithuanian)

Currently translated at 100.0% (9 of 9 strings)

Translated using Weblate (Lithuanian)

Currently translated at 89.8% (106 of 118 strings)

Translated using Weblate (Lithuanian)

Currently translated at 80.3% (147 of 183 strings)

Translated using Weblate (Lithuanian)

Currently translated at 6.7% (29 of 427 strings)

Translated using Weblate (Lithuanian)

Currently translated at 28.8% (34 of 118 strings)

Translated using Weblate (Lithuanian)

Currently translated at 3.0% (13 of 427 strings)

Translated using Weblate (Lithuanian)

Currently translated at 2.0% (1 of 48 strings)

Translated using Weblate (Lithuanian)

Currently translated at 1.2% (1 of 80 strings)

Translated using Weblate (Lithuanian)

Currently translated at 11.1% (1 of 9 strings)

Translated using Weblate (Lithuanian)

Currently translated at 45.8% (11 of 24 strings)

Translated using Weblate (Lithuanian)

Currently translated at 0.8% (1 of 118 strings)

Translated using Weblate (Lithuanian)

Currently translated at 0.4% (2 of 427 strings)

Added translation using Weblate (Lithuanian)

Added translation using Weblate (Lithuanian)

Added translation using Weblate (Lithuanian)

Added translation using Weblate (Lithuanian)

Added translation using Weblate (Lithuanian)

Added translation using Weblate (Lithuanian)

Added translation using Weblate (Lithuanian)

Added translation using Weblate (Lithuanian)

Added translation using Weblate (Lithuanian)

Added translation using Weblate (Lithuanian)

Added translation using Weblate (Lithuanian)

Added translation using Weblate (Lithuanian)

Added translation using Weblate (Lithuanian)

Added translation using Weblate (Lithuanian)

Added translation using Weblate (Lithuanian)

Added translation using Weblate (Lithuanian)

Added translation using Weblate (Lithuanian)

Added translation using Weblate (Lithuanian)

Added translation using Weblate (Lithuanian)

Added translation using Weblate (Lithuanian)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Languages add-on <noreply-addon-languages@weblate.org>
Co-authored-by: MaBeniu <runnerm@gmail.com>
Co-authored-by: PovilasID <povilas.sidaravicius@gmail.com>
Co-authored-by: boxstep <evaldas.blauzdziunas@hotmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/audio/lt/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/lt/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-auth/lt/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-camera/lt/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/lt/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-filter/lt/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-icons/lt/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-input/lt/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-player/lt/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/objects/lt/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-configeditor/lt/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-events/lt/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/lt/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-exports/lt/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/lt/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-live/lt/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-recording/lt/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-search/lt/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/lt/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/lt/
Translation: Frigate NVR/audio
Translation: Frigate NVR/common
Translation: Frigate NVR/components-auth
Translation: Frigate NVR/components-camera
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/components-filter
Translation: Frigate NVR/components-icons
Translation: Frigate NVR/components-input
Translation: Frigate NVR/components-player
Translation: Frigate NVR/objects
Translation: Frigate NVR/views-configeditor
Translation: Frigate NVR/views-events
Translation: Frigate NVR/views-explore
Translation: Frigate NVR/views-exports
Translation: Frigate NVR/views-facelibrary
Translation: Frigate NVR/views-live
Translation: Frigate NVR/views-recording
Translation: Frigate NVR/views-search
Translation: Frigate NVR/views-settings
Translation: Frigate NVR/views-system
2025-08-02 07:55:35 -06:00
Hosted Weblate
972206eb0f Translated using Weblate (Turkish)
Currently translated at 100.0% (62 of 62 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: pcislocked <git@pcislocked.net>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/tr/
Translation: Frigate NVR/views-facelibrary
2025-08-02 07:55:35 -06:00
boc-the-git
b5067c07f8 Remove deprecated 'version' attribute (#19347) 2025-08-01 05:51:18 -06:00
Nicolas Mowen
c3410cd13e Revamp RF-DETR Export Docs (#19341)
* Revamp RFDETR docs

* Clarify model size

* Specify model size
2025-07-31 09:11:46 -05:00
Nicolas Mowen
d18f2282c8 Update tensorrt inference time docs (#19338)
* Update tensorrt inference times

* Update hardware.md
2025-07-31 08:21:41 -05:00
Jack
23b32cbacf Update object_detectors.md (#19328)
Minor documentation clarity
2025-07-30 07:08:44 -06:00
Nicolas Mowen
21e9b2f2ce Add docs for planning a setup (#19326)
* Add docs for planning a setup

* Add more granularity

* Improve title

* Add storage section

* Fix level

* Change named hardware

* link to section

Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com>

---------

Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com>
2025-07-30 07:06:39 -06:00
Josh Hawkins
92a0dad2c2 Catch json decode exception (#19323)
* Catch json decode exception when semantic search stats file is corrupted

* clear stats file if corrupted
2025-07-29 13:38:13 -05:00
Nicolas Mowen
4f4c8a4fb9 Center camera in layout when only one camera is filtered (#19319) 2025-07-29 09:15:37 -05:00
Josh Hawkins
898d1de875 Timezone fix (#19293)
* Frontend timezone fixes

Last recording date timezone was being applied twice, so it displayed the wrong date
Also, TZDate from react-day-picker could have been behaving incorrectly at times without a full date string

* Ensure returned day is parsed as midnight in specified timezone
2025-07-26 18:24:08 -06:00
Hosted Weblate
0b7a33d670 Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 7.3% (26 of 352 strings)

Translated using Weblate (Chinese (Traditional Han script))

Currently translated at 100.0% (114 of 114 strings)

Translated using Weblate (Chinese (Traditional Han script))

Currently translated at 100.0% (48 of 48 strings)

Translated using Weblate (Chinese (Traditional Han script))

Currently translated at 100.0% (80 of 80 strings)

Translated using Weblate (Chinese (Traditional Han script))

Currently translated at 100.0% (62 of 62 strings)

Translated using Weblate (Chinese (Traditional Han script))

Currently translated at 100.0% (115 of 115 strings)

Translated using Weblate (Chinese (Traditional Han script))

Currently translated at 100.0% (50 of 50 strings)

Translated using Weblate (Chinese (Traditional Han script))

Currently translated at 100.0% (183 of 183 strings)

Translated using Weblate (Chinese (Traditional Han script))

Currently translated at 9.6% (11 of 114 strings)

Translated using Weblate (Chinese (Traditional Han script))

Currently translated at 3.1% (11 of 352 strings)

Translated using Weblate (Chinese (Traditional Han script))

Currently translated at 22.9% (11 of 48 strings)

Translated using Weblate (Chinese (Traditional Han script))

Currently translated at 100.0% (6 of 6 strings)

Translated using Weblate (Chinese (Traditional Han script))

Currently translated at 13.7% (11 of 80 strings)

Translated using Weblate (Chinese (Traditional Han script))

Currently translated at 16.1% (10 of 62 strings)

Translated using Weblate (Chinese (Traditional Han script))

Currently translated at 100.0% (9 of 9 strings)

Translated using Weblate (Chinese (Traditional Han script))

Currently translated at 10.4% (12 of 115 strings)

Translated using Weblate (Chinese (Traditional Han script))

Currently translated at 100.0% (24 of 24 strings)

Translated using Weblate (Chinese (Traditional Han script))

Currently translated at 100.0% (8 of 8 strings)

Translated using Weblate (Chinese (Traditional Han script))

Currently translated at 8.4% (10 of 118 strings)

Translated using Weblate (Chinese (Traditional Han script))

Currently translated at 100.0% (25 of 25 strings)

Translated using Weblate (Chinese (Traditional Han script))

Currently translated at 100.0% (2 of 2 strings)

Translated using Weblate (Chinese (Traditional Han script))

Currently translated at 100.0% (2 of 2 strings)

Translated using Weblate (Chinese (Traditional Han script))

Currently translated at 100.0% (66 of 66 strings)

Translated using Weblate (Chinese (Traditional Han script))

Currently translated at 22.0% (11 of 50 strings)

Translated using Weblate (Chinese (Traditional Han script))

Currently translated at 100.0% (46 of 46 strings)

Translated using Weblate (Chinese (Traditional Han script))

Currently translated at 100.0% (9 of 9 strings)

Translated using Weblate (Chinese (Traditional Han script))

Currently translated at 54.0% (99 of 183 strings)

Translated using Weblate (Chinese (Traditional Han script))

Currently translated at 3.5% (15 of 427 strings)

Added translation using Weblate (Chinese (Traditional Han script))

Added translation using Weblate (Chinese (Traditional Han script))

Added translation using Weblate (Chinese (Traditional Han script))

Added translation using Weblate (Chinese (Traditional Han script))

Added translation using Weblate (Chinese (Traditional Han script))

Added translation using Weblate (Chinese (Traditional Han script))

Added translation using Weblate (Chinese (Traditional Han script))

Added translation using Weblate (Chinese (Traditional Han script))

Added translation using Weblate (Chinese (Traditional Han script))

Added translation using Weblate (Chinese (Traditional Han script))

Added translation using Weblate (Chinese (Traditional Han script))

Added translation using Weblate (Chinese (Traditional Han script))

Added translation using Weblate (Chinese (Traditional Han script))

Added translation using Weblate (Chinese (Traditional Han script))

Added translation using Weblate (Chinese (Traditional Han script))

Added translation using Weblate (Chinese (Traditional Han script))

Added translation using Weblate (Chinese (Traditional Han script))

Added translation using Weblate (Chinese (Traditional Han script))

Added translation using Weblate (Chinese (Traditional Han script))

Added translation using Weblate (Chinese (Traditional Han script))

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: forward-jt <juitse.huang@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/audio/zh_Hant/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/zh_Hant/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-auth/zh_Hant/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-camera/zh_Hant/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/zh_Hant/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-filter/zh_Hant/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-icons/zh_Hant/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-input/zh_Hant/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-player/zh_Hant/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/objects/zh_Hant/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-configeditor/zh_Hant/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-events/zh_Hant/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/zh_Hant/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-exports/zh_Hant/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/zh_Hant/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-live/zh_Hant/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-recording/zh_Hant/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-search/zh_Hant/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/zh_Hant/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/zh_Hant/
Translation: Frigate NVR/audio
Translation: Frigate NVR/common
Translation: Frigate NVR/components-auth
Translation: Frigate NVR/components-camera
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/components-filter
Translation: Frigate NVR/components-icons
Translation: Frigate NVR/components-input
Translation: Frigate NVR/components-player
Translation: Frigate NVR/objects
Translation: Frigate NVR/views-configeditor
Translation: Frigate NVR/views-events
Translation: Frigate NVR/views-explore
Translation: Frigate NVR/views-exports
Translation: Frigate NVR/views-facelibrary
Translation: Frigate NVR/views-live
Translation: Frigate NVR/views-recording
Translation: Frigate NVR/views-search
Translation: Frigate NVR/views-settings
Translation: Frigate NVR/views-system
2025-07-26 08:15:36 -04:00
Hosted Weblate
d697e4f354 Translated using Weblate (Slovak)
Currently translated at 28.0% (32 of 114 strings)

Translated using Weblate (Slovak)

Currently translated at 9.0% (32 of 352 strings)

Translated using Weblate (Slovak)

Currently translated at 66.6% (32 of 48 strings)

Translated using Weblate (Slovak)

Currently translated at 100.0% (25 of 25 strings)

Translated using Weblate (Slovak)

Currently translated at 28.6% (33 of 115 strings)

Translated using Weblate (Slovak)

Currently translated at 40.0% (32 of 80 strings)

Translated using Weblate (Slovak)

Currently translated at 50.0% (33 of 66 strings)

Translated using Weblate (Slovak)

Currently translated at 100.0% (24 of 24 strings)

Translated using Weblate (Slovak)

Currently translated at 27.9% (33 of 118 strings)

Translated using Weblate (Slovak)

Currently translated at 71.7% (33 of 46 strings)

Translated using Weblate (Slovak)

Currently translated at 64.0% (32 of 50 strings)

Translated using Weblate (Slovak)

Currently translated at 18.0% (33 of 183 strings)

Translated using Weblate (Slovak)

Currently translated at 11.4% (49 of 427 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Jakub K <klacanjakub0@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/audio/sk/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/sk/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-camera/sk/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/sk/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-filter/sk/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-player/sk/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/objects/sk/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-events/sk/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/sk/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-live/sk/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-search/sk/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/sk/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/sk/
Translation: Frigate NVR/audio
Translation: Frigate NVR/common
Translation: Frigate NVR/components-camera
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/components-filter
Translation: Frigate NVR/components-player
Translation: Frigate NVR/objects
Translation: Frigate NVR/views-events
Translation: Frigate NVR/views-explore
Translation: Frigate NVR/views-live
Translation: Frigate NVR/views-search
Translation: Frigate NVR/views-settings
Translation: Frigate NVR/views-system
2025-07-26 08:15:36 -04:00
Hosted Weblate
4ad1f6e610 Translated using Weblate (Serbian)
Currently translated at 5.2% (6 of 114 strings)

Translated using Weblate (Serbian)

Currently translated at 1.7% (6 of 352 strings)

Translated using Weblate (Serbian)

Currently translated at 12.5% (6 of 48 strings)

Translated using Weblate (Serbian)

Currently translated at 100.0% (6 of 6 strings)

Translated using Weblate (Serbian)

Currently translated at 7.5% (6 of 80 strings)

Translated using Weblate (Serbian)

Currently translated at 9.6% (6 of 62 strings)

Translated using Weblate (Serbian)

Currently translated at 77.7% (7 of 9 strings)

Translated using Weblate (Serbian)

Currently translated at 6.0% (7 of 115 strings)

Translated using Weblate (Serbian)

Currently translated at 29.1% (7 of 24 strings)

Translated using Weblate (Serbian)

Currently translated at 87.5% (7 of 8 strings)

Translated using Weblate (Serbian)

Currently translated at 28.0% (7 of 25 strings)

Translated using Weblate (Serbian)

Currently translated at 100.0% (2 of 2 strings)

Translated using Weblate (Serbian)

Currently translated at 100.0% (2 of 2 strings)

Translated using Weblate (Serbian)

Currently translated at 10.6% (7 of 66 strings)

Translated using Weblate (Serbian)

Currently translated at 14.0% (7 of 50 strings)

Translated using Weblate (Serbian)

Currently translated at 15.2% (7 of 46 strings)

Translated using Weblate (Serbian)

Currently translated at 77.7% (7 of 9 strings)

Translated using Weblate (Serbian)

Currently translated at 5.9% (7 of 118 strings)

Translated using Weblate (Serbian)

Currently translated at 3.8% (7 of 183 strings)

Translated using Weblate (Serbian)

Currently translated at 3.0% (13 of 427 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: muki71 <exyusat71@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/audio/sr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/sr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-auth/sr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-camera/sr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/sr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-filter/sr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-icons/sr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-input/sr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-player/sr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/objects/sr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-configeditor/sr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-events/sr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/sr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-exports/sr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/sr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-live/sr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-recording/sr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-search/sr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/sr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/sr/
Translation: Frigate NVR/audio
Translation: Frigate NVR/common
Translation: Frigate NVR/components-auth
Translation: Frigate NVR/components-camera
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/components-filter
Translation: Frigate NVR/components-icons
Translation: Frigate NVR/components-input
Translation: Frigate NVR/components-player
Translation: Frigate NVR/objects
Translation: Frigate NVR/views-configeditor
Translation: Frigate NVR/views-events
Translation: Frigate NVR/views-explore
Translation: Frigate NVR/views-exports
Translation: Frigate NVR/views-facelibrary
Translation: Frigate NVR/views-live
Translation: Frigate NVR/views-recording
Translation: Frigate NVR/views-search
Translation: Frigate NVR/views-settings
Translation: Frigate NVR/views-system
2025-07-26 08:15:36 -04:00
Hosted Weblate
072d9fc111 Translated using Weblate (Vietnamese)
Currently translated at 100.0% (114 of 114 strings)

Translated using Weblate (Vietnamese)

Currently translated at 100.0% (352 of 352 strings)

Translated using Weblate (Vietnamese)

Currently translated at 100.0% (115 of 115 strings)

Translated using Weblate (Vietnamese)

Currently translated at 100.0% (8 of 8 strings)

Translated using Weblate (Vietnamese)

Currently translated at 100.0% (183 of 183 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Lâm Lê <silamle6@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/vi/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-configeditor/vi/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/vi/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/vi/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/vi/
Translation: Frigate NVR/common
Translation: Frigate NVR/views-configeditor
Translation: Frigate NVR/views-explore
Translation: Frigate NVR/views-settings
Translation: Frigate NVR/views-system
2025-07-26 08:15:36 -04:00
Hosted Weblate
9653aead10 Translated using Weblate (Bulgarian)
Currently translated at 16.9% (20 of 118 strings)

Translated using Weblate (Bulgarian)

Currently translated at 45.6% (21 of 46 strings)

Translated using Weblate (Bulgarian)

Currently translated at 42.0% (77 of 183 strings)

Translated using Weblate (Bulgarian)

Currently translated at 62.2% (266 of 427 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Plamen Stoyanov <fireto@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/audio/bg/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/bg/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-camera/bg/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/objects/bg/
Translation: Frigate NVR/audio
Translation: Frigate NVR/common
Translation: Frigate NVR/components-camera
Translation: Frigate NVR/objects
2025-07-26 08:15:36 -04:00
Hosted Weblate
e910f5c97c Translated using Weblate (Romanian)
Currently translated at 100.0% (114 of 114 strings)

Translated using Weblate (Romanian)

Currently translated at 100.0% (352 of 352 strings)

Translated using Weblate (Romanian)

Currently translated at 100.0% (48 of 48 strings)

Translated using Weblate (Romanian)

Currently translated at 100.0% (80 of 80 strings)

Translated using Weblate (Romanian)

Currently translated at 100.0% (62 of 62 strings)

Translated using Weblate (Romanian)

Currently translated at 100.0% (9 of 9 strings)

Translated using Weblate (Romanian)

Currently translated at 100.0% (115 of 115 strings)

Translated using Weblate (Romanian)

Currently translated at 100.0% (24 of 24 strings)

Translated using Weblate (Romanian)

Currently translated at 100.0% (8 of 8 strings)

Translated using Weblate (Romanian)

Currently translated at 100.0% (25 of 25 strings)

Translated using Weblate (Romanian)

Currently translated at 100.0% (2 of 2 strings)

Translated using Weblate (Romanian)

Currently translated at 100.0% (66 of 66 strings)

Translated using Weblate (Romanian)

Currently translated at 100.0% (50 of 50 strings)

Translated using Weblate (Romanian)

Currently translated at 100.0% (46 of 46 strings)

Translated using Weblate (Romanian)

Currently translated at 100.0% (118 of 118 strings)

Translated using Weblate (Romanian)

Currently translated at 100.0% (183 of 183 strings)

Translated using Weblate (Romanian)

Currently translated at 100.0% (427 of 427 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: lukasig <lukasig@hotmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/audio/ro/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/ro/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-camera/ro/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/ro/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-filter/ro/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-icons/ro/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-player/ro/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/objects/ro/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-configeditor/ro/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-events/ro/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/ro/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-exports/ro/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/ro/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-live/ro/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-search/ro/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/ro/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/ro/
Translation: Frigate NVR/audio
Translation: Frigate NVR/common
Translation: Frigate NVR/components-camera
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/components-filter
Translation: Frigate NVR/components-icons
Translation: Frigate NVR/components-player
Translation: Frigate NVR/objects
Translation: Frigate NVR/views-configeditor
Translation: Frigate NVR/views-events
Translation: Frigate NVR/views-explore
Translation: Frigate NVR/views-exports
Translation: Frigate NVR/views-facelibrary
Translation: Frigate NVR/views-live
Translation: Frigate NVR/views-search
Translation: Frigate NVR/views-settings
Translation: Frigate NVR/views-system
2025-07-26 08:15:36 -04:00
Hosted Weblate
146de123b9 Translated using Weblate (Danish)
Currently translated at 1.6% (1 of 62 strings)

Translated using Weblate (Danish)

Currently translated at 100.0% (183 of 183 strings)

Added translation using Weblate (Danish)

Added translation using Weblate (Danish)

Added translation using Weblate (Danish)

Added translation using Weblate (Danish)

Added translation using Weblate (Danish)

Added translation using Weblate (Danish)

Added translation using Weblate (Danish)

Added translation using Weblate (Danish)

Added translation using Weblate (Danish)

Added translation using Weblate (Danish)

Added translation using Weblate (Danish)

Added translation using Weblate (Danish)

Added translation using Weblate (Danish)

Added translation using Weblate (Danish)

Added translation using Weblate (Danish)

Added translation using Weblate (Danish)

Added translation using Weblate (Danish)

Added translation using Weblate (Danish)

Added translation using Weblate (Danish)

Added translation using Weblate (Danish)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Rene-Olskjaer <rene@olskjaer.dk>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/da/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/da/
Translation: Frigate NVR/common
Translation: Frigate NVR/views-facelibrary
2025-07-26 08:15:36 -04:00
Hosted Weblate
2586b8d299 Translated using Weblate (Portuguese (Brazil))
Currently translated at 18.4% (21 of 114 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 5.1% (18 of 352 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 37.5% (18 of 48 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 23.7% (19 of 80 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 59.6% (37 of 62 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 17.3% (20 of 115 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 75.0% (18 of 24 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 80.0% (20 of 25 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 30.3% (20 of 66 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 40.0% (20 of 50 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 43.4% (20 of 46 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 18.6% (22 of 118 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 12.5% (23 of 183 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 6.7% (29 of 427 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 9.6% (11 of 114 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 3.1% (11 of 352 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 22.9% (11 of 48 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 13.7% (11 of 80 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 48.3% (30 of 62 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 11.3% (13 of 115 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 50.0% (12 of 24 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 48.0% (12 of 25 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 18.1% (12 of 66 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 24.0% (12 of 50 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 26.0% (12 of 46 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 10.1% (12 of 118 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 7.1% (13 of 183 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 8.7% (10 of 114 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 2.8% (10 of 352 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 20.8% (10 of 48 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 12.5% (10 of 80 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 45.1% (28 of 62 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (9 of 9 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 9.5% (11 of 115 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 45.8% (11 of 24 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 44.0% (11 of 25 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 16.6% (11 of 66 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 22.0% (11 of 50 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 23.9% (11 of 46 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (9 of 9 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 9.3% (11 of 118 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 6.5% (12 of 183 strings)

Co-authored-by: Cleiton Carvalho <cleitonsilvacarvalho@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Paulo Daltro <paulinhopcm15@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/audio/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-auth/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-camera/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-filter/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-player/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/objects/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-events/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-exports/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-live/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-search/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/pt_BR/
Translation: Frigate NVR/audio
Translation: Frigate NVR/common
Translation: Frigate NVR/components-auth
Translation: Frigate NVR/components-camera
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/components-filter
Translation: Frigate NVR/components-player
Translation: Frigate NVR/objects
Translation: Frigate NVR/views-events
Translation: Frigate NVR/views-explore
Translation: Frigate NVR/views-exports
Translation: Frigate NVR/views-facelibrary
Translation: Frigate NVR/views-live
Translation: Frigate NVR/views-search
Translation: Frigate NVR/views-settings
Translation: Frigate NVR/views-system
2025-07-26 08:15:36 -04:00
Hosted Weblate
24fd95cff4 Translated using Weblate (Turkish)
Currently translated at 100.0% (352 of 352 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: pcislocked <git@pcislocked.net>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/tr/
Translation: Frigate NVR/views-settings
2025-07-26 08:15:36 -04:00
Blake Blackshear
7aa57ebcae Merge remote-tracking branch 'origin/master' into dev 2025-07-26 07:11:31 -05:00
Nicolas Mowen
d5ce0ba73e Update intel supported hardware docs (#19282)
* Update intel supported hardware

* Update naming

* Make docs more consistent

* Apply suggestion from @hawkeye217

Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com>

* Apply suggestion from @hawkeye217

Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com>

---------

Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com>
2025-07-25 10:22:53 -05:00
Josh Hawkins
0c92c3ccfa Add more notification debug logs (#19252) 2025-07-22 08:20:42 -06:00
Josh Hawkins
480072b22d Fix storage graph (#19230)
Recordings usage was not being subtracted from "Other" storage usage stats
2025-07-22 06:24:15 -06:00
Marc Altmann
455423e7f2 Rockchip: add FFmpeg 7.1 to image (#19227)
* Rockchip: add FFmpeg 7.1 to image

* RKMPP: Update presets
2025-07-21 06:07:51 -06:00
Felipe Santos
6d5fb65a68 Revamp YOLOv9 export guide (#19224)
* Revamp YOLOv9 export guide

* Make variant a build arg

* Change VARIANT to MODEL_SIZE

* Mention available models
2025-07-20 09:19:23 -06:00
rossfoss
eb8eee038f Fix typo in annotating doc (#19225) 2025-07-20 06:33:43 -06:00
Nicolas Mowen
7680b050b4 Correctly set the snapPoints (#19206) 2025-07-18 08:28:52 -06:00
Marc Altmann
60923ac1e3 RKNN: Fix broken models for Toolkit v2.3.2 (#19189)
* update models

* don't set input_dtype: float for yolov9 (rknn)
2025-07-18 06:26:41 -06:00
Nicolas Mowen
1763dba9c2 Fix motion timeline offset (#19185) 2025-07-17 08:17:58 -06:00
Josh Hawkins
ca1c98eab8 Fixes (#19125)
* fix embeddings reindex

- always increment processed objects to prevent division by zero
- ensure description still gets processed even if there is no thumbnail

* clean up

* Add newer labels to default attribute map

---------

Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
2025-07-17 07:29:50 -06:00
Nicolas Mowen
3eb3797bc5 Update API schema to latest (#19156)
* Add description to snapshot api

* Update API schema
2025-07-15 21:53:21 -05:00
Blake Blackshear
4a94b43e52 update supported labels (#19159) 2025-07-15 16:38:20 -06:00
Nicolas Mowen
f81ac43be6 Move tensorrt onnxruntime in line with other build variants (#19150) 2025-07-15 08:55:41 -05:00
Manu Wallner
4c8f4ef9fa Replaces sriov flag with explicit path to the Intel GPU device (#19136)
* Replaces `sriov` flag with an explicit path to the GPU device for intel GPUs

* Sort imports
2025-07-14 07:11:25 -05:00
Nicholas Cook
4b72c86e77 Fix IPv6 addresses with IPv4 trusted proxies (#19134)
When an IPv6 address that doesn't map to an IPv4 address was checked
against an IPv4 trusted proxy, we'd hit an exception because
ip.ipv4_mapped was None. Fix this by verifying ipv4_mapped is not None

Co-authored-by: me <me@me>
2025-07-13 20:43:25 -06:00
Biniam Bekele
d574d1edae Use X-Forwarded-Groups instead of -Role in example (#19121)
X-Forwarded-For is not among the list of allowlisted headers, so using it in an example may lead others astray. 

See this discussion: https://github.com/blakeblackshear/frigate/discussions/19120
2025-07-12 16:13:34 -05:00
Hosted Weblate
d96efdbf2e Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (114 of 114 strings)

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 100.0% (352 of 352 strings)

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 100.0% (48 of 48 strings)

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 100.0% (80 of 80 strings)

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 100.0% (115 of 115 strings)

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 100.0% (352 of 352 strings)

Co-authored-by: GuoQing Liu <842607283@qq.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/zh_Hans/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-live/zh_Hans/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-search/zh_Hans/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/zh_Hans/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/zh_Hans/
Translation: Frigate NVR/views-explore
Translation: Frigate NVR/views-live
Translation: Frigate NVR/views-search
Translation: Frigate NVR/views-settings
Translation: Frigate NVR/views-system
2025-07-11 20:42:03 -05:00
Hosted Weblate
0d78aca388 Translated using Weblate (Slovak)
Currently translated at 19.2% (22 of 114 strings)

Translated using Weblate (Slovak)

Currently translated at 6.2% (22 of 352 strings)

Translated using Weblate (Slovak)

Currently translated at 6.2% (22 of 352 strings)

Translated using Weblate (Slovak)

Currently translated at 45.8% (22 of 48 strings)

Translated using Weblate (Slovak)

Currently translated at 88.0% (22 of 25 strings)

Translated using Weblate (Slovak)

Currently translated at 88.0% (22 of 25 strings)

Translated using Weblate (Slovak)

Currently translated at 20.0% (23 of 115 strings)

Translated using Weblate (Slovak)

Currently translated at 100.0% (8 of 8 strings)

Translated using Weblate (Slovak)

Currently translated at 100.0% (9 of 9 strings)

Translated using Weblate (Slovak)

Currently translated at 100.0% (9 of 9 strings)

Translated using Weblate (Slovak)

Currently translated at 27.5% (22 of 80 strings)

Translated using Weblate (Slovak)

Currently translated at 27.5% (22 of 80 strings)

Translated using Weblate (Slovak)

Currently translated at 33.3% (22 of 66 strings)

Translated using Weblate (Slovak)

Currently translated at 91.6% (22 of 24 strings)

Translated using Weblate (Slovak)

Currently translated at 18.6% (22 of 118 strings)

Translated using Weblate (Slovak)

Currently translated at 100.0% (9 of 9 strings)

Translated using Weblate (Slovak)

Currently translated at 47.8% (22 of 46 strings)

Translated using Weblate (Slovak)

Currently translated at 47.8% (22 of 46 strings)

Translated using Weblate (Slovak)

Currently translated at 44.0% (22 of 50 strings)

Translated using Weblate (Slovak)

Currently translated at 44.0% (22 of 50 strings)

Translated using Weblate (Slovak)

Currently translated at 44.0% (22 of 50 strings)

Translated using Weblate (Slovak)

Currently translated at 44.0% (22 of 50 strings)

Translated using Weblate (Slovak)

Currently translated at 12.5% (23 of 183 strings)

Translated using Weblate (Slovak)

Currently translated at 11.0% (47 of 427 strings)

Translated using Weblate (Slovak)

Currently translated at 4.3% (5 of 114 strings)

Translated using Weblate (Slovak)

Currently translated at 1.7% (6 of 352 strings)

Translated using Weblate (Slovak)

Currently translated at 12.5% (6 of 48 strings)

Translated using Weblate (Slovak)

Currently translated at 100.0% (6 of 6 strings)

Translated using Weblate (Slovak)

Currently translated at 24.0% (6 of 25 strings)

Translated using Weblate (Slovak)

Currently translated at 6.0% (7 of 115 strings)

Translated using Weblate (Slovak)

Currently translated at 75.0% (6 of 8 strings)

Translated using Weblate (Slovak)

Currently translated at 66.6% (6 of 9 strings)

Translated using Weblate (Slovak)

Currently translated at 7.5% (6 of 80 strings)

Translated using Weblate (Slovak)

Currently translated at 9.0% (6 of 66 strings)

Translated using Weblate (Slovak)

Currently translated at 9.0% (6 of 66 strings)

Translated using Weblate (Slovak)

Currently translated at 25.0% (6 of 24 strings)

Translated using Weblate (Slovak)

Currently translated at 5.0% (6 of 118 strings)

Translated using Weblate (Slovak)

Currently translated at 66.6% (6 of 9 strings)

Translated using Weblate (Slovak)

Currently translated at 13.0% (6 of 46 strings)

Translated using Weblate (Slovak)

Currently translated at 13.0% (6 of 46 strings)

Translated using Weblate (Slovak)

Currently translated at 12.0% (6 of 50 strings)

Translated using Weblate (Slovak)

Currently translated at 3.8% (7 of 183 strings)

Translated using Weblate (Slovak)

Currently translated at 9.3% (40 of 427 strings)

Translated using Weblate (Slovak)

Currently translated at 1.7% (2 of 114 strings)

Translated using Weblate (Slovak)

Currently translated at 0.5% (2 of 352 strings)

Translated using Weblate (Slovak)

Currently translated at 4.1% (2 of 48 strings)

Translated using Weblate (Slovak)

Currently translated at 50.0% (3 of 6 strings)

Translated using Weblate (Slovak)

Currently translated at 8.0% (2 of 25 strings)

Translated using Weblate (Slovak)

Currently translated at 2.6% (3 of 115 strings)

Translated using Weblate (Slovak)

Currently translated at 2.6% (3 of 115 strings)

Translated using Weblate (Slovak)

Currently translated at 37.5% (3 of 8 strings)

Translated using Weblate (Slovak)

Currently translated at 37.5% (3 of 8 strings)

Translated using Weblate (Slovak)

Currently translated at 33.3% (3 of 9 strings)

Translated using Weblate (Slovak)

Currently translated at 33.3% (3 of 9 strings)

Translated using Weblate (Slovak)

Currently translated at 3.7% (3 of 80 strings)

Translated using Weblate (Slovak)

Currently translated at 3.7% (3 of 80 strings)

Translated using Weblate (Slovak)

Currently translated at 4.5% (3 of 66 strings)

Translated using Weblate (Slovak)

Currently translated at 4.5% (3 of 66 strings)

Translated using Weblate (Slovak)

Currently translated at 12.5% (3 of 24 strings)

Translated using Weblate (Slovak)

Currently translated at 12.5% (3 of 24 strings)

Translated using Weblate (Slovak)

Currently translated at 2.5% (3 of 118 strings)

Translated using Weblate (Slovak)

Currently translated at 2.5% (3 of 118 strings)

Translated using Weblate (Slovak)

Currently translated at 100.0% (2 of 2 strings)

Translated using Weblate (Slovak)

Currently translated at 100.0% (2 of 2 strings)

Translated using Weblate (Slovak)

Currently translated at 33.3% (3 of 9 strings)

Translated using Weblate (Slovak)

Currently translated at 33.3% (3 of 9 strings)

Translated using Weblate (Slovak)

Currently translated at 6.5% (3 of 46 strings)

Translated using Weblate (Slovak)

Currently translated at 6.5% (3 of 46 strings)

Translated using Weblate (Slovak)

Currently translated at 100.0% (62 of 62 strings)

Translated using Weblate (Slovak)

Currently translated at 100.0% (62 of 62 strings)

Translated using Weblate (Slovak)

Currently translated at 100.0% (62 of 62 strings)

Translated using Weblate (Slovak)

Currently translated at 6.0% (3 of 50 strings)

Translated using Weblate (Slovak)

Currently translated at 100.0% (2 of 2 strings)

Translated using Weblate (Slovak)

Currently translated at 2.1% (4 of 183 strings)

Translated using Weblate (Slovak)

Currently translated at 2.1% (4 of 183 strings)

Translated using Weblate (Slovak)

Currently translated at 2.1% (4 of 183 strings)

Translated using Weblate (Slovak)

Currently translated at 2.1% (4 of 183 strings)

Translated using Weblate (Slovak)

Currently translated at 8.8% (38 of 427 strings)

Translated using Weblate (Slovak)

Currently translated at 8.8% (38 of 427 strings)

Added translation using Weblate (Slovak)

Added translation using Weblate (Slovak)

Added translation using Weblate (Slovak)

Translated using Weblate (Slovak)

Currently translated at 8.4% (36 of 427 strings)

Update translation files

Updated by "Squash Git commits" add-on in Weblate.

Translated using Weblate (Slovak)

Currently translated at 8.4% (36 of 427 strings)

Translated using Weblate (Slovak)

Currently translated at 8.4% (36 of 427 strings)

Added translation using Weblate (Slovak)

Translated using Weblate (Slovak)

Currently translated at 7.4% (32 of 427 strings)

Added translation using Weblate (Slovak)

Translated using Weblate (Slovak)

Currently translated at 6.0% (26 of 427 strings)

Added translation using Weblate (Slovak)

Translated using Weblate (Slovak)

Currently translated at 5.3% (23 of 427 strings)

Update translation files

Updated by "Squash Git commits" add-on in Weblate.

Translated using Weblate (Slovak)

Currently translated at 4.2% (18 of 427 strings)

Translated using Weblate (Slovak)

Currently translated at 4.2% (18 of 427 strings)

Added translation using Weblate (Slovak)

Translated using Weblate (Slovak)

Currently translated at 2.8% (12 of 427 strings)

Added translation using Weblate (Slovak)

Added translation using Weblate (Slovak)

Added translation using Weblate (Slovak)

Translated using Weblate (Slovak)

Currently translated at 2.5% (11 of 427 strings)

Added translation using Weblate (Slovak)

Translated using Weblate (Slovak)

Currently translated at 2.3% (10 of 427 strings)

Added translation using Weblate (Slovak)

Added translation using Weblate (Slovak)

Added translation using Weblate (Slovak)

Added translation using Weblate (Slovak)

Added translation using Weblate (Slovak)

Translated using Weblate (Slovak)

Currently translated at 2.1% (9 of 427 strings)

Update translation files

Updated by "Squash Git commits" add-on in Weblate.

Added translation using Weblate (Slovak)

Translated using Weblate (Slovak)

Currently translated at 1.1% (5 of 427 strings)

Added translation using Weblate (Slovak)

Translated using Weblate (Slovak)

Currently translated at 0.9% (4 of 427 strings)

Added translation using Weblate (Slovak)

Added translation using Weblate (Slovak)

Co-authored-by: Daniel Lukáč <dlukac44@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Jakub K <klacanjakub0@gmail.com>
Co-authored-by: Languages add-on <noreply-addon-languages@weblate.org>
Co-authored-by: Michal K <michal@totaljs.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/audio/sk/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/sk/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-auth/sk/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-camera/sk/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/sk/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-filter/sk/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-icons/sk/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-input/sk/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-player/sk/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/objects/sk/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-configeditor/sk/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-events/sk/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/sk/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-exports/sk/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/sk/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-live/sk/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-recording/sk/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-search/sk/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/sk/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/sk/
Translation: Frigate NVR/audio
Translation: Frigate NVR/common
Translation: Frigate NVR/components-auth
Translation: Frigate NVR/components-camera
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/components-filter
Translation: Frigate NVR/components-icons
Translation: Frigate NVR/components-input
Translation: Frigate NVR/components-player
Translation: Frigate NVR/objects
Translation: Frigate NVR/views-configeditor
Translation: Frigate NVR/views-events
Translation: Frigate NVR/views-explore
Translation: Frigate NVR/views-exports
Translation: Frigate NVR/views-facelibrary
Translation: Frigate NVR/views-live
Translation: Frigate NVR/views-recording
Translation: Frigate NVR/views-search
Translation: Frigate NVR/views-settings
Translation: Frigate NVR/views-system
2025-07-11 20:42:03 -05:00
Hosted Weblate
c0b2693c5b Translated using Weblate (Serbian)
Currently translated at 0.2% (1 of 427 strings)

Translated using Weblate (Serbian)

Currently translated at 0.2% (1 of 427 strings)

Added translation using Weblate (Serbian)

Added translation using Weblate (Serbian)

Added translation using Weblate (Serbian)

Added translation using Weblate (Serbian)

Added translation using Weblate (Serbian)

Added translation using Weblate (Serbian)

Added translation using Weblate (Serbian)

Added translation using Weblate (Serbian)

Added translation using Weblate (Serbian)

Added translation using Weblate (Serbian)

Added translation using Weblate (Serbian)

Added translation using Weblate (Serbian)

Added translation using Weblate (Serbian)

Added translation using Weblate (Serbian)

Added translation using Weblate (Serbian)

Added translation using Weblate (Serbian)

Added translation using Weblate (Serbian)

Added translation using Weblate (Serbian)

Added translation using Weblate (Serbian)

Added translation using Weblate (Serbian)

Co-authored-by: Dalibor Radovanović <darkobg@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Languages add-on <noreply-addon-languages@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/audio/sr/
Translation: Frigate NVR/audio
2025-07-11 20:42:03 -05:00
Hosted Weblate
39ab6c8a10 Translated using Weblate (Finnish)
Currently translated at 30.7% (35 of 114 strings)

Translated using Weblate (Finnish)

Currently translated at 62.5% (30 of 48 strings)

Translated using Weblate (Finnish)

Currently translated at 45.1% (28 of 62 strings)

Translated using Weblate (Finnish)

Currently translated at 43.4% (50 of 115 strings)

Translated using Weblate (Finnish)

Currently translated at 100.0% (25 of 25 strings)

Translated using Weblate (Finnish)

Currently translated at 45.4% (30 of 66 strings)

Translated using Weblate (Finnish)

Currently translated at 62.0% (31 of 50 strings)

Translated using Weblate (Finnish)

Currently translated at 100.0% (46 of 46 strings)

Translated using Weblate (Finnish)

Currently translated at 13.1% (56 of 427 strings)

Translated using Weblate (Finnish)

Currently translated at 42.6% (49 of 115 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Toni Liski <nacree@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/audio/fi/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-camera/fi/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/fi/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-filter/fi/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-player/fi/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/fi/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/fi/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-search/fi/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/fi/
Translation: Frigate NVR/audio
Translation: Frigate NVR/components-camera
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/components-filter
Translation: Frigate NVR/components-player
Translation: Frigate NVR/views-explore
Translation: Frigate NVR/views-facelibrary
Translation: Frigate NVR/views-search
Translation: Frigate NVR/views-system
2025-07-11 20:42:03 -05:00
Hosted Weblate
0dd3713af8 Translated using Weblate (Swedish)
Currently translated at 14.0% (16 of 114 strings)

Translated using Weblate (Swedish)

Currently translated at 32.2% (20 of 62 strings)

Translated using Weblate (Swedish)

Currently translated at 11.3% (13 of 115 strings)

Translated using Weblate (Swedish)

Currently translated at 11.3% (13 of 115 strings)

Translated using Weblate (Swedish)

Currently translated at 56.0% (37 of 66 strings)

Translated using Weblate (Swedish)

Currently translated at 56.0% (37 of 66 strings)

Translated using Weblate (Swedish)

Currently translated at 38.0% (19 of 50 strings)

Translated using Weblate (Swedish)

Currently translated at 38.0% (19 of 50 strings)

Translated using Weblate (Swedish)

Currently translated at 38.0% (19 of 50 strings)

Translated using Weblate (Swedish)

Currently translated at 38.0% (19 of 50 strings)

Co-authored-by: Dagfinn Kolstad <dagfinn.kolstad@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/sv/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-filter/sv/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/sv/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/sv/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/sv/
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/components-filter
Translation: Frigate NVR/views-explore
Translation: Frigate NVR/views-facelibrary
Translation: Frigate NVR/views-system
2025-07-11 20:42:03 -05:00
Hosted Weblate
52460a8fbb Translated using Weblate (Indonesian)
Currently translated at 7.8% (9 of 114 strings)

Translated using Weblate (Indonesian)

Currently translated at 11.2% (9 of 80 strings)

Translated using Weblate (Indonesian)

Currently translated at 100.0% (9 of 9 strings)

Translated using Weblate (Indonesian)

Currently translated at 37.5% (9 of 24 strings)

Translated using Weblate (Indonesian)

Currently translated at 40.0% (10 of 25 strings)

Translated using Weblate (Indonesian)

Currently translated at 13.6% (9 of 66 strings)

Translated using Weblate (Indonesian)

Currently translated at 21.7% (10 of 46 strings)

Translated using Weblate (Indonesian)

Currently translated at 8.4% (10 of 118 strings)

Translated using Weblate (Indonesian)

Currently translated at 5.4% (10 of 183 strings)

Translated using Weblate (Indonesian)

Currently translated at 7.0% (8 of 114 strings)

Translated using Weblate (Indonesian)

Currently translated at 2.2% (8 of 352 strings)

Translated using Weblate (Indonesian)

Currently translated at 16.6% (8 of 48 strings)

Translated using Weblate (Indonesian)

Currently translated at 10.0% (8 of 80 strings)

Translated using Weblate (Indonesian)

Currently translated at 88.8% (8 of 9 strings)

Translated using Weblate (Indonesian)

Currently translated at 7.8% (9 of 115 strings)

Translated using Weblate (Indonesian)

Currently translated at 33.3% (8 of 24 strings)

Translated using Weblate (Indonesian)

Currently translated at 100.0% (8 of 8 strings)

Translated using Weblate (Indonesian)

Currently translated at 32.0% (8 of 25 strings)

Translated using Weblate (Indonesian)

Currently translated at 12.1% (8 of 66 strings)

Translated using Weblate (Indonesian)

Currently translated at 16.0% (8 of 50 strings)

Translated using Weblate (Indonesian)

Currently translated at 17.3% (8 of 46 strings)

Translated using Weblate (Indonesian)

Currently translated at 100.0% (9 of 9 strings)

Translated using Weblate (Indonesian)

Currently translated at 7.6% (9 of 118 strings)

Translated using Weblate (Indonesian)

Currently translated at 4.9% (9 of 183 strings)

Translated using Weblate (Indonesian)

Currently translated at 6.7% (29 of 427 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Ichlasul Affan <ichlaffterlalu@gmail.com>
Co-authored-by: Zacky <athallahzacky0204@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/audio/id/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/id/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-auth/id/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-camera/id/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/id/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-filter/id/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-player/id/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/objects/id/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-configeditor/id/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-events/id/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/id/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-exports/id/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-live/id/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-search/id/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/id/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/id/
Translation: Frigate NVR/audio
Translation: Frigate NVR/common
Translation: Frigate NVR/components-auth
Translation: Frigate NVR/components-camera
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/components-filter
Translation: Frigate NVR/components-player
Translation: Frigate NVR/objects
Translation: Frigate NVR/views-configeditor
Translation: Frigate NVR/views-events
Translation: Frigate NVR/views-explore
Translation: Frigate NVR/views-exports
Translation: Frigate NVR/views-live
Translation: Frigate NVR/views-search
Translation: Frigate NVR/views-settings
Translation: Frigate NVR/views-system
2025-07-11 20:42:03 -05:00
Hosted Weblate
fea9901ae5 Translated using Weblate (Arabic)
Currently translated at 44.4% (4 of 9 strings)

Translated using Weblate (Arabic)

Currently translated at 16.6% (4 of 24 strings)

Translated using Weblate (Arabic)

Currently translated at 5.0% (4 of 80 strings)

Translated using Weblate (Arabic)

Currently translated at 3.4% (4 of 115 strings)

Translated using Weblate (Arabic)

Currently translated at 16.0% (4 of 25 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: mikealanni <mikealanni@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-auth/ar/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-player/ar/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-events/ar/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/ar/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-live/ar/
Translation: Frigate NVR/components-auth
Translation: Frigate NVR/components-player
Translation: Frigate NVR/views-events
Translation: Frigate NVR/views-explore
Translation: Frigate NVR/views-live
2025-07-11 20:42:03 -05:00
Hosted Weblate
4db703cc3d Translated using Weblate (Italian)
Currently translated at 100.0% (352 of 352 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Woody W <woody4165@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/it/
Translation: Frigate NVR/views-settings
2025-07-11 20:42:03 -05:00
Hosted Weblate
b63a3d327d Translated using Weblate (Hebrew)
Currently translated at 100.0% (352 of 352 strings)

Translated using Weblate (Hebrew)

Currently translated at 100.0% (115 of 115 strings)

Translated using Weblate (Hebrew)

Currently translated at 100.0% (427 of 427 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Ronen Atsil <atsil55@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/audio/he/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/he/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/he/
Translation: Frigate NVR/audio
Translation: Frigate NVR/views-explore
Translation: Frigate NVR/views-settings
2025-07-11 20:42:03 -05:00
Hosted Weblate
5b32ec4fbd Translated using Weblate (Hungarian)
Currently translated at 100.0% (114 of 114 strings)

Translated using Weblate (Hungarian)

Currently translated at 100.0% (114 of 114 strings)

Translated using Weblate (Hungarian)

Currently translated at 100.0% (352 of 352 strings)

Translated using Weblate (Hungarian)

Currently translated at 100.0% (352 of 352 strings)

Translated using Weblate (Hungarian)

Currently translated at 100.0% (352 of 352 strings)

Translated using Weblate (Hungarian)

Currently translated at 100.0% (352 of 352 strings)

Translated using Weblate (Hungarian)

Currently translated at 100.0% (352 of 352 strings)

Translated using Weblate (Hungarian)

Currently translated at 100.0% (352 of 352 strings)

Translated using Weblate (Hungarian)

Currently translated at 100.0% (352 of 352 strings)

Translated using Weblate (Hungarian)

Currently translated at 100.0% (352 of 352 strings)

Translated using Weblate (Hungarian)

Currently translated at 100.0% (352 of 352 strings)

Translated using Weblate (Hungarian)

Currently translated at 100.0% (352 of 352 strings)

Translated using Weblate (Hungarian)

Currently translated at 100.0% (352 of 352 strings)

Translated using Weblate (Hungarian)

Currently translated at 100.0% (352 of 352 strings)

Translated using Weblate (Hungarian)

Currently translated at 100.0% (352 of 352 strings)

Translated using Weblate (Hungarian)

Currently translated at 100.0% (352 of 352 strings)

Translated using Weblate (Hungarian)

Currently translated at 100.0% (352 of 352 strings)

Translated using Weblate (Hungarian)

Currently translated at 100.0% (48 of 48 strings)

Translated using Weblate (Hungarian)

Currently translated at 100.0% (80 of 80 strings)

Translated using Weblate (Hungarian)

Currently translated at 100.0% (80 of 80 strings)

Translated using Weblate (Hungarian)

Currently translated at 100.0% (62 of 62 strings)

Translated using Weblate (Hungarian)

Currently translated at 100.0% (62 of 62 strings)

Translated using Weblate (Hungarian)

Currently translated at 100.0% (62 of 62 strings)

Translated using Weblate (Hungarian)

Currently translated at 100.0% (115 of 115 strings)

Translated using Weblate (Hungarian)

Currently translated at 100.0% (115 of 115 strings)

Translated using Weblate (Hungarian)

Currently translated at 100.0% (66 of 66 strings)

Translated using Weblate (Hungarian)

Currently translated at 100.0% (50 of 50 strings)

Translated using Weblate (Hungarian)

Currently translated at 100.0% (46 of 46 strings)

Translated using Weblate (Hungarian)

Currently translated at 100.0% (118 of 118 strings)

Translated using Weblate (Hungarian)

Currently translated at 100.0% (427 of 427 strings)

Translated using Weblate (Hungarian)

Currently translated at 100.0% (427 of 427 strings)

Translated using Weblate (Hungarian)

Currently translated at 100.0% (427 of 427 strings)

Translated using Weblate (Hungarian)

Currently translated at 100.0% (427 of 427 strings)

Translated using Weblate (Hungarian)

Currently translated at 97.3% (111 of 114 strings)

Translated using Weblate (Hungarian)

Currently translated at 67.6% (238 of 352 strings)

Translated using Weblate (Hungarian)

Currently translated at 89.5% (43 of 48 strings)

Translated using Weblate (Hungarian)

Currently translated at 95.1% (59 of 62 strings)

Translated using Weblate (Hungarian)

Currently translated at 86.0% (99 of 115 strings)

Translated using Weblate (Hungarian)

Currently translated at 91.2% (104 of 114 strings)

Translated using Weblate (Hungarian)

Currently translated at 62.7% (221 of 352 strings)

Translated using Weblate (Hungarian)

Currently translated at 91.2% (104 of 114 strings)

Translated using Weblate (Hungarian)

Currently translated at 53.9% (190 of 352 strings)

Translated using Weblate (Hungarian)

Currently translated at 83.3% (40 of 48 strings)

Translated using Weblate (Hungarian)

Currently translated at 77.5% (62 of 80 strings)

Translated using Weblate (Hungarian)

Currently translated at 91.9% (57 of 62 strings)

Translated using Weblate (Hungarian)

Currently translated at 82.6% (95 of 115 strings)

Translated using Weblate (Hungarian)

Currently translated at 100.0% (24 of 24 strings)

Translated using Weblate (Hungarian)

Currently translated at 100.0% (2 of 2 strings)

Translated using Weblate (Hungarian)

Currently translated at 89.3% (59 of 66 strings)

Translated using Weblate (Hungarian)

Currently translated at 90.0% (45 of 50 strings)

Translated using Weblate (Hungarian)

Currently translated at 91.3% (42 of 46 strings)

Translated using Weblate (Hungarian)

Currently translated at 100.0% (9 of 9 strings)

Translated using Weblate (Hungarian)

Currently translated at 100.0% (118 of 118 strings)

Translated using Weblate (Hungarian)

Currently translated at 82.6% (353 of 427 strings)

Translated using Weblate (Hungarian)

Currently translated at 100.0% (183 of 183 strings)

Translated using Weblate (Hungarian)

Currently translated at 52.5% (185 of 352 strings)

Translated using Weblate (Hungarian)

Currently translated at 71.1% (84 of 118 strings)

Translated using Weblate (Hungarian)

Currently translated at 71.4% (305 of 427 strings)

Translated using Weblate (Hungarian)

Currently translated at 66.6% (122 of 183 strings)

Translated using Weblate (Hungarian)

Currently translated at 26.4% (93 of 352 strings)

Translated using Weblate (Hungarian)

Currently translated at 70.3% (83 of 118 strings)

Translated using Weblate (Hungarian)

Currently translated at 53.6% (229 of 427 strings)

Translated using Weblate (Hungarian)

Currently translated at 90.3% (103 of 114 strings)

Translated using Weblate (Hungarian)

Currently translated at 12.5% (44 of 352 strings)

Translated using Weblate (Hungarian)

Currently translated at 68.7% (33 of 48 strings)

Translated using Weblate (Hungarian)

Currently translated at 68.7% (55 of 80 strings)

Translated using Weblate (Hungarian)

Currently translated at 85.4% (53 of 62 strings)

Translated using Weblate (Hungarian)

Currently translated at 100.0% (9 of 9 strings)

Translated using Weblate (Hungarian)

Currently translated at 78.2% (90 of 115 strings)

Translated using Weblate (Hungarian)

Currently translated at 91.6% (22 of 24 strings)

Translated using Weblate (Hungarian)

Currently translated at 100.0% (25 of 25 strings)

Translated using Weblate (Hungarian)

Currently translated at 74.2% (49 of 66 strings)

Translated using Weblate (Hungarian)

Currently translated at 80.0% (40 of 50 strings)

Translated using Weblate (Hungarian)

Currently translated at 78.2% (36 of 46 strings)

Translated using Weblate (Hungarian)

Currently translated at 65.2% (77 of 118 strings)

Translated using Weblate (Hungarian)

Currently translated at 37.7% (161 of 427 strings)

Translated using Weblate (Hungarian)

Currently translated at 65.5% (120 of 183 strings)

Co-authored-by: Dávid Attila Balog <davidattilabalog@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Netesfiu <r4verino@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/audio/hu/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/hu/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-auth/hu/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-camera/hu/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/hu/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-filter/hu/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-input/hu/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-player/hu/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/objects/hu/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-events/hu/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/hu/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-exports/hu/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/hu/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-live/hu/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-search/hu/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/hu/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/hu/
Translation: Frigate NVR/audio
Translation: Frigate NVR/common
Translation: Frigate NVR/components-auth
Translation: Frigate NVR/components-camera
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/components-filter
Translation: Frigate NVR/components-input
Translation: Frigate NVR/components-player
Translation: Frigate NVR/objects
Translation: Frigate NVR/views-events
Translation: Frigate NVR/views-explore
Translation: Frigate NVR/views-exports
Translation: Frigate NVR/views-facelibrary
Translation: Frigate NVR/views-live
Translation: Frigate NVR/views-search
Translation: Frigate NVR/views-settings
Translation: Frigate NVR/views-system
2025-07-11 20:42:03 -05:00
Hosted Weblate
12a80f5713 Translated using Weblate (Portuguese)
Currently translated at 100.0% (9 of 9 strings)

Translated using Weblate (Portuguese)

Currently translated at 100.0% (9 of 9 strings)

Translated using Weblate (Portuguese)

Currently translated at 100.0% (352 of 352 strings)

Co-authored-by: Helder Santana <helder.santana@systemsbr.com.br>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Rodrigo Suzana <rms.suzana@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-exports/pt/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/pt/
Translation: Frigate NVR/views-exports
Translation: Frigate NVR/views-settings
2025-07-11 20:42:03 -05:00
Hosted Weblate
598520b5c2 Translated using Weblate (Czech)
Currently translated at 100.0% (62 of 62 strings)

Translated using Weblate (Czech)

Currently translated at 100.0% (62 of 62 strings)

Translated using Weblate (Czech)

Currently translated at 100.0% (62 of 62 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Michal K <michal@totaljs.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/cs/
Translation: Frigate NVR/views-facelibrary
2025-07-11 20:42:03 -05:00
Hosted Weblate
89e5f60fab Translated using Weblate (Catalan)
Currently translated at 100.0% (352 of 352 strings)

Translated using Weblate (Catalan)

Currently translated at 100.0% (114 of 114 strings)

Translated using Weblate (Catalan)

Currently translated at 93.1% (328 of 352 strings)

Translated using Weblate (Catalan)

Currently translated at 100.0% (80 of 80 strings)

Translated using Weblate (Catalan)

Currently translated at 100.0% (115 of 115 strings)

Translated using Weblate (Catalan)

Currently translated at 100.0% (427 of 427 strings)

Co-authored-by: Eduard Frigola <eduardfrigola@yahoo.com>
Co-authored-by: Gerard Ricart Castells <gerard.ricart@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/audio/ca/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/ca/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-live/ca/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/ca/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/ca/
Translation: Frigate NVR/audio
Translation: Frigate NVR/views-explore
Translation: Frigate NVR/views-live
Translation: Frigate NVR/views-settings
Translation: Frigate NVR/views-system
2025-07-11 20:42:03 -05:00
Hosted Weblate
aa7c9f441f Translated using Weblate (Romanian)
Currently translated at 100.0% (114 of 114 strings)

Translated using Weblate (Romanian)

Currently translated at 100.0% (352 of 352 strings)

Translated using Weblate (Romanian)

Currently translated at 100.0% (80 of 80 strings)

Translated using Weblate (Romanian)

Currently translated at 100.0% (115 of 115 strings)

Translated using Weblate (Romanian)

Currently translated at 100.0% (183 of 183 strings)

Translated using Weblate (Romanian)

Currently translated at 100.0% (427 of 427 strings)

Translated using Weblate (Romanian)

Currently translated at 32.6% (115 of 352 strings)

Translated using Weblate (Romanian)

Currently translated at 77.5% (331 of 427 strings)

Translated using Weblate (Romanian)

Currently translated at 97.3% (111 of 114 strings)

Translated using Weblate (Romanian)

Currently translated at 32.3% (114 of 352 strings)

Translated using Weblate (Romanian)

Currently translated at 100.0% (80 of 80 strings)

Translated using Weblate (Romanian)

Currently translated at 100.0% (62 of 62 strings)

Translated using Weblate (Romanian)

Currently translated at 97.3% (112 of 115 strings)

Translated using Weblate (Romanian)

Currently translated at 100.0% (66 of 66 strings)

Translated using Weblate (Romanian)

Currently translated at 77.2% (330 of 427 strings)

Translated using Weblate (Romanian)

Currently translated at 53.5% (61 of 114 strings)

Translated using Weblate (Romanian)

Currently translated at 27.2% (96 of 352 strings)

Translated using Weblate (Romanian)

Currently translated at 75.0% (60 of 80 strings)

Translated using Weblate (Romanian)

Currently translated at 98.3% (61 of 62 strings)

Translated using Weblate (Romanian)

Currently translated at 54.7% (63 of 115 strings)

Translated using Weblate (Romanian)

Currently translated at 92.4% (61 of 66 strings)

Translated using Weblate (Romanian)

Currently translated at 100.0% (50 of 50 strings)

Translated using Weblate (Romanian)

Currently translated at 100.0% (46 of 46 strings)

Translated using Weblate (Romanian)

Currently translated at 86.3% (158 of 183 strings)

Translated using Weblate (Romanian)

Currently translated at 73.0% (312 of 427 strings)

Translated using Weblate (Romanian)

Currently translated at 37.7% (43 of 114 strings)

Translated using Weblate (Romanian)

Currently translated at 26.4% (93 of 352 strings)

Translated using Weblate (Romanian)

Currently translated at 47.5% (38 of 80 strings)

Translated using Weblate (Romanian)

Currently translated at 61.2% (38 of 62 strings)

Translated using Weblate (Romanian)

Currently translated at 33.9% (39 of 115 strings)

Translated using Weblate (Romanian)

Currently translated at 59.0% (39 of 66 strings)

Translated using Weblate (Romanian)

Currently translated at 80.0% (40 of 50 strings)

Translated using Weblate (Romanian)

Currently translated at 84.7% (39 of 46 strings)

Translated using Weblate (Romanian)

Currently translated at 70.9% (303 of 427 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: lukasig <lukasig@hotmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/audio/ro/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/ro/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-camera/ro/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/ro/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-filter/ro/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/ro/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/ro/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-live/ro/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/ro/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/ro/
Translation: Frigate NVR/audio
Translation: Frigate NVR/common
Translation: Frigate NVR/components-camera
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/components-filter
Translation: Frigate NVR/views-explore
Translation: Frigate NVR/views-facelibrary
Translation: Frigate NVR/views-live
Translation: Frigate NVR/views-settings
Translation: Frigate NVR/views-system
2025-07-11 20:42:03 -05:00
Hosted Weblate
2aaf96d043 Translated using Weblate (Russian)
Currently translated at 100.0% (352 of 352 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Артём Владимиров <artyomka71@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/ru/
Translation: Frigate NVR/views-settings
2025-07-11 20:42:03 -05:00
Hosted Weblate
b7d705a028 Translated using Weblate (Greek)
Currently translated at 88.0% (22 of 25 strings)

Translated using Weblate (Greek)

Currently translated at 100.0% (2 of 2 strings)

Translated using Weblate (Greek)

Currently translated at 5.0% (6 of 118 strings)

Translated using Weblate (Greek)

Currently translated at 11.7% (50 of 427 strings)

Translated using Weblate (Greek)

Currently translated at 0.8% (3 of 352 strings)

Translated using Weblate (Greek)

Currently translated at 6.2% (3 of 48 strings)

Translated using Weblate (Greek)

Currently translated at 66.6% (4 of 6 strings)

Translated using Weblate (Greek)

Currently translated at 2.5% (2 of 80 strings)

Translated using Weblate (Greek)

Currently translated at 6.4% (4 of 62 strings)

Translated using Weblate (Greek)

Currently translated at 33.3% (3 of 9 strings)

Translated using Weblate (Greek)

Currently translated at 16.6% (4 of 24 strings)

Translated using Weblate (Greek)

Currently translated at 37.5% (3 of 8 strings)

Translated using Weblate (Greek)

Currently translated at 12.0% (3 of 25 strings)

Translated using Weblate (Greek)

Currently translated at 44.4% (4 of 9 strings)

Translated using Weblate (Greek)

Currently translated at 2.1% (4 of 183 strings)

Translated using Weblate (Greek)

Currently translated at 4.2% (5 of 118 strings)

Translated using Weblate (Greek)

Currently translated at 6.7% (29 of 427 strings)

Translated using Weblate (Greek)

Currently translated at 0.8% (1 of 114 strings)

Translated using Weblate (Greek)

Currently translated at 0.2% (1 of 352 strings)

Translated using Weblate (Greek)

Currently translated at 2.0% (1 of 48 strings)

Translated using Weblate (Greek)

Currently translated at 33.3% (2 of 6 strings)

Translated using Weblate (Greek)

Currently translated at 1.2% (1 of 80 strings)

Translated using Weblate (Greek)

Currently translated at 1.6% (1 of 62 strings)

Translated using Weblate (Greek)

Currently translated at 22.2% (2 of 9 strings)

Translated using Weblate (Greek)

Currently translated at 0.8% (1 of 115 strings)

Translated using Weblate (Greek)

Currently translated at 4.1% (1 of 24 strings)

Translated using Weblate (Greek)

Currently translated at 12.5% (1 of 8 strings)

Translated using Weblate (Greek)

Currently translated at 4.0% (1 of 25 strings)

Translated using Weblate (Greek)

Currently translated at 11.1% (1 of 9 strings)

Translated using Weblate (Greek)

Currently translated at 50.0% (1 of 2 strings)

Translated using Weblate (Greek)

Currently translated at 28.0% (14 of 50 strings)

Translated using Weblate (Greek)

Currently translated at 4.3% (2 of 46 strings)

Translated using Weblate (Greek)

Currently translated at 100.0% (2 of 2 strings)

Translated using Weblate (Greek)

Currently translated at 3.0% (2 of 66 strings)

Translated using Weblate (Greek)

Currently translated at 1.0% (2 of 183 strings)

Translated using Weblate (Greek)

Currently translated at 1.6% (2 of 118 strings)

Translated using Weblate (Greek)

Currently translated at 6.3% (27 of 427 strings)

Added translation using Weblate (Greek)

Added translation using Weblate (Greek)

Added translation using Weblate (Greek)

Translated using Weblate (Greek)

Currently translated at 6.0% (26 of 427 strings)

Added translation using Weblate (Greek)

Translated using Weblate (Greek)

Currently translated at 5.8% (25 of 427 strings)

Added translation using Weblate (Greek)

Added translation using Weblate (Greek)

Added translation using Weblate (Greek)

Translated using Weblate (Greek)

Currently translated at 5.6% (24 of 427 strings)

Added translation using Weblate (Greek)

Added translation using Weblate (Greek)

Added translation using Weblate (Greek)

Added translation using Weblate (Greek)

Translated using Weblate (Greek)

Currently translated at 5.3% (23 of 427 strings)

Update translation files

Updated by "Squash Git commits" add-on in Weblate.

Translated using Weblate (Greek)

Currently translated at 5.1% (22 of 427 strings)

Update translation files

Updated by "Squash Git commits" add-on in Weblate.

Translated using Weblate (Greek)

Currently translated at 4.2% (18 of 427 strings)

Update translation files

Updated by "Squash Git commits" add-on in Weblate.

Translated using Weblate (Greek)

Currently translated at 4.2% (18 of 427 strings)

Translated using Weblate (Greek)

Currently translated at 2.1% (9 of 427 strings)

Added translation using Weblate (Greek)

Translated using Weblate (Greek)

Currently translated at 1.4% (6 of 427 strings)

Added translation using Weblate (Greek)

Translated using Weblate (Greek)

Currently translated at 1.1% (5 of 427 strings)

Added translation using Weblate (Greek)

Translated using Weblate (Greek)

Currently translated at 0.4% (2 of 427 strings)

Added translation using Weblate (Greek)

Added translation using Weblate (Greek)

Translated using Weblate (Greek)

Currently translated at 0.2% (1 of 427 strings)

Added translation using Weblate (Greek)

Added translation using Weblate (Greek)

Added translation using Weblate (Greek)

Added translation using Weblate (Greek)

Co-authored-by: George Betsis <gbetsis@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Languages add-on <noreply-addon-languages@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/audio/el/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/el/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-auth/el/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-camera/el/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/el/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-filter/el/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-icons/el/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-input/el/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-player/el/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/objects/el/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-configeditor/el/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-events/el/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/el/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-exports/el/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/el/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-live/el/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-recording/el/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-search/el/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/el/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/el/
Translation: Frigate NVR/audio
Translation: Frigate NVR/common
Translation: Frigate NVR/components-auth
Translation: Frigate NVR/components-camera
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/components-filter
Translation: Frigate NVR/components-icons
Translation: Frigate NVR/components-input
Translation: Frigate NVR/components-player
Translation: Frigate NVR/objects
Translation: Frigate NVR/views-configeditor
Translation: Frigate NVR/views-events
Translation: Frigate NVR/views-explore
Translation: Frigate NVR/views-exports
Translation: Frigate NVR/views-facelibrary
Translation: Frigate NVR/views-live
Translation: Frigate NVR/views-recording
Translation: Frigate NVR/views-search
Translation: Frigate NVR/views-settings
Translation: Frigate NVR/views-system
2025-07-11 20:42:03 -05:00
Hosted Weblate
68688a6c23 Translated using Weblate (German)
Currently translated at 100.0% (352 of 352 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Viktor Stier <viktor-stier@gmx.de>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/de/
Translation: Frigate NVR/views-settings
2025-07-11 20:42:03 -05:00
Hosted Weblate
1fac827dde Translated using Weblate (Portuguese (Brazil))
Currently translated at 6.1% (7 of 114 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 1.9% (7 of 352 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 14.5% (7 of 48 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (6 of 6 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 8.7% (7 of 80 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 40.3% (25 of 62 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 40.3% (25 of 62 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 77.7% (7 of 9 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 6.0% (7 of 115 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 33.3% (8 of 24 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 33.3% (8 of 24 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (8 of 8 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 32.0% (8 of 25 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (2 of 2 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (2 of 2 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 12.1% (8 of 66 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 16.0% (8 of 50 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 17.3% (8 of 46 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 17.3% (8 of 46 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 17.3% (8 of 46 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 88.8% (8 of 9 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 6.7% (8 of 118 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 4.9% (9 of 183 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 5.1% (22 of 427 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 35.4% (22 of 62 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 33.8% (21 of 62 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 1.6% (3 of 183 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 0.8% (1 of 114 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 0.2% (1 of 352 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 2.0% (1 of 48 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 33.3% (2 of 6 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 1.2% (1 of 80 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 22.2% (2 of 9 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 0.8% (1 of 115 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 4.1% (1 of 24 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 12.5% (1 of 8 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 4.0% (1 of 25 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 50.0% (1 of 2 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (2 of 2 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 3.0% (2 of 66 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 4.0% (2 of 50 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 4.3% (2 of 46 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 22.2% (2 of 9 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 1.6% (2 of 118 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 1.0% (2 of 183 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 3.9% (17 of 427 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 3.7% (16 of 427 strings)

Added translation using Weblate (Portuguese (Brazil))

Added translation using Weblate (Portuguese (Brazil))

Added translation using Weblate (Portuguese (Brazil))

Added translation using Weblate (Portuguese (Brazil))

Added translation using Weblate (Portuguese (Brazil))

Added translation using Weblate (Portuguese (Brazil))

Added translation using Weblate (Portuguese (Brazil))

Added translation using Weblate (Portuguese (Brazil))

Added translation using Weblate (Portuguese (Brazil))

Added translation using Weblate (Portuguese (Brazil))

Added translation using Weblate (Portuguese (Brazil))

Added translation using Weblate (Portuguese (Brazil))

Added translation using Weblate (Portuguese (Brazil))

Added translation using Weblate (Portuguese (Brazil))

Added translation using Weblate (Portuguese (Brazil))

Added translation using Weblate (Portuguese (Brazil))

Added translation using Weblate (Portuguese (Brazil))

Added translation using Weblate (Portuguese (Brazil))

Added translation using Weblate (Portuguese (Brazil))

Added translation using Weblate (Portuguese (Brazil))

Co-authored-by: Gabriel Vitorio Bernardo do Nascimento <gabri.vitorio@hotmail.com>
Co-authored-by: Helder Santana <helder.santana@systemsbr.com.br>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Ivan Martins Pereira <vodikus@users.noreply.hosted.weblate.org>
Co-authored-by: Languages add-on <noreply-addon-languages@weblate.org>
Co-authored-by: Regis Padua <regispadua@live.com>
Co-authored-by: Romulo Gatto <romulo.gatto@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/audio/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-auth/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-camera/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-filter/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-icons/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-input/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-player/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/objects/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-configeditor/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-events/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-exports/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-live/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-recording/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-search/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/pt_BR/
Translation: Frigate NVR/audio
Translation: Frigate NVR/common
Translation: Frigate NVR/components-auth
Translation: Frigate NVR/components-camera
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/components-filter
Translation: Frigate NVR/components-icons
Translation: Frigate NVR/components-input
Translation: Frigate NVR/components-player
Translation: Frigate NVR/objects
Translation: Frigate NVR/views-configeditor
Translation: Frigate NVR/views-events
Translation: Frigate NVR/views-explore
Translation: Frigate NVR/views-exports
Translation: Frigate NVR/views-facelibrary
Translation: Frigate NVR/views-live
Translation: Frigate NVR/views-recording
Translation: Frigate NVR/views-search
Translation: Frigate NVR/views-settings
Translation: Frigate NVR/views-system
2025-07-11 20:42:03 -05:00
Blake Blackshear
a1048654ee Merge remote-tracking branch 'origin/master' into dev 2025-07-11 20:20:31 -05:00
Nicolas Mowen
f75e55ee74 Improve ffmpeg frame handling (#19110)
* Improve handling of ffmpeg process depending on error

* Simplify code and make it more clear
2025-07-11 14:19:43 -05:00
Josh Hawkins
3bda638678 Set ulimit with Python (#19105)
* Set ulimit with python instead of in s6 startup

* move to services and add env var

* add comment
2025-07-11 08:11:35 -05:00
Nicolas Mowen
5cf98824f5 Misc fixes (#19089)
* Correctly handle min_faces

* Change to use recognized faces
2025-07-11 06:30:26 -06:00
Josh Hawkins
687e118b58 Fix ulimit script (#19095)
* Fix ulimit script

* still try to set soft limit
2025-07-10 18:47:31 -05:00
Nicolas Mowen
95daf0ba05 Fix ulimit setting (#19087)
* Fix setting both hard and soft limits

* Clarify warning
2025-07-10 10:54:47 -06:00
Nicolas Mowen
213dc97c17 Set ulimit (#19086)
* Add script to set ulimits in case they are too low

* Run the script

* Set version

* Set limit if it is too low
2025-07-10 08:48:42 -06:00
Nicolas Mowen
ee1db240d7 Handle window resizes in config editor (#19070) 2025-07-10 08:28:23 -06:00
𝙃𝘼𝙍𝙍𝙔
79655379be fix(docs): default output args (#19047) 2025-07-10 05:30:25 -06:00
András Farkas
f29cf43f52 Update edgetpu.md (#19067)
Updated "USB Coral Not Detected" section with troubleshooting steps for QNAP NAS devices.
2025-07-09 09:49:57 -06:00
Josh Hawkins
cd54a81150 Fixes (#19038)
* Fix Norwegian language code for date-fns module import

* Fix incorrect apple compatibility change

* Add other and unused as separate storage items

---------

Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
2025-07-08 20:06:06 -06:00
Nicolas Mowen
178117183e Move trt error (#19031)
* Move trt error

* Formatting
2025-07-07 17:57:37 -06:00
Nicolas Mowen
d69916694b Remove TensorRT Detector from AMD64 Build (#19030)
* Don't support tensorrt detector for amd64 builds

* Add logs for directing users not to use tensorrt detector

* Rework docs

* Fix dockerfile index

* Don't undo jetson fix
2025-07-07 18:12:52 -05:00
Nicolas Mowen
fc608b31d7 Fix build caching (#19029) 2025-07-07 16:48:58 -06:00
Josh Hawkins
9ffa7f140c Fixes (#18935)
* Sort names alphabetically in face library dropdown

* fix potential divide by zero in misconfigured speed zones
2025-07-07 06:35:55 -06:00
Nicolas Mowen
6563f78ab0 Improve bird classification (#19009)
* Crop more tightly on bird

* Add slight padding
2025-07-06 18:08:47 -06:00
GuoQing Liu
4339f26ded Add Chinese community sponsors (#18945) 2025-07-04 14:32:48 -05:00
Blake Blackshear
86a3e31edf fix hardware page 2025-06-27 06:59:30 -05:00
Blake Blackshear
7238b3ea22 Merge remote-tracking branch 'origin/master' into dev 2025-06-27 06:53:02 -05:00
Nicolas Mowen
ea576e7468 Fixes (#18897)
* Fix showing review items that span over multiple days

* Simplify

* Fix tests

* Fix unchanged value

* Allow admin as default role and viewer as passed header for proxy auth

---------

Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com>
2025-06-26 13:01:09 -06:00
Josh Hawkins
5593495abd Fixes (#18893)
* i18n translated label fixes

* Fix frame cache race bug

Objects that were marked as false positives (that would later become true positives) would sometimes have their saved frame prematurely removed from the frame cache.
2025-06-26 09:25:47 -05:00
Josh Hawkins
fd96cd5dae Verify images before adding to batch for embedding (#18885) 2025-06-26 07:22:31 -06:00
GuoQing Liu
e0c1fea2ac chore: fix exploreMore object i18n (#18888) 2025-06-26 06:05:17 -05:00
Josh Hawkins
f97629433d Fixes (#18877)
* Object labels with spaces should use correct i18n keys

* Add Hungarian

* Ensure onvif move request has a valid speed before removing

When autotracking zooming is set to `disabled` (or is left out of the config), move_request["Speed"] may not exist, depending on the camera

* Add another frame cache debug log
2025-06-25 16:45:24 -05:00
HarvsG
aabd5b0077 remove incorrect apostrophe (#18884) 2025-06-25 15:43:41 -06:00
Pierre Pinon
623bc72633 chore: add annke cz504 to working PTZ cameras list (#18865) 2025-06-24 14:55:43 -06:00
Jan Čermák
f3a0d519fb Bump HailoRT to 4.21.0 for HAOS 16 compatibility (#18859)
Home Assistant OS 16.0.rc1 contains bump of Hailo driver and firmware to
v4.21.0, update Frigate's userspace libraries to the same version to fix
compatibility.
2025-06-24 07:18:34 -06:00
Josh Hawkins
cc368dd20f Fixes (#18833)
* Don't allow editing of sub label until object lifecycle has ended

* Update sub labels in ended review segments

When manually editing a sub label for a tracked object from the UI, any review segments containing that tracked object did not have their sub_labels and objects values altered

* simplify

* Additional onvif debug logs in get_camera_status

* Ensure that best object is only set when the snapshot is actually updated.

* Don't hide downlaod button when there is no review item

---------

Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
2025-06-23 17:40:21 -06:00
Nicolas Mowen
8a9ebe9292 Fixes (#18795)
* Catch error when regex is invalid

* Fix i18n label

* Mobile camera drawer i18n fixes

* additional frame cache debug logs

* Add Romanian

* Fix exports thumbnail path

* Improve clip buffer and remove outdated comments

---------

Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com>
2025-06-20 17:39:47 -05:00
Simonas Kazlauskas
4ff81d5877 yolo nas: do not invalidate model when input shape is different (#18799)
Model can be adjusted ahead of time to NHWC to avoid transpose on CPU,
for example. All the model information is already presented in the
configuration, and the stringent checks implemented in openvino are not
present on other backends anyway. OpenVINO will properly report issues
with mismatched layouts anyhow.
2025-06-20 09:11:48 -06:00
Nicolas Mowen
fe571dc217 Fixes (#18777)
* Remove tracked object update resets

* Adjust face blur reduction

* Add space for config editor buttons

* Slight adjustment

* Fix double thats

* update icons

---------

Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com>
2025-06-19 10:20:33 -05:00
BenV
42cae5d9ee Fix bird link in EnrichmentsSettingsView.tsx (#18719)
* Fix bird link in EnrichmentsSettingsView.tsx

license_plate_recognition -> bird_classification

* Update web/src/views/settings/EnrichmentsSettingsView.tsx

Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>

* Update web/src/views/settings/EnrichmentsSettingsView.tsx

Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>

* Update web/src/views/settings/EnrichmentsSettingsView.tsx

Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>

---------

Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com>
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
2025-06-17 19:45:40 -06:00
Weblate (bot)
ce2b60a4df Translations update from Hosted Weblate (#18757)
* Update translation files

Updated by "Squash Git commits" add-on in Weblate.

Translated using Weblate (Catalan)

Currently translated at 99.1% (113 of 114 strings)

Translated using Weblate (Catalan)

Currently translated at 91.7% (323 of 352 strings)

Translated using Weblate (Catalan)

Currently translated at 98.7% (79 of 80 strings)

Translated using Weblate (Catalan)

Currently translated at 100.0% (62 of 62 strings)

Translated using Weblate (Catalan)

Currently translated at 96.5% (111 of 115 strings)

Translated using Weblate (Catalan)

Currently translated at 100.0% (183 of 183 strings)

Update translation files

Updated by "Squash Git commits" add-on in Weblate.

Co-authored-by: Eduard Frigola <eduardfrigola@yahoo.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/ca/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/ca/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/ca/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-live/ca/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/ca/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/ca/
Translation: Frigate NVR/common
Translation: Frigate NVR/views-explore
Translation: Frigate NVR/views-facelibrary
Translation: Frigate NVR/views-live
Translation: Frigate NVR/views-settings
Translation: Frigate NVR/views-system

* Update translation files

Updated by "Squash Git commits" add-on in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/
Translation: Frigate NVR/common

* Update translation files

Updated by "Squash Git commits" add-on in Weblate.

Update translation files

Updated by "Squash Git commits" add-on in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/
Translation: Frigate NVR/common

* Update translation files

Updated by "Squash Git commits" add-on in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/
Translation: Frigate NVR/common

* Update translation files

Updated by "Squash Git commits" add-on in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/
Translation: Frigate NVR/common

* Update translation files

Updated by "Squash Git commits" add-on in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/
Translation: Frigate NVR/common

* Update translation files

Updated by "Squash Git commits" add-on in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/
Translation: Frigate NVR/common

* Update translation files

Updated by "Squash Git commits" add-on in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/
Translation: Frigate NVR/common

* Translated using Weblate (Catalan)

Currently translated at 99.1% (113 of 114 strings)

Translated using Weblate (Catalan)

Currently translated at 91.7% (323 of 352 strings)

Translated using Weblate (Catalan)

Currently translated at 98.7% (79 of 80 strings)

Translated using Weblate (Catalan)

Currently translated at 100.0% (62 of 62 strings)

Translated using Weblate (Catalan)

Currently translated at 96.5% (111 of 115 strings)

Translated using Weblate (Catalan)

Currently translated at 100.0% (183 of 183 strings)

Update translation files

Updated by "Squash Git commits" add-on in Weblate.

Co-authored-by: Eduard Frigola <eduardfrigola@yahoo.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/ca/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/ca/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/ca/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-live/ca/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/ca/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/ca/
Translation: Frigate NVR/common
Translation: Frigate NVR/views-explore
Translation: Frigate NVR/views-facelibrary
Translation: Frigate NVR/views-live
Translation: Frigate NVR/views-settings
Translation: Frigate NVR/views-system

* Update translation files

Updated by "Squash Git commits" add-on in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/
Translation: Frigate NVR/common

* Update translation files

Updated by "Squash Git commits" add-on in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/
Translation: Frigate NVR/common

* Translated using Weblate (Vietnamese)

Currently translated at 100.0% (114 of 114 strings)

Update translation files

Updated by "Squash Git commits" add-on in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Lâm Lê <silamle6@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/vi/
Translation: Frigate NVR/common
Translation: Frigate NVR/views-system

* Update translation files

Updated by "Squash Git commits" add-on in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/
Translation: Frigate NVR/common

* Update translation files

Updated by "Squash Git commits" add-on in Weblate.

Translated using Weblate (Catalan)

Currently translated at 99.1% (113 of 114 strings)

Translated using Weblate (Catalan)

Currently translated at 91.7% (323 of 352 strings)

Translated using Weblate (Catalan)

Currently translated at 98.7% (79 of 80 strings)

Translated using Weblate (Catalan)

Currently translated at 100.0% (62 of 62 strings)

Translated using Weblate (Catalan)

Currently translated at 96.5% (111 of 115 strings)

Translated using Weblate (Catalan)

Currently translated at 100.0% (183 of 183 strings)

Update translation files

Updated by "Squash Git commits" add-on in Weblate.

Co-authored-by: Eduard Frigola <eduardfrigola@yahoo.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/ca/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/ca/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/ca/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-live/ca/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/ca/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/ca/
Translation: Frigate NVR/common
Translation: Frigate NVR/views-explore
Translation: Frigate NVR/views-facelibrary
Translation: Frigate NVR/views-live
Translation: Frigate NVR/views-settings
Translation: Frigate NVR/views-system

* Update translation files

Updated by "Squash Git commits" add-on in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/
Translation: Frigate NVR/common

* Update translation files

Updated by "Squash Git commits" add-on in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/
Translation: Frigate NVR/common

* Update translation files

Updated by "Squash Git commits" add-on in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/
Translation: Frigate NVR/common

* Update translation files

Updated by "Squash Git commits" add-on in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/
Translation: Frigate NVR/common

* Update translation files

Updated by "Squash Git commits" add-on in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/
Translation: Frigate NVR/common

* Update translation files

Updated by "Squash Git commits" add-on in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/
Translation: Frigate NVR/common

* Update translation files

Updated by "Squash Git commits" add-on in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/
Translation: Frigate NVR/common

* Update translation files

Updated by "Squash Git commits" add-on in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/
Translation: Frigate NVR/common

* Update translation files

Updated by "Squash Git commits" add-on in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/
Translation: Frigate NVR/common

* Update translation files

Updated by "Squash Git commits" add-on in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/
Translation: Frigate NVR/common

* Update translation files

Updated by "Squash Git commits" add-on in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/
Translation: Frigate NVR/common

* Update translation files

Updated by "Squash Git commits" add-on in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/
Translation: Frigate NVR/common

---------

Co-authored-by: Eduard Frigola <eduardfrigola@yahoo.com>
Co-authored-by: Lâm Lê <silamle6@gmail.com>
2025-06-17 19:40:27 -05:00
Nicolas Mowen
02f75d3b1f Fixes (#18751)
* Catch intel GPU stats decode error

* Add Vietnamese

---------

Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com>
2025-06-17 14:11:19 -05:00
Nicolas Mowen
c935a76a45 Use default ffmpeg to export webp image (#18740) 2025-06-16 11:41:01 -06:00
Josh Hawkins
d727adddde Improve frame cache debugging (#18741) 2025-06-16 08:29:54 -06:00
Nicolas Mowen
2d586eeeb7 Cleanup (#18705) 2025-06-13 07:55:08 -06:00
Josh Hawkins
25cc2f31d4 Debug frame cache (#18697) 2025-06-12 13:39:06 -06:00
Josh Hawkins
4a21b2f16d Fixes (#18625)
* Indicate disabling a camera and alerts/detections is temporary

* generalize gasket driver docs

* improve face rec faq

* Update intel hardware recommendations

* Update hardware acceleration

* Add Hebrew and Catalan

---------

Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
2025-06-11 12:08:46 -06:00
Nicolas Mowen
99e7533de2 add docs for troubleshooting GPUs (#18644)
* add docs for troubleshooting GPUs

* Fix error when blur is not enabled

* Cleanup
2025-06-09 12:19:56 -06:00
TheQuantumPhysicist
03768e0050 Docs - Snap-Sync extension (#18626)
* Snap-sync docs

* Grammar fix
2025-06-08 07:46:36 -06:00
Josh Hawkins
ed43df9c13 Fixes (#18552)
* Ensure config editor recalculates layout on error

* ensure empty lists are returned when lpr recognition model fails

* Add docs section for session_length

* clarify

Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com>

* clarify

Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com>

* Catch missing file

* Improve graph axis colors

* Ensure playback rate controls are portaled to the video container in history view

On larger tablets in landscape view, the playback rate dropdown disappeared underneath the bottom bar. This small change ensures we use the correct container on the DropdownMenuContent so that the div is portaled correctly. The VideoControls are also used in motion review which does not pass in a container ref, so we can just fall back to the existing controlsContainer ref when it's undefined.

---------

Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
2025-06-04 20:48:26 -05:00
mpeter50
460e291bf1 Update pwa.md (#18568)
add installation instructions for Firefox for Android
2025-06-04 14:32:25 -06:00
Josh Hawkins
dba9206898 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>
2025-06-03 06:33:32 -06:00
Marc Altmann
af5a9e7634 Update FFmpeg for Rockchip releases (#18535)
* Update FFmpeg for Rockchip releases

* Update FFmpeg for Rockchip
2025-06-03 05:33:54 -06:00
Marc Altmann
afaac33c60 Update OS recommendation for Rockchip boards (#18510) 2025-06-01 06:43:45 -06:00
Hosted Weblate
f141b585bc Translated using Weblate (Cantonese (Traditional Han script))
Currently translated at 100.0% (352 of 352 strings)

Translated using Weblate (Cantonese (Traditional Han script))

Currently translated at 100.0% (114 of 114 strings)

Translated using Weblate (Cantonese (Traditional Han script))

Currently translated at 100.0% (352 of 352 strings)

Translated using Weblate (Cantonese (Traditional Han script))

Currently translated at 100.0% (66 of 66 strings)

Translated using Weblate (Cantonese (Traditional Han script))

Currently translated at 100.0% (62 of 62 strings)

Translated using Weblate (Cantonese (Traditional Han script))

Currently translated at 100.0% (46 of 46 strings)

Translated using Weblate (Cantonese (Traditional Han script))

Currently translated at 100.0% (8 of 8 strings)

Translated using Weblate (Cantonese (Traditional Han script))

Currently translated at 100.0% (115 of 115 strings)

Translated using Weblate (Cantonese (Traditional Han script))

Currently translated at 100.0% (182 of 182 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: beginner2047 <leoywng44@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/yue_Hant/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-camera/yue_Hant/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-filter/yue_Hant/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-configeditor/yue_Hant/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/yue_Hant/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/yue_Hant/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/yue_Hant/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/yue_Hant/
Translation: Frigate NVR/common
Translation: Frigate NVR/components-camera
Translation: Frigate NVR/components-filter
Translation: Frigate NVR/views-configeditor
Translation: Frigate NVR/views-explore
Translation: Frigate NVR/views-facelibrary
Translation: Frigate NVR/views-settings
Translation: Frigate NVR/views-system
2025-05-30 21:34:51 -06:00
Hosted Weblate
9de7f80727 Translated using Weblate (Norwegian Bokmål)
Currently translated at 100.0% (80 of 80 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 100.0% (62 of 62 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 100.0% (115 of 115 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 100.0% (50 of 50 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 100.0% (46 of 46 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 100.0% (352 of 352 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 100.0% (352 of 352 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 100.0% (352 of 352 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 100.0% (182 of 182 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 100.0% (114 of 114 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 100.0% (115 of 115 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 100.0% (8 of 8 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 100.0% (46 of 46 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 100.0% (352 of 352 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 100.0% (181 of 181 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 100.0% (62 of 62 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 100.0% (342 of 342 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 100.0% (113 of 113 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 100.0% (7 of 7 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 100.0% (340 of 340 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 100.0% (61 of 61 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 100.0% (113 of 113 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 100.0% (66 of 66 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 100.0% (50 of 50 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: OverTheHillsAndFarAway <prosjektx@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/nb_NO/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-camera/nb_NO/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/nb_NO/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-filter/nb_NO/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-configeditor/nb_NO/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/nb_NO/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/nb_NO/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-live/nb_NO/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/nb_NO/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/nb_NO/
Translation: Frigate NVR/common
Translation: Frigate NVR/components-camera
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/components-filter
Translation: Frigate NVR/views-configeditor
Translation: Frigate NVR/views-explore
Translation: Frigate NVR/views-facelibrary
Translation: Frigate NVR/views-live
Translation: Frigate NVR/views-settings
Translation: Frigate NVR/views-system
2025-05-30 21:34:51 -06:00
Hosted Weblate
2101b1f91d Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (352 of 352 strings)

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 100.0% (48 of 48 strings)

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 100.0% (115 of 115 strings)

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 100.0% (50 of 50 strings)

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 100.0% (46 of 46 strings)

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 100.0% (114 of 114 strings)

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 100.0% (352 of 352 strings)

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 100.0% (62 of 62 strings)

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 100.0% (115 of 115 strings)

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 100.0% (24 of 24 strings)

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 100.0% (8 of 8 strings)

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 100.0% (66 of 66 strings)

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 100.0% (50 of 50 strings)

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 100.0% (46 of 46 strings)

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 100.0% (182 of 182 strings)

Co-authored-by: GuoQing Liu <842607283@qq.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/zh_Hans/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-camera/zh_Hans/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/zh_Hans/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-filter/zh_Hans/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-configeditor/zh_Hans/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-events/zh_Hans/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/zh_Hans/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/zh_Hans/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-search/zh_Hans/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/zh_Hans/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/zh_Hans/
Translation: Frigate NVR/common
Translation: Frigate NVR/components-camera
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/components-filter
Translation: Frigate NVR/views-configeditor
Translation: Frigate NVR/views-events
Translation: Frigate NVR/views-explore
Translation: Frigate NVR/views-facelibrary
Translation: Frigate NVR/views-search
Translation: Frigate NVR/views-settings
Translation: Frigate NVR/views-system
2025-05-30 21:34:51 -06:00
Hosted Weblate
2b5a30e23b Translated using Weblate (Urdu)
Currently translated at 6.1% (7 of 114 strings)

Translated using Weblate (Urdu)

Currently translated at 1.9% (7 of 352 strings)

Translated using Weblate (Urdu)

Currently translated at 14.5% (7 of 48 strings)

Translated using Weblate (Urdu)

Currently translated at 100.0% (6 of 6 strings)

Translated using Weblate (Urdu)

Currently translated at 8.7% (7 of 80 strings)

Translated using Weblate (Urdu)

Currently translated at 11.2% (7 of 62 strings)

Translated using Weblate (Urdu)

Currently translated at 6.0% (7 of 115 strings)

Translated using Weblate (Urdu)

Currently translated at 28.0% (7 of 25 strings)

Translated using Weblate (Urdu)

Currently translated at 15.2% (7 of 46 strings)

Translated using Weblate (Urdu)

Currently translated at 5.9% (7 of 118 strings)

Translated using Weblate (Urdu)

Currently translated at 77.7% (7 of 9 strings)

Translated using Weblate (Urdu)

Currently translated at 100.0% (2 of 2 strings)

Translated using Weblate (Urdu)

Currently translated at 100.0% (2 of 2 strings)

Translated using Weblate (Urdu)

Currently translated at 33.3% (8 of 24 strings)

Translated using Weblate (Urdu)

Currently translated at 77.7% (7 of 9 strings)

Translated using Weblate (Urdu)

Currently translated at 100.0% (8 of 8 strings)

Translated using Weblate (Urdu)

Currently translated at 12.1% (8 of 66 strings)

Translated using Weblate (Urdu)

Currently translated at 16.0% (8 of 50 strings)

Translated using Weblate (Urdu)

Currently translated at 16.4% (30 of 182 strings)

Translated using Weblate (Urdu)

Currently translated at 16.4% (30 of 182 strings)

Translated using Weblate (Urdu)

Currently translated at 8.4% (36 of 427 strings)

Translated using Weblate (Urdu)

Currently translated at 8.4% (36 of 427 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Ryan Alvi <ryanalvi2010@gmail.com>
Co-authored-by: Uzair Ali <uzairali001@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/audio/ur/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/ur/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-auth/ur/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-camera/ur/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/ur/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-filter/ur/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-icons/ur/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-input/ur/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-player/ur/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/objects/ur/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-configeditor/ur/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-events/ur/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/ur/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-exports/ur/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/ur/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-live/ur/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-recording/ur/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-search/ur/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/ur/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/ur/
Translation: Frigate NVR/audio
Translation: Frigate NVR/common
Translation: Frigate NVR/components-auth
Translation: Frigate NVR/components-camera
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/components-filter
Translation: Frigate NVR/components-icons
Translation: Frigate NVR/components-input
Translation: Frigate NVR/components-player
Translation: Frigate NVR/objects
Translation: Frigate NVR/views-configeditor
Translation: Frigate NVR/views-events
Translation: Frigate NVR/views-explore
Translation: Frigate NVR/views-exports
Translation: Frigate NVR/views-facelibrary
Translation: Frigate NVR/views-live
Translation: Frigate NVR/views-recording
Translation: Frigate NVR/views-search
Translation: Frigate NVR/views-settings
Translation: Frigate NVR/views-system
2025-05-30 21:34:51 -06:00
Hosted Weblate
dd6114586c Translated using Weblate (Slovenian)
Currently translated at 2.5% (9 of 352 strings)

Translated using Weblate (Slovenian)

Currently translated at 100.0% (48 of 48 strings)

Translated using Weblate (Slovenian)

Currently translated at 16.1% (10 of 62 strings)

Translated using Weblate (Slovenian)

Currently translated at 18.0% (9 of 50 strings)

Translated using Weblate (Slovenian)

Currently translated at 8.2% (15 of 182 strings)

Translated using Weblate (Slovenian)

Currently translated at 5.2% (6 of 114 strings)

Translated using Weblate (Slovenian)

Currently translated at 1.7% (6 of 352 strings)

Translated using Weblate (Slovenian)

Currently translated at 14.5% (7 of 48 strings)

Translated using Weblate (Slovenian)

Currently translated at 100.0% (6 of 6 strings)

Translated using Weblate (Slovenian)

Currently translated at 8.7% (7 of 80 strings)

Translated using Weblate (Slovenian)

Currently translated at 9.6% (6 of 62 strings)

Translated using Weblate (Slovenian)

Currently translated at 100.0% (9 of 9 strings)

Translated using Weblate (Slovenian)

Currently translated at 6.9% (8 of 115 strings)

Translated using Weblate (Slovenian)

Currently translated at 100.0% (8 of 8 strings)

Translated using Weblate (Slovenian)

Currently translated at 100.0% (25 of 25 strings)

Translated using Weblate (Slovenian)

Currently translated at 13.6% (9 of 66 strings)

Translated using Weblate (Slovenian)

Currently translated at 16.0% (8 of 50 strings)

Translated using Weblate (Slovenian)

Currently translated at 100.0% (46 of 46 strings)

Translated using Weblate (Slovenian)

Currently translated at 100.0% (9 of 9 strings)

Translated using Weblate (Slovenian)

Currently translated at 100.0% (118 of 118 strings)

Translated using Weblate (Slovenian)

Currently translated at 4.3% (8 of 182 strings)

Translated using Weblate (Slovenian)

Currently translated at 2.6% (3 of 114 strings)

Translated using Weblate (Slovenian)

Currently translated at 0.8% (3 of 352 strings)

Translated using Weblate (Slovenian)

Currently translated at 8.3% (4 of 48 strings)

Translated using Weblate (Slovenian)

Currently translated at 66.6% (4 of 6 strings)

Translated using Weblate (Slovenian)

Currently translated at 5.0% (4 of 80 strings)

Translated using Weblate (Slovenian)

Currently translated at 6.4% (4 of 62 strings)

Translated using Weblate (Slovenian)

Currently translated at 44.4% (4 of 9 strings)

Translated using Weblate (Slovenian)

Currently translated at 3.4% (4 of 115 strings)

Translated using Weblate (Slovenian)

Currently translated at 20.0% (5 of 25 strings)

Translated using Weblate (Slovenian)

Currently translated at 100.0% (2 of 2 strings)

Translated using Weblate (Slovenian)

Currently translated at 100.0% (2 of 2 strings)

Translated using Weblate (Slovenian)

Currently translated at 7.5% (5 of 66 strings)

Translated using Weblate (Slovenian)

Currently translated at 10.0% (5 of 50 strings)

Translated using Weblate (Slovenian)

Currently translated at 10.8% (5 of 46 strings)

Translated using Weblate (Slovenian)

Currently translated at 55.5% (5 of 9 strings)

Translated using Weblate (Slovenian)

Currently translated at 2.7% (5 of 182 strings)

Translated using Weblate (Slovenian)

Currently translated at 12.8% (55 of 427 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Nik Grebovšek <nikigre@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/audio/sl/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/sl/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-auth/sl/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-camera/sl/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/sl/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-filter/sl/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-icons/sl/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-input/sl/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-player/sl/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/objects/sl/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-configeditor/sl/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/sl/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-exports/sl/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/sl/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-live/sl/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-recording/sl/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-search/sl/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/sl/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/sl/
Translation: Frigate NVR/audio
Translation: Frigate NVR/common
Translation: Frigate NVR/components-auth
Translation: Frigate NVR/components-camera
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/components-filter
Translation: Frigate NVR/components-icons
Translation: Frigate NVR/components-input
Translation: Frigate NVR/components-player
Translation: Frigate NVR/objects
Translation: Frigate NVR/views-configeditor
Translation: Frigate NVR/views-explore
Translation: Frigate NVR/views-exports
Translation: Frigate NVR/views-facelibrary
Translation: Frigate NVR/views-live
Translation: Frigate NVR/views-recording
Translation: Frigate NVR/views-search
Translation: Frigate NVR/views-settings
Translation: Frigate NVR/views-system
2025-05-30 21:34:51 -06:00
Hosted Weblate
d508a8b5fe Translated using Weblate (Finnish)
Currently translated at 3.5% (4 of 114 strings)

Translated using Weblate (Finnish)

Currently translated at 2.0% (1 of 48 strings)

Translated using Weblate (Finnish)

Currently translated at 1.6% (1 of 62 strings)

Translated using Weblate (Finnish)

Currently translated at 22.2% (2 of 9 strings)

Translated using Weblate (Finnish)

Currently translated at 0.8% (1 of 115 strings)

Translated using Weblate (Finnish)

Currently translated at 4.1% (1 of 24 strings)

Translated using Weblate (Finnish)

Currently translated at 12.5% (1 of 8 strings)

Translated using Weblate (Finnish)

Currently translated at 12.0% (3 of 25 strings)

Translated using Weblate (Finnish)

Currently translated at 50.0% (1 of 2 strings)

Translated using Weblate (Finnish)

Currently translated at 50.0% (1 of 2 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Sampo Koskenohi <sampo.koskenohi@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-icons/fi/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-input/fi/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-player/fi/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-configeditor/fi/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-events/fi/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/fi/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-exports/fi/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/fi/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-search/fi/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/fi/
Translation: Frigate NVR/components-icons
Translation: Frigate NVR/components-input
Translation: Frigate NVR/components-player
Translation: Frigate NVR/views-configeditor
Translation: Frigate NVR/views-events
Translation: Frigate NVR/views-explore
Translation: Frigate NVR/views-exports
Translation: Frigate NVR/views-facelibrary
Translation: Frigate NVR/views-search
Translation: Frigate NVR/views-system
2025-05-30 21:34:51 -06:00
Hosted Weblate
feb40e9d05 Translated using Weblate (Persian)
Currently translated at 3.5% (15 of 427 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: kayvan Azarbarzin <kayvan.azarbarzin@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/audio/fa/
Translation: Frigate NVR/audio
2025-05-30 21:34:51 -06:00
Hosted Weblate
2548af13b9 Translated using Weblate (Swedish)
Currently translated at 12.7% (45 of 352 strings)

Translated using Weblate (Swedish)

Currently translated at 37.4% (160 of 427 strings)

Translated using Weblate (Swedish)

Currently translated at 29.0% (18 of 62 strings)

Translated using Weblate (Swedish)

Currently translated at 6.9% (8 of 115 strings)

Translated using Weblate (Swedish)

Currently translated at 100.0% (24 of 24 strings)

Translated using Weblate (Swedish)

Currently translated at 100.0% (8 of 8 strings)

Translated using Weblate (Swedish)

Currently translated at 100.0% (48 of 48 strings)

Translated using Weblate (Swedish)

Currently translated at 100.0% (80 of 80 strings)

Translated using Weblate (Swedish)

Currently translated at 27.4% (17 of 62 strings)

Translated using Weblate (Swedish)

Currently translated at 100.0% (25 of 25 strings)

Translated using Weblate (Swedish)

Currently translated at 100.0% (46 of 46 strings)

Translated using Weblate (Swedish)

Currently translated at 100.0% (118 of 118 strings)

Translated using Weblate (Swedish)

Currently translated at 100.0% (182 of 182 strings)

Translated using Weblate (Swedish)

Currently translated at 37.4% (160 of 427 strings)

Translated using Weblate (Swedish)

Currently translated at 37.4% (160 of 427 strings)

Translated using Weblate (Swedish)

Currently translated at 4.4% (5 of 113 strings)

Translated using Weblate (Swedish)

Currently translated at 1.7% (6 of 340 strings)

Translated using Weblate (Swedish)

Currently translated at 28.7% (23 of 80 strings)

Translated using Weblate (Swedish)

Currently translated at 43.9% (29 of 66 strings)

Translated using Weblate (Swedish)

Currently translated at 13.9% (6 of 43 strings)

Translated using Weblate (Swedish)

Currently translated at 34.1% (146 of 427 strings)

Co-authored-by: Fredrik B <fredrik@brannvall.nu>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Tobias Hasson <tobbe@hansson.me>
Co-authored-by: TubalQ <TubalQayinn@protonmail.com>
Co-authored-by: jsm198 <jsm.persson@gmail.com>
Co-authored-by: pierrebengtsson <pierre.bengtsson@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/audio/sv/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/sv/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-camera/sv/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-filter/sv/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-player/sv/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/objects/sv/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-configeditor/sv/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-events/sv/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/sv/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/sv/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-live/sv/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-search/sv/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/sv/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/sv/
Translation: Frigate NVR/audio
Translation: Frigate NVR/common
Translation: Frigate NVR/components-camera
Translation: Frigate NVR/components-filter
Translation: Frigate NVR/components-player
Translation: Frigate NVR/objects
Translation: Frigate NVR/views-configeditor
Translation: Frigate NVR/views-events
Translation: Frigate NVR/views-explore
Translation: Frigate NVR/views-facelibrary
Translation: Frigate NVR/views-live
Translation: Frigate NVR/views-search
Translation: Frigate NVR/views-settings
Translation: Frigate NVR/views-system
2025-05-30 21:34:51 -06:00
Hosted Weblate
547c61f54c Translated using Weblate (French)
Currently translated at 100.0% (114 of 114 strings)

Translated using Weblate (French)

Currently translated at 100.0% (352 of 352 strings)

Translated using Weblate (French)

Currently translated at 100.0% (48 of 48 strings)

Translated using Weblate (French)

Currently translated at 100.0% (62 of 62 strings)

Translated using Weblate (French)

Currently translated at 100.0% (115 of 115 strings)

Translated using Weblate (French)

Currently translated at 100.0% (66 of 66 strings)

Translated using Weblate (French)

Currently translated at 100.0% (50 of 50 strings)

Translated using Weblate (French)

Currently translated at 100.0% (352 of 352 strings)

Translated using Weblate (French)

Currently translated at 100.0% (62 of 62 strings)

Translated using Weblate (French)

Currently translated at 100.0% (182 of 182 strings)

Translated using Weblate (French)

Currently translated at 100.0% (352 of 352 strings)

Translated using Weblate (French)

Currently translated at 100.0% (114 of 114 strings)

Translated using Weblate (French)

Currently translated at 98.8% (348 of 352 strings)

Translated using Weblate (French)

Currently translated at 100.0% (115 of 115 strings)

Translated using Weblate (French)

Currently translated at 100.0% (8 of 8 strings)

Translated using Weblate (French)

Currently translated at 100.0% (46 of 46 strings)

Translated using Weblate (French)

Currently translated at 100.0% (181 of 181 strings)

Translated using Weblate (French)

Currently translated at 100.0% (342 of 342 strings)

Translated using Weblate (French)

Currently translated at 100.0% (62 of 62 strings)

Translated using Weblate (French)

Currently translated at 100.0% (113 of 113 strings)

Translated using Weblate (French)

Currently translated at 100.0% (340 of 340 strings)

Translated using Weblate (French)

Currently translated at 100.0% (113 of 113 strings)

Translated using Weblate (French)

Currently translated at 100.0% (24 of 24 strings)

Translated using Weblate (French)

Currently translated at 100.0% (66 of 66 strings)

Translated using Weblate (French)

Currently translated at 100.0% (50 of 50 strings)

Translated using Weblate (French)

Currently translated at 100.0% (179 of 179 strings)

Translated using Weblate (French)

Currently translated at 100.0% (61 of 61 strings)

Translated using Weblate (French)

Currently translated at 100.0% (113 of 113 strings)

Translated using Weblate (French)

Currently translated at 100.0% (66 of 66 strings)

Co-authored-by: Apocoloquintose <bertrand.moreux@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/fr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-camera/fr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/fr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-filter/fr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-configeditor/fr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-events/fr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/fr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/fr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-search/fr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/fr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/fr/
Translation: Frigate NVR/common
Translation: Frigate NVR/components-camera
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/components-filter
Translation: Frigate NVR/views-configeditor
Translation: Frigate NVR/views-events
Translation: Frigate NVR/views-explore
Translation: Frigate NVR/views-facelibrary
Translation: Frigate NVR/views-search
Translation: Frigate NVR/views-settings
Translation: Frigate NVR/views-system
2025-05-30 21:34:51 -06:00
Hosted Weblate
34e92ef4ae Translated using Weblate (Spanish)
Currently translated at 100.0% (352 of 352 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (182 of 182 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (50 of 50 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (114 of 114 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (115 of 115 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (8 of 8 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (46 of 46 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (352 of 352 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (181 of 181 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (62 of 62 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (342 of 342 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (61 of 61 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (113 of 113 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (66 of 66 strings)

Co-authored-by: Eduard Frigola <eduardfrigola@yahoo.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Santiago Burgues <santibur06@gmail.com>
Co-authored-by: jjavin <javiernovoa@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/es/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-camera/es/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/es/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-filter/es/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-configeditor/es/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/es/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/es/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/es/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/es/
Translation: Frigate NVR/common
Translation: Frigate NVR/components-camera
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/components-filter
Translation: Frigate NVR/views-configeditor
Translation: Frigate NVR/views-explore
Translation: Frigate NVR/views-facelibrary
Translation: Frigate NVR/views-settings
Translation: Frigate NVR/views-system
2025-05-30 21:34:51 -06:00
Hosted Weblate
dbf440b0c7 Translated using Weblate (Dutch)
Currently translated at 100.0% (352 of 352 strings)

Translated using Weblate (Dutch)

Currently translated at 100.0% (182 of 182 strings)

Translated using Weblate (Dutch)

Currently translated at 100.0% (114 of 114 strings)

Translated using Weblate (Dutch)

Currently translated at 100.0% (352 of 352 strings)

Translated using Weblate (Dutch)

Currently translated at 100.0% (115 of 115 strings)

Translated using Weblate (Dutch)

Currently translated at 100.0% (8 of 8 strings)

Translated using Weblate (Dutch)

Currently translated at 100.0% (46 of 46 strings)

Translated using Weblate (Dutch)

Currently translated at 100.0% (181 of 181 strings)

Translated using Weblate (Dutch)

Currently translated at 100.0% (114 of 114 strings)

Translated using Weblate (Dutch)

Currently translated at 100.0% (113 of 113 strings)

Translated using Weblate (Dutch)

Currently translated at 100.0% (342 of 342 strings)

Translated using Weblate (Dutch)

Currently translated at 100.0% (62 of 62 strings)

Translated using Weblate (Dutch)

Currently translated at 100.0% (113 of 113 strings)

Translated using Weblate (Dutch)

Currently translated at 100.0% (179 of 179 strings)

Translated using Weblate (Dutch)

Currently translated at 100.0% (61 of 61 strings)

Translated using Weblate (Dutch)

Currently translated at 100.0% (61 of 61 strings)

Translated using Weblate (Dutch)

Currently translated at 100.0% (113 of 113 strings)

Translated using Weblate (Dutch)

Currently translated at 100.0% (66 of 66 strings)

Translated using Weblate (Dutch)

Currently translated at 100.0% (340 of 340 strings)

Translated using Weblate (Dutch)

Currently translated at 100.0% (60 of 60 strings)

Translated using Weblate (Dutch)

Currently translated at 100.0% (50 of 50 strings)

Translated using Weblate (Dutch)

Currently translated at 100.0% (179 of 179 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Marijn <168113859+Marijn0@users.noreply.github.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/nl/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-camera/nl/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/nl/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-filter/nl/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-configeditor/nl/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/nl/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/nl/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/nl/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/nl/
Translation: Frigate NVR/common
Translation: Frigate NVR/components-camera
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/components-filter
Translation: Frigate NVR/views-configeditor
Translation: Frigate NVR/views-explore
Translation: Frigate NVR/views-facelibrary
Translation: Frigate NVR/views-settings
Translation: Frigate NVR/views-system
2025-05-30 21:34:51 -06:00
Hosted Weblate
321fd136c0 Translated using Weblate (Arabic)
Currently translated at 13.5% (58 of 427 strings)

Co-authored-by: Hex <130850854+Hexer-7@users.noreply.github.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/audio/ar/
Translation: Frigate NVR/audio
2025-05-30 21:34:51 -06:00
Hosted Weblate
c9708102a9 Translated using Weblate (Italian)
Currently translated at 100.0% (114 of 114 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (352 of 352 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (182 of 182 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (114 of 114 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (352 of 352 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (8 of 8 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (115 of 115 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (46 of 46 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (181 of 181 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (342 of 342 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (62 of 62 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (66 of 66 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (61 of 61 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (113 of 113 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (340 of 340 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (60 of 60 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (50 of 50 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (179 of 179 strings)

Co-authored-by: Gringo <ita.translations@tiscali.it>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/it/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-camera/it/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/it/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-filter/it/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-configeditor/it/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/it/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/it/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/it/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/it/
Translation: Frigate NVR/common
Translation: Frigate NVR/components-camera
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/components-filter
Translation: Frigate NVR/views-configeditor
Translation: Frigate NVR/views-explore
Translation: Frigate NVR/views-facelibrary
Translation: Frigate NVR/views-settings
Translation: Frigate NVR/views-system
2025-05-30 21:34:51 -06:00
Hosted Weblate
85d8d7b136 Translated using Weblate (Polish)
Currently translated at 100.0% (114 of 114 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (352 of 352 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (114 of 114 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (352 of 352 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (62 of 62 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (46 of 46 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (66 of 66 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (115 of 115 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (8 of 8 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (182 of 182 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (340 of 340 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (60 of 60 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (60 of 60 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (50 of 50 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (111 of 111 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (179 of 179 strings)

Co-authored-by: Damian Radecki <damianradecki97@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Mateusz Kulis <kulis.matis@gmail.com>
Co-authored-by: Mateusz Paś <piciuok@gmail.com>
Co-authored-by: Patryk Smoliński <smolinski.patryk@mensa.org.pl>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/pl/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-camera/pl/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/pl/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-filter/pl/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-configeditor/pl/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/pl/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/pl/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/pl/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/pl/
Translation: Frigate NVR/common
Translation: Frigate NVR/components-camera
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/components-filter
Translation: Frigate NVR/views-configeditor
Translation: Frigate NVR/views-explore
Translation: Frigate NVR/views-facelibrary
Translation: Frigate NVR/views-settings
Translation: Frigate NVR/views-system
2025-05-30 21:34:51 -06:00
Hosted Weblate
b0e6a64bd0 Translated using Weblate (Hebrew)
Currently translated at 11.1% (1 of 9 strings)

Translated using Weblate (Hebrew)

Currently translated at 16.6% (1 of 6 strings)

Translated using Weblate (Hebrew)

Currently translated at 2.0% (1 of 50 strings)

Translated using Weblate (Hebrew)

Currently translated at 1.6% (1 of 62 strings)

Translated using Weblate (Hebrew)

Currently translated at 2.1% (1 of 46 strings)

Translated using Weblate (Hebrew)

Currently translated at 2.0% (1 of 48 strings)

Translated using Weblate (Hebrew)

Currently translated at 11.1% (1 of 9 strings)

Translated using Weblate (Hebrew)

Currently translated at 50.0% (1 of 2 strings)

Translated using Weblate (Hebrew)

Currently translated at 4.0% (1 of 25 strings)

Translated using Weblate (Hebrew)

Currently translated at 12.5% (1 of 8 strings)

Translated using Weblate (Hebrew)

Currently translated at 1.5% (1 of 66 strings)

Translated using Weblate (Hebrew)

Currently translated at 0.8% (1 of 115 strings)

Translated using Weblate (Hebrew)

Currently translated at 0.8% (1 of 118 strings)

Translated using Weblate (Hebrew)

Currently translated at 50.0% (1 of 2 strings)

Translated using Weblate (Hebrew)

Currently translated at 4.1% (1 of 24 strings)

Translated using Weblate (Hebrew)

Currently translated at 7.7% (33 of 427 strings)

Added translation using Weblate (Hebrew)

Added translation using Weblate (Hebrew)

Added translation using Weblate (Hebrew)

Added translation using Weblate (Hebrew)

Added translation using Weblate (Hebrew)

Added translation using Weblate (Hebrew)

Added translation using Weblate (Hebrew)

Added translation using Weblate (Hebrew)

Added translation using Weblate (Hebrew)

Added translation using Weblate (Hebrew)

Added translation using Weblate (Hebrew)

Added translation using Weblate (Hebrew)

Added translation using Weblate (Hebrew)

Added translation using Weblate (Hebrew)

Added translation using Weblate (Hebrew)

Added translation using Weblate (Hebrew)

Added translation using Weblate (Hebrew)

Added translation using Weblate (Hebrew)

Added translation using Weblate (Hebrew)

Added translation using Weblate (Hebrew)

Co-authored-by: Dennis Zheleznyak <Dennis.zheleznyak@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Languages add-on <noreply-addon-languages@weblate.org>
Co-authored-by: Yechiel Ben David <yy.bendavid@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/audio/he/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-auth/he/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-camera/he/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/he/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-filter/he/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-icons/he/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-input/he/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-player/he/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/objects/he/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-configeditor/he/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-events/he/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/he/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-exports/he/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/he/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-recording/he/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-search/he/
Translation: Frigate NVR/audio
Translation: Frigate NVR/components-auth
Translation: Frigate NVR/components-camera
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/components-filter
Translation: Frigate NVR/components-icons
Translation: Frigate NVR/components-input
Translation: Frigate NVR/components-player
Translation: Frigate NVR/objects
Translation: Frigate NVR/views-configeditor
Translation: Frigate NVR/views-events
Translation: Frigate NVR/views-explore
Translation: Frigate NVR/views-exports
Translation: Frigate NVR/views-facelibrary
Translation: Frigate NVR/views-recording
Translation: Frigate NVR/views-search
2025-05-30 21:34:51 -06:00
Hosted Weblate
2af1d22643 Translated using Weblate (Portuguese)
Currently translated at 100.0% (352 of 352 strings)

Translated using Weblate (Portuguese)

Currently translated at 100.0% (62 of 62 strings)

Translated using Weblate (Portuguese)

Currently translated at 100.0% (118 of 118 strings)

Translated using Weblate (Portuguese)

Currently translated at 100.0% (427 of 427 strings)

Translated using Weblate (Portuguese)

Currently translated at 100.0% (427 of 427 strings)

Translated using Weblate (Portuguese)

Currently translated at 100.0% (352 of 352 strings)

Translated using Weblate (Portuguese)

Currently translated at 100.0% (427 of 427 strings)

Translated using Weblate (Portuguese)

Currently translated at 100.0% (427 of 427 strings)

Translated using Weblate (Portuguese)

Currently translated at 55.6% (196 of 352 strings)

Translated using Weblate (Portuguese)

Currently translated at 69.0% (295 of 427 strings)

Translated using Weblate (Portuguese)

Currently translated at 65.6% (231 of 352 strings)

Translated using Weblate (Portuguese)

Currently translated at 100.0% (182 of 182 strings)

Translated using Weblate (Portuguese)

Currently translated at 67.6% (289 of 427 strings)

Translated using Weblate (Portuguese)

Currently translated at 100.0% (114 of 114 strings)

Translated using Weblate (Portuguese)

Currently translated at 60.5% (213 of 352 strings)

Translated using Weblate (Portuguese)

Currently translated at 100.0% (62 of 62 strings)

Translated using Weblate (Portuguese)

Currently translated at 100.0% (115 of 115 strings)

Translated using Weblate (Portuguese)

Currently translated at 99.4% (181 of 182 strings)

Translated using Weblate (Portuguese)

Currently translated at 53.1% (227 of 427 strings)

Translated using Weblate (Portuguese)

Currently translated at 91.9% (57 of 62 strings)

Translated using Weblate (Portuguese)

Currently translated at 97.3% (112 of 115 strings)

Translated using Weblate (Portuguese)

Currently translated at 100.0% (8 of 8 strings)

Translated using Weblate (Portuguese)

Currently translated at 100.0% (66 of 66 strings)

Translated using Weblate (Portuguese)

Currently translated at 100.0% (50 of 50 strings)

Translated using Weblate (Portuguese)

Currently translated at 100.0% (46 of 46 strings)

Translated using Weblate (Portuguese)

Currently translated at 46.6% (199 of 427 strings)

Translated using Weblate (Portuguese)

Currently translated at 100.0% (118 of 118 strings)

Translated using Weblate (Portuguese)

Currently translated at 46.3% (198 of 427 strings)

Co-authored-by: Daniel Barradas <daniel.barradas@gmail.com>
Co-authored-by: Filipe Ferreira <filipeferreira1705@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: P1LH4 <joao.calby@gmail.com>
Co-authored-by: danielsaul@msn.com <danielsaul@msn.com>
Co-authored-by: lbiscuola <lbiscuola@gmail.com>
Co-authored-by: piscinas <nuno.piscinas@me.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/audio/pt/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/pt/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-camera/pt/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/pt/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-filter/pt/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/objects/pt/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-configeditor/pt/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/pt/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/pt/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/pt/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/pt/
Translation: Frigate NVR/audio
Translation: Frigate NVR/common
Translation: Frigate NVR/components-camera
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/components-filter
Translation: Frigate NVR/objects
Translation: Frigate NVR/views-configeditor
Translation: Frigate NVR/views-explore
Translation: Frigate NVR/views-facelibrary
Translation: Frigate NVR/views-settings
Translation: Frigate NVR/views-system
2025-05-30 21:34:51 -06:00
Hosted Weblate
c026060ff3 Translated using Weblate (Czech)
Currently translated at 100.0% (340 of 340 strings)

Translated using Weblate (Czech)

Currently translated at 74.7% (254 of 340 strings)

Translated using Weblate (Czech)

Currently translated at 58.8% (200 of 340 strings)

Translated using Weblate (Czech)

Currently translated at 49.4% (168 of 340 strings)

Translated using Weblate (Czech)

Currently translated at 100.0% (62 of 62 strings)

Translated using Weblate (Czech)

Currently translated at 100.0% (24 of 24 strings)

Translated using Weblate (Czech)

Currently translated at 100.0% (427 of 427 strings)

Translated using Weblate (Czech)

Currently translated at 100.0% (113 of 113 strings)

Translated using Weblate (Czech)

Currently translated at 32.3% (110 of 340 strings)

Translated using Weblate (Czech)

Currently translated at 100.0% (48 of 48 strings)

Translated using Weblate (Czech)

Currently translated at 100.0% (80 of 80 strings)

Translated using Weblate (Czech)

Currently translated at 100.0% (113 of 113 strings)

Translated using Weblate (Czech)

Currently translated at 100.0% (66 of 66 strings)

Translated using Weblate (Czech)

Currently translated at 100.0% (50 of 50 strings)

Translated using Weblate (Czech)

Currently translated at 100.0% (43 of 43 strings)

Translated using Weblate (Czech)

Currently translated at 100.0% (179 of 179 strings)

Translated using Weblate (Czech)

Currently translated at 100.0% (179 of 179 strings)

Translated using Weblate (Czech)

Currently translated at 34.5% (39 of 113 strings)

Translated using Weblate (Czech)

Currently translated at 1.1% (4 of 340 strings)

Translated using Weblate (Czech)

Currently translated at 5.0% (4 of 80 strings)

Translated using Weblate (Czech)

Currently translated at 100.0% (61 of 61 strings)

Translated using Weblate (Czech)

Currently translated at 4.4% (5 of 113 strings)

Translated using Weblate (Czech)

Currently translated at 6.0% (4 of 66 strings)

Translated using Weblate (Czech)

Currently translated at 8.0% (4 of 50 strings)

Translated using Weblate (Czech)

Currently translated at 100.0% (179 of 179 strings)

Translated using Weblate (Czech)

Currently translated at 100.0% (427 of 427 strings)

Translated using Weblate (Czech)

Currently translated at 100.0% (427 of 427 strings)

Translated using Weblate (Czech)

Currently translated at 96.0% (410 of 427 strings)

Translated using Weblate (Czech)

Currently translated at 100.0% (118 of 118 strings)

Translated using Weblate (Czech)

Currently translated at 95.7% (409 of 427 strings)

Translated using Weblate (Czech)

Currently translated at 31.8% (36 of 113 strings)

Translated using Weblate (Czech)

Currently translated at 0.2% (1 of 340 strings)

Translated using Weblate (Czech)

Currently translated at 29.1% (14 of 48 strings)

Translated using Weblate (Czech)

Currently translated at 1.2% (1 of 80 strings)

Translated using Weblate (Czech)

Currently translated at 59.0% (36 of 61 strings)

Translated using Weblate (Czech)

Currently translated at 1.7% (2 of 113 strings)

Translated using Weblate (Czech)

Currently translated at 100.0% (24 of 24 strings)

Translated using Weblate (Czech)

Currently translated at 3.0% (2 of 66 strings)

Translated using Weblate (Czech)

Currently translated at 4.0% (2 of 50 strings)

Translated using Weblate (Czech)

Currently translated at 58.1% (25 of 43 strings)

Translated using Weblate (Czech)

Currently translated at 35.1% (63 of 179 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Jakub <kincl.kuba@seznam.cz>
Co-authored-by: Martin Brož <code@martin-broz.cz>
Co-authored-by: Michal Basler <minecz.michal.basler@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/audio/cs/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/cs/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-camera/cs/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/cs/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-filter/cs/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/objects/cs/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-events/cs/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/cs/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/cs/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-live/cs/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-search/cs/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/cs/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/cs/
Translation: Frigate NVR/audio
Translation: Frigate NVR/common
Translation: Frigate NVR/components-camera
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/components-filter
Translation: Frigate NVR/objects
Translation: Frigate NVR/views-events
Translation: Frigate NVR/views-explore
Translation: Frigate NVR/views-facelibrary
Translation: Frigate NVR/views-live
Translation: Frigate NVR/views-search
Translation: Frigate NVR/views-settings
Translation: Frigate NVR/views-system
2025-05-30 21:34:51 -06:00
Hosted Weblate
8a117de87e Translated using Weblate (Catalan)
Currently translated at 78.2% (334 of 427 strings)

Translated using Weblate (Catalan)

Currently translated at 22.8% (26 of 114 strings)

Translated using Weblate (Catalan)

Currently translated at 7.1% (25 of 352 strings)

Translated using Weblate (Catalan)

Currently translated at 56.2% (27 of 48 strings)

Translated using Weblate (Catalan)

Currently translated at 100.0% (6 of 6 strings)

Translated using Weblate (Catalan)

Currently translated at 33.7% (27 of 80 strings)

Translated using Weblate (Catalan)

Currently translated at 43.5% (27 of 62 strings)

Translated using Weblate (Catalan)

Currently translated at 100.0% (9 of 9 strings)

Translated using Weblate (Catalan)

Currently translated at 24.3% (28 of 115 strings)

Translated using Weblate (Catalan)

Currently translated at 100.0% (24 of 24 strings)

Translated using Weblate (Catalan)

Currently translated at 100.0% (8 of 8 strings)

Translated using Weblate (Catalan)

Currently translated at 100.0% (25 of 25 strings)

Translated using Weblate (Catalan)

Currently translated at 100.0% (2 of 2 strings)

Translated using Weblate (Catalan)

Currently translated at 100.0% (2 of 2 strings)

Translated using Weblate (Catalan)

Currently translated at 97.8% (45 of 46 strings)

Translated using Weblate (Catalan)

Currently translated at 18.5% (79 of 427 strings)

Translated using Weblate (Catalan)

Currently translated at 100.0% (66 of 66 strings)

Translated using Weblate (Catalan)

Currently translated at 16.6% (1 of 6 strings)

Translated using Weblate (Catalan)

Currently translated at 40.9% (27 of 66 strings)

Translated using Weblate (Catalan)

Currently translated at 100.0% (50 of 50 strings)

Translated using Weblate (Catalan)

Currently translated at 78.0% (39 of 50 strings)

Translated using Weblate (Catalan)

Currently translated at 100.0% (118 of 118 strings)

Translated using Weblate (Catalan)

Currently translated at 1.6% (1 of 62 strings)

Translated using Weblate (Catalan)

Currently translated at 100.0% (43 of 43 strings)

Translated using Weblate (Catalan)

Currently translated at 100.0% (9 of 9 strings)

Translated using Weblate (Catalan)

Currently translated at 84.7% (100 of 118 strings)

Translated using Weblate (Catalan)

Currently translated at 100.0% (179 of 179 strings)

Translated using Weblate (Catalan)

Currently translated at 11.7% (50 of 427 strings)

Co-authored-by: Eduard Frigola <eduardfrigola@yahoo.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/audio/ca/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/ca/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-auth/ca/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-camera/ca/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/ca/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-filter/ca/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-icons/ca/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-input/ca/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-player/ca/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/objects/ca/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-configeditor/ca/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-events/ca/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/ca/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-exports/ca/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/ca/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-live/ca/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-recording/ca/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-search/ca/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/ca/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/ca/
Translation: Frigate NVR/audio
Translation: Frigate NVR/common
Translation: Frigate NVR/components-auth
Translation: Frigate NVR/components-camera
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/components-filter
Translation: Frigate NVR/components-icons
Translation: Frigate NVR/components-input
Translation: Frigate NVR/components-player
Translation: Frigate NVR/objects
Translation: Frigate NVR/views-configeditor
Translation: Frigate NVR/views-events
Translation: Frigate NVR/views-explore
Translation: Frigate NVR/views-exports
Translation: Frigate NVR/views-facelibrary
Translation: Frigate NVR/views-live
Translation: Frigate NVR/views-recording
Translation: Frigate NVR/views-search
Translation: Frigate NVR/views-settings
Translation: Frigate NVR/views-system
2025-05-30 21:34:51 -06:00
Hosted Weblate
a43f87c477 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (182 of 182 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (114 of 114 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (352 of 352 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (48 of 48 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (80 of 80 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (62 of 62 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (9 of 9 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (115 of 115 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (24 of 24 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (8 of 8 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (118 of 118 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (182 of 182 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (352 of 352 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (182 of 182 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (114 of 114 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (352 of 352 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (427 of 427 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (114 of 114 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (352 of 352 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (115 of 115 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (8 of 8 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (46 of 46 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (181 of 181 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (342 of 342 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (62 of 62 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (61 of 61 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (113 of 113 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (66 of 66 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Максим Горпиніч <maksimgorpinic4@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/audio/uk/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/uk/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-camera/uk/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-filter/uk/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/objects/uk/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-configeditor/uk/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-events/uk/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/uk/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-exports/uk/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/uk/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-live/uk/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-search/uk/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/uk/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/uk/
Translation: Frigate NVR/audio
Translation: Frigate NVR/common
Translation: Frigate NVR/components-camera
Translation: Frigate NVR/components-filter
Translation: Frigate NVR/objects
Translation: Frigate NVR/views-configeditor
Translation: Frigate NVR/views-events
Translation: Frigate NVR/views-explore
Translation: Frigate NVR/views-exports
Translation: Frigate NVR/views-facelibrary
Translation: Frigate NVR/views-live
Translation: Frigate NVR/views-search
Translation: Frigate NVR/views-settings
Translation: Frigate NVR/views-system
2025-05-30 21:34:51 -06:00
Hosted Weblate
15c7a4074b Translated using Weblate (Romanian)
Currently translated at 26.5% (30 of 113 strings)

Translated using Weblate (Romanian)

Currently translated at 1.4% (5 of 340 strings)

Translated using Weblate (Romanian)

Currently translated at 10.4% (5 of 48 strings)

Translated using Weblate (Romanian)

Currently translated at 6.2% (5 of 80 strings)

Translated using Weblate (Romanian)

Currently translated at 87.5% (21 of 24 strings)

Translated using Weblate (Romanian)

Currently translated at 100.0% (118 of 118 strings)

Translated using Weblate (Romanian)

Currently translated at 2.7% (5 of 179 strings)

Translated using Weblate (Romanian)

Currently translated at 69.3% (296 of 427 strings)

Co-authored-by: Bogdan Turlea <bogdan.a.turlea@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/audio/ro/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/ro/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/objects/ro/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-events/ro/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-live/ro/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-search/ro/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/ro/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/ro/
Translation: Frigate NVR/audio
Translation: Frigate NVR/common
Translation: Frigate NVR/objects
Translation: Frigate NVR/views-events
Translation: Frigate NVR/views-live
Translation: Frigate NVR/views-search
Translation: Frigate NVR/views-settings
Translation: Frigate NVR/views-system
2025-05-30 21:34:51 -06:00
Hosted Weblate
ca650a29a1 Translated using Weblate (Russian)
Currently translated at 100.0% (352 of 352 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (114 of 114 strings)

Translated using Weblate (Russian)

Currently translated at 90.0% (317 of 352 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (182 of 182 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (114 of 114 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (352 of 352 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (115 of 115 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (46 of 46 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (181 of 181 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (8 of 8 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (342 of 342 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (62 of 62 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (113 of 113 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (66 of 66 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (61 of 61 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (113 of 113 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Артём Владимиров <artyomka71@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/ru/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-camera/ru/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-filter/ru/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-configeditor/ru/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/ru/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/ru/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/ru/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/ru/
Translation: Frigate NVR/common
Translation: Frigate NVR/components-camera
Translation: Frigate NVR/components-filter
Translation: Frigate NVR/views-configeditor
Translation: Frigate NVR/views-explore
Translation: Frigate NVR/views-facelibrary
Translation: Frigate NVR/views-settings
Translation: Frigate NVR/views-system
2025-05-30 21:34:51 -06:00
Hosted Weblate
0896df6500 Translated using Weblate (German)
Currently translated at 100.0% (352 of 352 strings)

Translated using Weblate (German)

Currently translated at 100.0% (352 of 352 strings)

Translated using Weblate (German)

Currently translated at 100.0% (80 of 80 strings)

Translated using Weblate (German)

Currently translated at 100.0% (427 of 427 strings)

Translated using Weblate (German)

Currently translated at 100.0% (352 of 352 strings)

Translated using Weblate (German)

Currently translated at 100.0% (62 of 62 strings)

Translated using Weblate (German)

Currently translated at 100.0% (114 of 114 strings)

Translated using Weblate (German)

Currently translated at 100.0% (352 of 352 strings)

Translated using Weblate (German)

Currently translated at 100.0% (115 of 115 strings)

Translated using Weblate (German)

Currently translated at 100.0% (8 of 8 strings)

Translated using Weblate (German)

Currently translated at 100.0% (46 of 46 strings)

Translated using Weblate (German)

Currently translated at 100.0% (182 of 182 strings)

Translated using Weblate (German)

Currently translated at 100.0% (342 of 342 strings)

Translated using Weblate (German)

Currently translated at 100.0% (62 of 62 strings)

Translated using Weblate (German)

Currently translated at 100.0% (61 of 61 strings)

Translated using Weblate (German)

Currently translated at 100.0% (113 of 113 strings)

Translated using Weblate (German)

Currently translated at 100.0% (66 of 66 strings)

Translated using Weblate (German)

Currently translated at 100.0% (179 of 179 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Thiemo <Firewolf.3.7.1987@gmail.com>
Co-authored-by: Viktor Stier <viktor-stier@gmx.de>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/audio/de/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/de/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-camera/de/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-filter/de/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-configeditor/de/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/de/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/de/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-live/de/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/de/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/de/
Translation: Frigate NVR/audio
Translation: Frigate NVR/common
Translation: Frigate NVR/components-camera
Translation: Frigate NVR/components-filter
Translation: Frigate NVR/views-configeditor
Translation: Frigate NVR/views-explore
Translation: Frigate NVR/views-facelibrary
Translation: Frigate NVR/views-live
Translation: Frigate NVR/views-settings
Translation: Frigate NVR/views-system
2025-05-30 21:34:51 -06:00
Hosted Weblate
01998dfb70 Translated using Weblate (Thai)
Currently translated at 28.6% (101 of 352 strings)

Translated using Weblate (Thai)

Currently translated at 79.1% (38 of 48 strings)

Translated using Weblate (Thai)

Currently translated at 6.9% (8 of 115 strings)

Translated using Weblate (Thai)

Currently translated at 66.6% (44 of 66 strings)

Translated using Weblate (Thai)

Currently translated at 100.0% (46 of 46 strings)

Translated using Weblate (Thai)

Currently translated at 98.3% (116 of 118 strings)

Translated using Weblate (Thai)

Currently translated at 9.6% (11 of 114 strings)

Translated using Weblate (Thai)

Currently translated at 25.8% (91 of 352 strings)

Translated using Weblate (Thai)

Currently translated at 6.2% (3 of 48 strings)

Translated using Weblate (Thai)

Currently translated at 100.0% (6 of 6 strings)

Translated using Weblate (Thai)

Currently translated at 15.0% (12 of 80 strings)

Translated using Weblate (Thai)

Currently translated at 32.2% (20 of 62 strings)

Translated using Weblate (Thai)

Currently translated at 100.0% (9 of 9 strings)

Translated using Weblate (Thai)

Currently translated at 100.0% (24 of 24 strings)

Translated using Weblate (Thai)

Currently translated at 100.0% (8 of 8 strings)

Translated using Weblate (Thai)

Currently translated at 100.0% (25 of 25 strings)

Translated using Weblate (Thai)

Currently translated at 100.0% (2 of 2 strings)

Translated using Weblate (Thai)

Currently translated at 100.0% (2 of 2 strings)

Translated using Weblate (Thai)

Currently translated at 1.5% (1 of 66 strings)

Translated using Weblate (Thai)

Currently translated at 10.0% (5 of 50 strings)

Translated using Weblate (Thai)

Currently translated at 100.0% (9 of 9 strings)

Translated using Weblate (Thai)

Currently translated at 89.8% (106 of 118 strings)

Translated using Weblate (Thai)

Currently translated at 100.0% (182 of 182 strings)

Translated using Weblate (Thai)

Currently translated at 100.0% (427 of 427 strings)

Translated using Weblate (Thai)

Currently translated at 100.0% (181 of 181 strings)

Translated using Weblate (Thai)

Currently translated at 100.0% (427 of 427 strings)

Translated using Weblate (Thai)

Currently translated at 68.5% (124 of 181 strings)

Translated using Weblate (Thai)

Currently translated at 0.7% (3 of 427 strings)

Added translation using Weblate (Thai)

Translated using Weblate (Thai)

Currently translated at 15.4% (28 of 181 strings)

Added translation using Weblate (Thai)

Translated using Weblate (Thai)

Currently translated at 14.3% (26 of 181 strings)

Added translation using Weblate (Thai)

Translated using Weblate (Thai)

Currently translated at 13.8% (25 of 181 strings)

Added translation using Weblate (Thai)

Added translation using Weblate (Thai)

Added translation using Weblate (Thai)

Added translation using Weblate (Thai)

Translated using Weblate (Thai)

Currently translated at 13.2% (24 of 181 strings)

Added translation using Weblate (Thai)

Added translation using Weblate (Thai)

Added translation using Weblate (Thai)

Added translation using Weblate (Thai)

Translated using Weblate (Thai)

Currently translated at 12.7% (23 of 181 strings)

Added translation using Weblate (Thai)

Translated using Weblate (Thai)

Currently translated at 12.1% (22 of 181 strings)

Added translation using Weblate (Thai)

Added translation using Weblate (Thai)

Translated using Weblate (Thai)

Currently translated at 11.6% (21 of 181 strings)

Added translation using Weblate (Thai)

Update translation files

Updated by "Squash Git commits" add-on in Weblate.

Translated using Weblate (Thai)

Currently translated at 11.0% (20 of 181 strings)

Added translation using Weblate (Thai)

Translated using Weblate (Thai)

Currently translated at 8.2% (15 of 181 strings)

Added translation using Weblate (Thai)

Translated using Weblate (Thai)

Currently translated at 7.7% (14 of 181 strings)

Added translation using Weblate (Thai)

Translated using Weblate (Thai)

Currently translated at 6.6% (12 of 181 strings)

Added translation using Weblate (Thai)

Added translation using Weblate (Thai)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Languages add-on <noreply-addon-languages@weblate.org>
Co-authored-by: Phongsakorn Wisetthon <boy1556@hotmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/audio/th/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/th/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-auth/th/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-camera/th/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/th/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-filter/th/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-icons/th/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-input/th/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-player/th/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/objects/th/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-configeditor/th/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-events/th/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/th/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-exports/th/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/th/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-live/th/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-recording/th/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-search/th/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/th/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/th/
Translation: Frigate NVR/audio
Translation: Frigate NVR/common
Translation: Frigate NVR/components-auth
Translation: Frigate NVR/components-camera
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/components-filter
Translation: Frigate NVR/components-icons
Translation: Frigate NVR/components-input
Translation: Frigate NVR/components-player
Translation: Frigate NVR/objects
Translation: Frigate NVR/views-configeditor
Translation: Frigate NVR/views-events
Translation: Frigate NVR/views-explore
Translation: Frigate NVR/views-exports
Translation: Frigate NVR/views-facelibrary
Translation: Frigate NVR/views-live
Translation: Frigate NVR/views-recording
Translation: Frigate NVR/views-search
Translation: Frigate NVR/views-settings
Translation: Frigate NVR/views-system
2025-05-30 21:34:51 -06:00
Hosted Weblate
cb1cdcc814 Translated using Weblate (Turkish)
Currently translated at 100.0% (114 of 114 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (352 of 352 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (62 of 62 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (115 of 115 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (8 of 8 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (50 of 50 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (46 of 46 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (182 of 182 strings)

Translated using Weblate (Turkish)

Currently translated at 91.8% (56 of 61 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (66 of 66 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (427 of 427 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (179 of 179 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Kadir ALTIN <kadir.altin@outlook.com.tr>
Co-authored-by: pcislocked <git@pcislocked.net>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/audio/tr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/tr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-camera/tr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/tr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-filter/tr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-configeditor/tr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/tr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/tr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/tr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/tr/
Translation: Frigate NVR/audio
Translation: Frigate NVR/common
Translation: Frigate NVR/components-camera
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/components-filter
Translation: Frigate NVR/views-configeditor
Translation: Frigate NVR/views-explore
Translation: Frigate NVR/views-facelibrary
Translation: Frigate NVR/views-settings
Translation: Frigate NVR/views-system
2025-05-30 21:34:51 -06:00
Josh Hawkins
63473b0b82 Fixes (#18485) 2025-05-30 21:32:22 -06:00
Blake Blackshear
ee51326d35 refresh the plus documentation (#18462)
* refresh the plus documentation

* fix broken links
2025-05-30 06:38:25 -05:00
maksz42
2ada0d22cb Add Periscope to third party extensions (#18480) 2025-05-30 05:32:38 -06:00
Felipe Santos
81f5f362a9 Fix healthcheck on stopping (#18476) 2025-05-29 20:58:31 -06:00
Nicolas Mowen
27914fc3b8 Don't run bird classification if model is not downloaded yet (#18474) 2025-05-29 16:15:25 -05:00
Josh Hawkins
c11ca42fb5 Logging bugfix (#18465)
* use mp Manager to handle logging queues

A Python bug (https://github.com/python/cpython/issues/91555) was preventing logs from the embeddings maintainer process from printing. The bug is fixed in Python 3.14, but a viable workaround is to use the multiprocessing Manager, which better manages mp queues and causes the logging to work correctly.

* consolidate

* fix typing
2025-05-29 09:02:17 -06:00
GuoQing Liu
9b7d4d0a8f feat: document locale url (#18409)
* feat: document locale url

* fix: remove debug code

* fix readme_cn line

* feat: add menu document locale url
2025-05-28 06:10:45 -06:00
Nicolas Mowen
cbdac9ece5 Fixes (#18379)
* Don't return weighted name if it has the same number of results

* Remove link to incorrect format yolov9 models

* Fix command list from appearing when other inputs are focused

the description box in the tracked object details pane was causing the command input list to show when focused.

* clarify face docs

* Add note about python yolov9 export

* Check if hailort thread is still alive when timeout error is run into

* Reduce inference timeout

---------

Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com>
2025-05-27 10:25:34 -05:00
gardar
948b087d3c docs: firefox h.265 support (#18392) 2025-05-25 20:35:20 -06:00
Thomas A.
63f9689b0e Improve documentation for YOLO-NAS notebook (#18381)
* Add readme file for notebooks
It took me quite some time to find out this workbook opens in Google Colab, so i though it may help someone else to have this visible in the folder aswell.

* Add explicit link to Google Colab for YOLO-NAS
2025-05-24 09:42:32 -06:00
Nicolas Mowen
6969a7fd47 Cleanup builds (#18372)
* Cleanup builds

* Uninstall onnxurntime not openvino
2025-05-23 21:02:24 -05:00
Nicolas Mowen
8274b733da Fix Jetson ONNXRuntime (#18370)
* Correctly save jetson wheel

* Temp docker build
2025-05-23 15:27:37 -05:00
Josh Hawkins
858c1241db Fixes (#18354)
* Rename classification to enrichments

* Clean up config updating checks

* Add Portugese

---------

Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
2025-05-22 18:16:35 -06:00
Josh Hawkins
c16e536b46 Fixes (#18338)
* improve spacing of face selection in mobile drawer

* fix spacing

* sort face names alphabetically

* Improve face selection dialog

* Use a state to track when face image loads

The naturalWidth and naturalHeight will always be 0 until the image loads. So we use onLoad and a state to track loading and then calculate the area after it has loaded

* Verify that a camera only tracks objects that are possible to track

* Fix test

* genai docs tweak

* Disable openvino model cache

* Clenaup

* Sanitize floats for estimated speed and angle

Users can configure speed zones in such a way that velocity estimates from Norfair cause a value of inf to be stored as an estimated speed. FastAPI doesn't serialize inf as a float, so trying to return this value would result in an API error. Sanitizing the value before storing should correct this.

---------

Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
2025-05-22 09:38:14 -06:00
Josh Hawkins
49c6073de6 Add ability to specify separator used in proxy headers (#18336) 2025-05-21 06:02:13 -06:00
Luca Paolini
2a8b62acb1 Disable autoCorrect, autoCapitalize and spellCheck on username input. (#18333) 2025-05-21 06:10:13 -05:00
Josh Hawkins
37d40558b7 Fixes (#18319)
* Add Thai (still need to merge weblate)

* Apply attribute logic to all label types

* Fix area check

---------

Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
2025-05-20 16:47:05 -06:00
Josh Hawkins
afe513336c fix missing i18n keys (#18309) 2025-05-19 16:45:02 -05:00
Josh Hawkins
8a143b4284 Fixes (#18304)
* fix recordings check

* Only calculate inpoint offset for beginning of hour segment

* Cleanup

* Fix seeking

* add Czech

* explore i18n fix

---------

Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
2025-05-19 14:43:22 -06:00
Nicolas Mowen
717517aeb5 Misc fixes (#18289)
* Fix key not moved

* Account for HLS start offset when seeking and calculating update time
2025-05-18 18:23:01 -05:00
Felipe Santos
f4d5ebf4db Update s6-overlay from 3.1.5.0 to 3.2.1.0 (#18276) 2025-05-18 07:21:26 -05:00
Nicolas Mowen
b18572a3b6 Min face configuration option (#18284)
* Add option to specify minimum face attempts for an object

* Set upper bound
2025-05-18 07:20:59 -05:00
Sean Kelly
b10615aef1 Fix dead link (#18279) 2025-05-17 18:16:24 -06:00
Josh Hawkins
5d13925d2b Fixes (#18275) 2025-05-17 16:11:19 -06:00
Josh Hawkins
ebae6cb1ed Fixes (#18262)
* Don't use timezone in export dialog timestamps

Revert an unnecessary change made in https://github.com/blakeblackshear/frigate/pull/18257

* Ensure notifications register button is only disabled when both all cameras and every individual camera is disabled

* Send test notification if any cameras are enabled

* clarify docs about disabling cameras

* fix crash in autotracking zoom

* clean up

* masks and zones i18n fixes

* Check if camera is enabled in config

---------

Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
2025-05-16 16:37:25 -06:00
Josh Hawkins
2f9b373c1a Improve timezone handling (#18257)
* Ensure review activity calendar uses correct timezone

react-day-picker 9.x adds a timeZone prop and a TZDate() handler to show the calendar based on a timezone and better handle dates passed to it in timezones

* Ensure calendar range uses correct timezone

* clean up

* ensure range is timezone aware

* ensure export dates are timezone aware
2025-05-15 17:13:32 -05:00
Nicolas Mowen
f48356cbee Fixes (#18245)
* Only check if an object is stationary to avoid mqtt snapshot

* docs heading tweak

* Add more API descriptions

* Add missing lib for new rocm onnxruntime whl

* Update inference times to reflect better rocm performance

* Cleanup resetting tracked object activity

* remove print

---------

Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com>
2025-05-15 17:13:18 -05:00
Josh Hawkins
3538a1df3d Update react-day-picker to 9.x (#18247)
* update react-day-picker to 9.x

* fix shadcn calendar component

* update review activity custom component for rdp

* fix colors
2025-05-15 10:10:14 -06:00
Josh Hawkins
c15fbee537 Fixes (#18235)
* fix face library i18n

* Docs updates
2025-05-14 20:54:15 -06:00
jrhelbert
7612c3ece0 Remove hardcoded usage of /dev/dri/card0 in call to intel_gpu_top (#18236)
Not everyone is using /dev/dri/card0. I recommend switching to these more generic parameters for intel_gpu_top_command (line 307 in the 0.16.0-beta2 version of services.py):
intel_gpu_top_command += ["-d", "sriov"]
2025-05-14 20:54:06 -06:00
Nicolas Mowen
d3d05fa397 Fixes (#18220)
* Add option to not trim clip

* Improve API

* Update snapshot for new best objects

* Fix missing strings

* Convert to separate key

* Always include bounding box on snapshots

* improve autotracking relative zooming time calculation

* update proxy docs to note the need for comma separated header roles

* Add count translation

* tracked object lifecycle i18n fix

* update speed estimation docs

* clarity

* Re-initialize onvif information when toggling camera on live view

* Move time ago to card info and add face area

* Clarify face recognition docs

* Increase minimum face recognition area

* use clipFrom to in vod module endpoint to start at the correct time

* Cleanup media api

* Don't change duration

* Use search detail dialog for face library

* Move to segment based

* Cleanup

* Add back duration modification

* clean up docs

---------

Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com>
2025-05-14 16:44:06 -06:00
genevera (she/her)
77589c18f4 Update reverse_proxy.md (#17927)
* Update reverse_proxy.md

Adds a small, working, config for Caddy

* Update docs/docs/guides/reverse_proxy.md

Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>

* Update docs/docs/guides/reverse_proxy.md

Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>

---------

Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
2025-04-27 20:19:00 -06:00
Daniel Moy
6a62467998 Fix deprecated listen...http2 documentation in nginx reverse proxy (#17848)
This is deprecated:

listen 443 ssl http2;

New syntax has a separate line:

http2 on;

See e.g. https://forum.hestiacp.com/t/nginx-1-25-1-listen-http2-directive-is-deprecated/9816
2025-04-22 05:10:52 -06:00
Nicolas Mowen
6857cc2b97 Update camera recommendation (#17844) 2025-04-21 17:01:32 -05:00
Josh Hawkins
37618b0f57 fix article link (#17758) 2025-04-17 07:43:26 -06:00
Daniel Moy
e7f6e069f6 Update tls.md instructions for letsencrypt archive dir (#17747)
Current instructions are a little ambiguous about which links need to point to the underlying fqdn dir created by letsencrypt
2025-04-16 16:57:39 -06:00
Blake Blackshear
ee4767b1ce plus docs updates (#17732) 2025-04-16 05:56:00 -06:00
Josh Hawkins
6cb5cfb0c9 Fix missing space in trt model prepare script (#17661) 2025-04-11 16:23:13 -06:00
Nicolas Mowen
7cfa818e63 Update tensorrt model config to use coco-80 (#17640) 2025-04-10 17:28:57 -05:00
Blake Blackshear
0764fea159 update recommended hardware links (#17609) 2025-04-08 18:36:44 -05:00
Florian Schüller
e3ed1ab8ec Update live.md (#16989)
Fix link to 2-way audio documentation
2025-03-06 12:12:01 -07:00
Josh Hawkins
b01b1faa3f Add docs for updating to latest version (#16849)
* add docs for updating to latest version

* add db filename

* clarity

* add faq

* version number

* stop frigate first

* version number

* combine steps
2025-02-27 10:34:15 -07:00
Nicolas Mowen
efbc1f836b Update mqtt event structure (#16803) 2025-02-25 11:02:34 -06:00
Nicolas Mowen
7c33f9c579 Add link to advanced camera card in docs (#16791) 2025-02-24 17:15:10 -06:00
Josh Hawkins
a9255bddb5 fix docs ptz chart (#16786) 2025-02-24 10:59:31 -07:00
Tue Topholm
6d80a19518 Add cameras to ptz list (#16767) 2025-02-23 17:14:26 -06:00
Josh Hawkins
011a2dbfaf Docs: Clarify review labels and objects to track (#16758) 2025-02-23 06:28:03 -07:00
Vivek Gani
9a54c8ca49 Add USB Camera guidance to camera_specific.md (#16729) 2025-02-21 17:12:37 -07:00
Nicolas Mowen
cc99330063 Add more hardware stats (#16613) 2025-02-16 13:22:55 -06:00
Josh Hawkins
7e6a241e03 Bugfix: use np.copy for current frame in object processing (#16594) 2025-02-15 06:48:34 -07:00
Nicolas Mowen
2d281855fc Enable search for inkeep (#16510) 2025-02-11 17:29:48 -06:00
dansharpy
22cc698b4e Moved cmamera specific options from custom prompts to configuration section (#16421) 2025-02-09 11:43:43 -07:00
Landor
5a5a54fc66 add tip about disabling TLS to use auth with HA integration (#16413)
* add tip about disabling TLS to use auth with HA integration

* spacing

---------

Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
2025-02-09 10:04:24 -07:00
Josh Hawkins
6536368467 Add Inkeep chatbot to docs (#16405)
* Add inkeep chatbot to docs

* install inkeep to docs dir
2025-02-09 06:06:44 -07:00
Blake Blackshear
dc79af2d98 Merge pull request #13787 from blakeblackshear/dev
0.15 Release
2025-02-08 12:44:47 -06:00
809 changed files with 34232 additions and 3825 deletions

View File

@@ -109,6 +109,7 @@ imdecode
imencode
imread
imwrite
inpoint
interp
iostat
iotop
@@ -264,6 +265,7 @@ tensorrt
tflite
thresholded
timelapse
titlecase
tmpfs
tobytes
toggleable

View File

@@ -6,7 +6,7 @@ body:
value: |
Use this form to submit a reproducible bug in Frigate or Frigate's UI.
Before submitting your bug report, please [search the discussions][discussions], look at recent open and closed [pull requests][prs], read the [official Frigate documentation][docs], and read the [Frigate FAQ][faq] pinned at the Discussion page to see if your bug has already been fixed by the developers or reported by the community.
Before submitting your bug report, please ask the AI with the "Ask AI" button on the [official documentation site][ai] about your issue, [search the discussions][discussions], look at recent open and closed [pull requests][prs], read the [official Frigate documentation][docs], and read the [Frigate FAQ][faq] pinned at the Discussion page to see if your bug has already been fixed by the developers or reported by the community.
**If you are unsure if your issue is actually a bug or not, please submit a support request first.**
@@ -14,6 +14,7 @@ body:
[prs]: https://www.github.com/blakeblackshear/frigate/pulls
[docs]: https://docs.frigate.video
[faq]: https://github.com/blakeblackshear/frigate/discussions/12724
[ai]: https://docs.frigate.video
- type: checkboxes
attributes:
label: Checklist
@@ -26,6 +27,8 @@ body:
- label: I have tried a different browser to see if it is related to my browser.
required: true
- label: I have tried reproducing the issue in [incognito mode](https://www.computerworld.com/article/1719851/how-to-go-incognito-in-chrome-firefox-safari-and-edge.html) to rule out problems with any third party extensions or plugins I have installed.
- label: I have asked the AI at https://docs.frigate.video about my issue.
required: true
- type: textarea
id: description
attributes:

View File

@@ -41,6 +41,7 @@ jobs:
target: frigate
tags: ${{ steps.setup.outputs.image-name }}-amd64
cache-from: type=registry,ref=${{ steps.setup.outputs.cache-name }}-amd64
cache-to: type=registry,ref=${{ steps.setup.outputs.cache-name }}-amd64,mode=max
arm64_build:
runs-on: ubuntu-22.04-arm
name: ARM Build
@@ -161,8 +162,8 @@ jobs:
files: docker/tensorrt/trt.hcl
set: |
tensorrt.tags=${{ steps.setup.outputs.image-name }}-tensorrt
*.cache-from=type=registry,ref=${{ steps.setup.outputs.cache-name }}-amd64
*.cache-to=type=registry,ref=${{ steps.setup.outputs.cache-name }}-amd64,mode=max
*.cache-from=type=registry,ref=${{ steps.setup.outputs.cache-name }}-tensorrt
*.cache-to=type=registry,ref=${{ steps.setup.outputs.cache-name }}-tensorrt,mode=max
- name: AMD/ROCm general build
env:
AMDGPU: gfx
@@ -176,7 +177,7 @@ jobs:
set: |
rocm.tags=${{ steps.setup.outputs.image-name }}-rocm
*.cache-to=type=registry,ref=${{ steps.setup.outputs.cache-name }}-rocm,mode=max
*.cache-from=type=gha
*.cache-from=type=registry,ref=${{ steps.setup.outputs.cache-name }}-rocm
arm64_extra_builds:
runs-on: ubuntu-22.04-arm
name: ARM Extra Build

View File

@@ -1,7 +1,7 @@
default_target: local
COMMIT_HASH := $(shell git log -1 --pretty=format:"%h"|tail -1)
VERSION = 0.16.0
VERSION = 0.16.3
IMAGE_REPO ?= ghcr.io/blakeblackshear/frigate
GITHUB_REF_NAME ?= $(shell git rev-parse --abbrev-ref HEAD)
BOARDS= #Initialized empty

View File

@@ -12,7 +12,7 @@
A complete and local NVR designed for [Home Assistant](https://www.home-assistant.io) with AI object detection. Uses OpenCV and Tensorflow to perform realtime object detection locally for IP cameras.
Use of a GPU or AI accelerator such as a [Google Coral](https://coral.ai/products/) or [Hailo](https://hailo.ai/) is highly recommended. AI accelerators will outperform even the best CPUs with very little overhead.
Use of a GPU, Integrated GPU, or AI accelerator such as a [Hailo](https://hailo.ai/) is highly recommended. Dedicated hardware will outperform even the best CPUs with very little overhead.
- Tight integration with Home Assistant via a [custom component](https://github.com/blakeblackshear/frigate-hass-integration)
- Designed to minimize resource use and maximize performance by only looking for objects when and where it is necessary

View File

@@ -39,7 +39,7 @@
<img width="800" alt="实时监控面板" src="https://github.com/blakeblackshear/frigate/assets/569905/5e713cb9-9db5-41dc-947a-6937c3bc376e">
</div>
### 简单的查工作流程
### 简单的查工作流程
<div>
<img width="800" alt="简单的审查工作流程" src="https://github.com/blakeblackshear/frigate/assets/569905/6fed96e8-3b18-40e5-9ddc-31e6f3c9f2ff">
</div>
@@ -60,5 +60,11 @@
## 非官方中文讨论社区
欢迎加入中文讨论QQ群1043861059
欢迎加入中文讨论QQ群[1043861059](https://qm.qq.com/q/7vQKsTmSz)
Bilibilihttps://space.bilibili.com/3546894915602564
## 中文社区赞助商
[![EdgeOne](https://edgeone.ai/media/34fe3a45-492d-4ea4-ae5d-ea1087ca7b4b.png)](https://edgeone.ai/zh?from=github)
本项目 CDN 加速及安全防护由 Tencent EdgeOne 赞助

View File

@@ -4,7 +4,7 @@
sudo apt-get update
sudo apt-get install -y build-essential cmake git wget
hailo_version="4.20.1"
hailo_version="4.21.0"
arch=$(uname -m)
if [[ $arch == "x86_64" ]]; then

View File

@@ -152,7 +152,7 @@ ARG TARGETARCH
# Use a separate container to build wheels to prevent build dependencies in final image
RUN apt-get -qq update \
&& apt-get -qq install -y \
apt-transport-https wget \
apt-transport-https wget unzip \
&& apt-get -qq update \
&& apt-get -qq install -y \
python3.11 \

View File

@@ -2,18 +2,31 @@
set -euxo pipefail
SQLITE3_VERSION="96c92aba00c8375bc32fafcdf12429c58bd8aabfcadab6683e35bbb9cdebf19e" # 3.46.0
SQLITE3_VERSION="3.46.1"
PYSQLITE3_VERSION="0.5.3"
# Fetch the source code for the latest release of Sqlite.
# Install libsqlite3-dev if not present (needed for some base images like NVIDIA TensorRT)
if ! dpkg -l | grep -q libsqlite3-dev; then
echo "Installing libsqlite3-dev for compilation..."
apt-get update && apt-get install -y libsqlite3-dev && rm -rf /var/lib/apt/lists/*
fi
# Fetch the pre-built sqlite amalgamation instead of building from source
if [[ ! -d "sqlite" ]]; then
wget https://www.sqlite.org/src/tarball/sqlite.tar.gz?r=${SQLITE3_VERSION} -O sqlite.tar.gz
tar xzf sqlite.tar.gz
cd sqlite/
LIBS="-lm" ./configure --disable-tcl --enable-tempstore=always
make sqlite3.c
mkdir sqlite
cd sqlite
# Download the pre-built amalgamation from sqlite.org
# For SQLite 3.46.1, the amalgamation version is 3460100
SQLITE_AMALGAMATION_VERSION="3460100"
wget https://www.sqlite.org/2024/sqlite-amalgamation-${SQLITE_AMALGAMATION_VERSION}.zip -O sqlite-amalgamation.zip
unzip sqlite-amalgamation.zip
mv sqlite-amalgamation-${SQLITE_AMALGAMATION_VERSION}/* .
rmdir sqlite-amalgamation-${SQLITE_AMALGAMATION_VERSION}
rm sqlite-amalgamation.zip
cd ../
rm sqlite.tar.gz
fi
# Grab the pysqlite3 source code.

View File

@@ -57,9 +57,16 @@ fi
# arch specific packages
if [[ "${TARGETARCH}" == "amd64" ]]; then
# Install non-free version of i965 driver
sed -i -E "/^Components: main$/s/main/main contrib non-free non-free-firmware/" "/etc/apt/sources.list.d/debian.sources" \
&& apt-get -qq update \
&& apt-get install --no-install-recommends --no-install-suggests -y i965-va-driver-shaders \
&& sed -i -E "/^Components: main contrib non-free non-free-firmware$/s/main contrib non-free non-free-firmware/main/" "/etc/apt/sources.list.d/debian.sources" \
&& apt-get update
# install amd / intel-i965 driver packages
apt-get -qq install --no-install-recommends --no-install-suggests -y \
i965-va-driver intel-gpu-tools onevpl-tools \
intel-gpu-tools onevpl-tools \
libva-drm2 \
mesa-va-drivers radeontop

View File

@@ -2,7 +2,7 @@
set -euxo pipefail
hailo_version="4.20.1"
hailo_version="4.21.0"
if [[ "${TARGETARCH}" == "amd64" ]]; then
arch="x86_64"

View File

@@ -2,7 +2,7 @@
set -euxo pipefail
s6_version="3.1.5.0"
s6_version="3.2.1.0"
if [[ "${TARGETARCH}" == "amd64" ]]; then
s6_arch="x86_64"

View File

@@ -8,6 +8,7 @@ fastapi == 0.115.*
uvicorn == 0.30.*
slowapi == 0.1.*
joserfc == 1.0.*
cryptography == 44.0.*
pathvalidate == 3.2.*
markupsafe == 3.0.*
python-multipart == 0.0.12
@@ -31,6 +32,7 @@ norfair == 2.2.*
setproctitle == 1.3.*
ws4py == 0.5.*
unidecode == 1.3.*
titlecase == 2.4.*
# Image Manipulation
numpy == 1.26.*
opencv-python-headless == 4.11.0.*

View File

@@ -1,2 +1 @@
scikit-build == 0.18.*
nvidia-pyindex

View File

@@ -25,7 +25,4 @@ elif [[ "${exit_code_service}" -ne 0 ]]; then
fi
fi
# used by the docker healthcheck
touch /dev/shm/.frigate-is-stopping
exec /run/s6/basedir/bin/halt

View File

@@ -6,7 +6,7 @@ set -o errexit -o nounset -o pipefail
# opt out of openvino telemetry
if [ -e /usr/local/bin/opt_in_out ]; then
/usr/local/bin/opt_in_out --opt_out
/usr/local/bin/opt_in_out --opt_out > /dev/null 2>&1
fi
# Logs should be sent to stdout so that s6 can collect them

View File

@@ -13,6 +13,7 @@ RUN sed -i "/https:\/\//d" /requirements-wheels.txt
RUN sed -i "/onnxruntime/d" /requirements-wheels.txt
RUN pip3 wheel --wheel-dir=/rk-wheels -c /requirements-wheels.txt -r /requirements-wheels-rk.txt
RUN rm -rf /rk-wheels/opencv_python-*
RUN rm -rf /rk-wheels/torch-*
FROM deps AS rk-frigate
ARG TARGETARCH
@@ -28,7 +29,9 @@ COPY docker/rockchip/conv2rknn.py /opt/conv2rknn.py
ADD https://github.com/MarcA711/rknn-toolkit2/releases/download/v2.3.2/librknnrt.so /usr/lib/
ADD --chmod=111 https://github.com/MarcA711/Rockchip-FFmpeg-Builds/releases/download/6.1-7/ffmpeg /usr/lib/ffmpeg/6.0/bin/
ADD --chmod=111 https://github.com/MarcA711/Rockchip-FFmpeg-Builds/releases/download/6.1-7/ffprobe /usr/lib/ffmpeg/6.0/bin/
ADD --chmod=111 https://github.com/MarcA711/Rockchip-FFmpeg-Builds/releases/download/6.1-11/ffmpeg /usr/lib/ffmpeg/6.0/bin/
ADD --chmod=111 https://github.com/MarcA711/Rockchip-FFmpeg-Builds/releases/download/6.1-11/ffprobe /usr/lib/ffmpeg/6.0/bin/
ADD --chmod=111 https://github.com/MarcA711/Rockchip-FFmpeg-Builds/releases/download/7.1-1/ffmpeg /usr/lib/ffmpeg/7.0/bin/
ADD --chmod=111 https://github.com/MarcA711/Rockchip-FFmpeg-Builds/releases/download/7.1-1/ffprobe /usr/lib/ffmpeg/7.0/bin/
ENV DEFAULT_FFMPEG_VERSION="6.0"
ENV INCLUDED_FFMPEG_VERSIONS="${DEFAULT_FFMPEG_VERSION}:${INCLUDED_FFMPEG_VERSIONS}"

View File

@@ -22,7 +22,7 @@ RUN apt update && \
RUN mkdir -p /opt/rocm-dist/opt/rocm-$ROCM/lib
RUN cd /opt/rocm-$ROCM/lib && \
cp -dpr libMIOpen*.so* libamd*.so* libhip*.so* libhsa*.so* libmigraphx*.so* librocm*.so* librocblas*.so* libroctracer*.so* librocfft*.so* librocprofiler*.so* libroctx*.so* /opt/rocm-dist/opt/rocm-$ROCM/lib/ && \
cp -dpr libMIOpen*.so* libamd*.so* libhip*.so* libhsa*.so* libmigraphx*.so* librocm*.so* librocblas*.so* libroctracer*.so* librocsolver*.so* librocfft*.so* librocprofiler*.so* libroctx*.so* /opt/rocm-dist/opt/rocm-$ROCM/lib/ && \
mkdir -p /opt/rocm-dist/opt/rocm-$ROCM/lib/migraphx/lib && \
cp -dpr migraphx/lib/* /opt/rocm-dist/opt/rocm-$ROCM/lib/migraphx/lib
RUN cd /opt/rocm-dist/opt/ && ln -s rocm-$ROCM rocm
@@ -63,6 +63,7 @@ COPY --from=rocm /opt/rocm-dist/ /
FROM deps-prelim AS rocm-prelim-hsa-override0
ENV HSA_ENABLE_SDMA=0
ENV MIGRAPHX_ENABLE_NHWC=1
ENV TF_ROCM_USE_IMMEDIATE_MODE=1
COPY --from=rocm-dist / /

View File

@@ -6,24 +6,29 @@ ARG DEBIAN_FRONTEND=noninteractive
# Globally set pip break-system-packages option to avoid having to specify it every time
ARG PIP_BREAK_SYSTEM_PACKAGES=1
FROM tensorrt-base AS frigate-tensorrt
FROM wheels AS trt-wheels
ARG PIP_BREAK_SYSTEM_PACKAGES
ENV TRT_VER=8.6.1
# Install TensorRT wheels
COPY docker/tensorrt/requirements-amd64.txt /requirements-tensorrt.txt
RUN pip3 install -U -r /requirements-tensorrt.txt && ldconfig
COPY docker/main/requirements-wheels.txt /requirements-wheels.txt
RUN pip3 wheel --wheel-dir=/trt-wheels -c /requirements-wheels.txt -r /requirements-tensorrt.txt
FROM deps AS frigate-tensorrt
ARG PIP_BREAK_SYSTEM_PACKAGES
RUN --mount=type=bind,from=trt-wheels,source=/trt-wheels,target=/deps/trt-wheels \
pip3 uninstall -y onnxruntime-openvino tensorflow-cpu \
&& pip3 install -U /deps/trt-wheels/*.whl
COPY --from=rootfs / /
COPY docker/tensorrt/detector/rootfs/etc/ld.so.conf.d /etc/ld.so.conf.d
RUN ldconfig
WORKDIR /opt/frigate/
COPY --from=rootfs / /
# Dev Container w/ TRT
FROM devcontainer AS devcontainer-trt
COPY --from=trt-deps /usr/local/lib/libyolo_layer.so /usr/local/lib/libyolo_layer.so
COPY --from=trt-deps /usr/local/src/tensorrt_demos /usr/local/src/tensorrt_demos
COPY --from=trt-deps /usr/local/cuda-12.1 /usr/local/cuda
COPY docker/tensorrt/detector/rootfs/ /
COPY --from=trt-deps /usr/local/lib/libyolo_layer.so /usr/local/lib/libyolo_layer.so
RUN --mount=type=bind,from=trt-wheels,source=/trt-wheels,target=/deps/trt-wheels \
pip3 install -U /deps/trt-wheels/*.whl

View File

@@ -1,9 +1,61 @@
# syntax=docker/dockerfile:1.4
# syntax=docker/dockerfile:1.6
# https://askubuntu.com/questions/972516/debian-frontend-environment-variable
ARG DEBIAN_FRONTEND=noninteractive
ARG BASE_IMAGE
ARG TRT_BASE=nvcr.io/nvidia/tensorrt:23.12-py3
# Build TensorRT-specific library
FROM ${TRT_BASE} AS trt-deps
ARG TARGETARCH
ARG COMPUTE_LEVEL
RUN apt-get update \
&& apt-get install -y git build-essential cuda-nvcc-* cuda-nvtx-* libnvinfer-dev libnvinfer-plugin-dev libnvparsers-dev libnvonnxparsers-dev \
&& rm -rf /var/lib/apt/lists/*
RUN --mount=type=bind,source=docker/tensorrt/detector/tensorrt_libyolo.sh,target=/tensorrt_libyolo.sh \
/tensorrt_libyolo.sh
# COPY required individual CUDA deps
RUN mkdir -p /usr/local/cuda-deps
RUN if [ "$TARGETARCH" = "amd64" ]; then \
cp /usr/local/cuda-12.3/targets/x86_64-linux/lib/libcurand.so.* /usr/local/cuda-deps/ && \
cp /usr/local/cuda-12.3/targets/x86_64-linux/lib/libnvrtc.so.* /usr/local/cuda-deps/ && \
cd /usr/local/cuda-deps/ && \
for lib in libnvrtc.so.*; do \
if [[ "$lib" =~ libnvrtc.so\.([0-9]+\.[0-9]+\.[0-9]+) ]]; then \
version="${BASH_REMATCH[1]}"; \
ln -sf "libnvrtc.so.$version" libnvrtc.so; \
fi; \
done && \
for lib in libcurand.so.*; do \
if [[ "$lib" =~ libcurand.so\.([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+) ]]; then \
version="${BASH_REMATCH[1]}"; \
ln -sf "libcurand.so.$version" libcurand.so; \
fi; \
done; \
fi
# Frigate w/ TensorRT Support as separate image
FROM deps AS tensorrt-base
#Disable S6 Global timeout
ENV S6_CMD_WAIT_FOR_SERVICES_MAXTIME=0
# COPY TensorRT Model Generation Deps
COPY --from=trt-deps /usr/local/lib/libyolo_layer.so /usr/local/lib/libyolo_layer.so
COPY --from=trt-deps /usr/local/src/tensorrt_demos /usr/local/src/tensorrt_demos
# COPY Individual CUDA deps folder
COPY --from=trt-deps /usr/local/cuda-deps /usr/local/cuda
COPY docker/tensorrt/detector/rootfs/ /
ENV YOLO_MODELS=""
HEALTHCHECK --start-period=600s --start-interval=5s --interval=15s --timeout=5s --retries=3 \
CMD curl --fail --silent --show-error http://127.0.0.1:5000/api/version || exit 1
FROM ${BASE_IMAGE} AS build-wheels
ARG DEBIAN_FRONTEND
@@ -47,12 +99,11 @@ RUN --mount=type=bind,source=docker/tensorrt/detector/build_python_tensorrt.sh,t
&& TENSORRT_VER=$(cat /etc/TENSORRT_VER) /deps/build_python_tensorrt.sh
COPY docker/tensorrt/requirements-arm64.txt /requirements-tensorrt.txt
# See https://elinux.org/Jetson_Zoo#ONNX_Runtime
ADD https://nvidia.box.com/shared/static/9yvw05k6u343qfnkhdv2x6xhygze0aq1.whl /tmp/onnxruntime_gpu-1.19.0-cp311-cp311-linux_aarch64.whl
RUN pip3 uninstall -y onnxruntime-openvino \
&& pip3 wheel --wheel-dir=/trt-wheels -r /requirements-tensorrt.txt \
&& pip3 install --no-deps /tmp/onnxruntime_gpu-1.19.0-cp311-cp311-linux_aarch64.whl
RUN pip3 wheel --wheel-dir=/trt-wheels -r /requirements-tensorrt.txt
# See https://elinux.org/Jetson_Zoo#ONNX_Runtime
ADD https://nvidia.box.com/shared/static/9yvw05k6u343qfnkhdv2x6xhygze0aq1.whl /trt-wheels/onnxruntime_gpu-1.19.0-cp311-cp311-linux_aarch64.whl
FROM build-wheels AS trt-model-wheels
ARG DEBIAN_FRONTEND
@@ -61,7 +112,7 @@ RUN apt-get update \
&& apt-get install -y protobuf-compiler libprotobuf-dev \
&& rm -rf /var/lib/apt/lists/*
RUN --mount=type=bind,source=docker/tensorrt/requirements-models-arm64.txt,target=/requirements-tensorrt-models.txt \
pip3 wheel --wheel-dir=/trt-model-wheels -r /requirements-tensorrt-models.txt
pip3 wheel --wheel-dir=/trt-model-wheels --no-deps -r /requirements-tensorrt-models.txt
FROM wget AS jetson-ffmpeg
ARG DEBIAN_FRONTEND
@@ -93,11 +144,13 @@ RUN mkdir -p /etc/ld.so.conf.d && echo /usr/lib/ffmpeg/jetson/lib/ > /etc/ld.so.
COPY --from=trt-wheels /etc/TENSORRT_VER /etc/TENSORRT_VER
RUN --mount=type=bind,from=trt-wheels,source=/trt-wheels,target=/deps/trt-wheels \
--mount=type=bind,from=trt-model-wheels,source=/trt-model-wheels,target=/deps/trt-model-wheels \
pip3 install -U /deps/trt-wheels/*.whl /deps/trt-model-wheels/*.whl \
pip3 uninstall -y onnxruntime \
&& pip3 install -U /deps/trt-wheels/*.whl \
&& pip3 install -U /deps/trt-model-wheels/*.whl \
&& ldconfig
WORKDIR /opt/frigate/
COPY --from=rootfs / /
# Fixes "Error importing detector runtime: /usr/lib/aarch64-linux-gnu/libstdc++.so.6: cannot allocate memory in static TLS block"
ENV LD_PRELOAD /usr/lib/aarch64-linux-gnu/libstdc++.so.6
ENV LD_PRELOAD /usr/lib/aarch64-linux-gnu/libstdc++.so.6

View File

@@ -1,57 +0,0 @@
# syntax=docker/dockerfile:1.6
# https://askubuntu.com/questions/972516/debian-frontend-environment-variable
ARG DEBIAN_FRONTEND=noninteractive
ARG TRT_BASE=nvcr.io/nvidia/tensorrt:23.12-py3
# Build TensorRT-specific library
FROM ${TRT_BASE} AS trt-deps
ARG TARGETARCH
ARG COMPUTE_LEVEL
RUN apt-get update \
&& apt-get install -y git build-essential cuda-nvcc-* cuda-nvtx-* libnvinfer-dev libnvinfer-plugin-dev libnvparsers-dev libnvonnxparsers-dev \
&& rm -rf /var/lib/apt/lists/*
RUN --mount=type=bind,source=docker/tensorrt/detector/tensorrt_libyolo.sh,target=/tensorrt_libyolo.sh \
/tensorrt_libyolo.sh
# COPY required individual CUDA deps
RUN mkdir -p /usr/local/cuda-deps
RUN if [ "$TARGETARCH" = "amd64" ]; then \
cp /usr/local/cuda-12.3/targets/x86_64-linux/lib/libcurand.so.* /usr/local/cuda-deps/ && \
cp /usr/local/cuda-12.3/targets/x86_64-linux/lib/libnvrtc.so.* /usr/local/cuda-deps/ && \
cd /usr/local/cuda-deps/ && \
for lib in libnvrtc.so.*; do \
if [[ "$lib" =~ libnvrtc.so\.([0-9]+\.[0-9]+\.[0-9]+) ]]; then \
version="${BASH_REMATCH[1]}"; \
ln -sf "libnvrtc.so.$version" libnvrtc.so; \
fi; \
done && \
for lib in libcurand.so.*; do \
if [[ "$lib" =~ libcurand.so\.([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+) ]]; then \
version="${BASH_REMATCH[1]}"; \
ln -sf "libcurand.so.$version" libcurand.so; \
fi; \
done; \
fi
# Frigate w/ TensorRT Support as separate image
FROM deps AS tensorrt-base
#Disable S6 Global timeout
ENV S6_CMD_WAIT_FOR_SERVICES_MAXTIME=0
# COPY TensorRT Model Generation Deps
COPY --from=trt-deps /usr/local/lib/libyolo_layer.so /usr/local/lib/libyolo_layer.so
COPY --from=trt-deps /usr/local/src/tensorrt_demos /usr/local/src/tensorrt_demos
# COPY Individual CUDA deps folder
COPY --from=trt-deps /usr/local/cuda-deps /usr/local/cuda
COPY docker/tensorrt/detector/rootfs/ /
ENV YOLO_MODELS=""
HEALTHCHECK --start-period=600s --start-interval=5s --interval=15s --timeout=5s --retries=3 \
CMD curl --fail --silent --show-error http://127.0.0.1:5000/api/version || exit 1

View File

@@ -1,7 +1,6 @@
/usr/local/lib
/usr/local/cuda
/usr/local/lib/python3.11/dist-packages/tensorrt
/usr/local/lib/python3.11/dist-packages/nvidia/cudnn/lib
/usr/local/lib/python3.11/dist-packages/nvidia/cuda_runtime/lib
/usr/local/lib/python3.11/dist-packages/nvidia/cublas/lib
/usr/local/lib/python3.11/dist-packages/nvidia/cufft/lib
/usr/local/lib/python3.11/dist-packages/nvidia/cufft/lib
/usr/local/lib/python3.11/dist-packages/nvidia/curand/lib/
/usr/local/lib/python3.11/dist-packages/nvidia/cuda_nvrtc/lib/

View File

@@ -1,17 +1,18 @@
# NVidia TensorRT Support (amd64 only)
--extra-index-url 'https://pypi.nvidia.com'
numpy < 1.24; platform_machine == 'x86_64'
tensorrt == 8.6.1; platform_machine == 'x86_64'
tensorrt_bindings == 8.6.1; platform_machine == 'x86_64'
cuda-python == 11.8.*; platform_machine == 'x86_64'
cython == 3.0.*; platform_machine == 'x86_64'
nvidia-cuda-runtime-cu12 == 12.1.*; platform_machine == 'x86_64'
nvidia-cuda-runtime-cu11 == 11.8.*; platform_machine == 'x86_64'
nvidia-cublas-cu11 == 11.11.3.6; platform_machine == 'x86_64'
nvidia-cudnn-cu11 == 8.6.0.*; platform_machine == 'x86_64'
nvidia-cudnn-cu12 == 9.5.0.*; platform_machine == 'x86_64'
nvidia-cufft-cu11==10.*; platform_machine == 'x86_64'
nvidia-cufft-cu12==11.*; platform_machine == 'x86_64'
cython==3.0.*; platform_machine == 'x86_64'
nvidia_cuda_cupti_cu12==12.5.82; platform_machine == 'x86_64'
nvidia-cublas-cu12==12.5.3.*; platform_machine == 'x86_64'
nvidia-cudnn-cu12==9.3.0.*; platform_machine == 'x86_64'
nvidia-cufft-cu12==11.2.3.*; platform_machine == 'x86_64'
nvidia-curand-cu12==10.3.6.*; platform_machine == 'x86_64'
nvidia_cuda_nvcc_cu12==12.5.82; platform_machine == 'x86_64'
nvidia-cuda-nvrtc-cu12==12.5.82; platform_machine == 'x86_64'
nvidia_cuda_runtime_cu12==12.5.82; platform_machine == 'x86_64'
nvidia_cusolver_cu12==11.6.3.*; platform_machine == 'x86_64'
nvidia_cusparse_cu12==12.5.1.*; platform_machine == 'x86_64'
nvidia_nccl_cu12==2.23.4; platform_machine == 'x86_64'
nvidia_nvjitlink_cu12==12.5.82; platform_machine == 'x86_64'
onnx==1.16.*; platform_machine == 'x86_64'
onnxruntime-gpu==1.20.*; platform_machine == 'x86_64'
protobuf==3.20.3; platform_machine == 'x86_64'

View File

@@ -79,21 +79,13 @@ target "trt-deps" {
inherits = ["_build_args"]
}
target "tensorrt-base" {
dockerfile = "docker/tensorrt/Dockerfile.base"
context = "."
contexts = {
deps = "target:deps",
}
inherits = ["_build_args"]
}
target "tensorrt" {
dockerfile = "docker/tensorrt/Dockerfile.${ARCH}"
context = "."
contexts = {
wget = "target:wget",
tensorrt-base = "target:tensorrt-base",
wheels = "target:wheels",
deps = "target:deps",
rootfs = "target:rootfs"
}
target = "frigate-tensorrt"

View File

@@ -52,6 +52,21 @@ auth:
- 172.18.0.0/16 # <---- this is the subnet for the internal Docker Compose network
```
## Session Length
The default session length for user authentication in Frigate is 24 hours. This setting determines how long a user's authenticated session remains active before a token refresh is required — otherwise, the user will need to log in again.
While the default provides a balance of security and convenience, you can customize this duration to suit your specific security requirements and user experience preferences. The session length is configured in seconds.
The default value of `86400` will expire the authentication session after 24 hours. Some other examples:
- `0`: Setting the session length to 0 will require a user to log in every time they access the application or after a very short, immediate timeout.
- `604800`: Setting the session length to 604800 will require a user to log in if the token is not refreshed for 7 days.
```yaml
auth:
session_length: 86400
```
## JWT Token Secret
The JWT token secret needs to be kept secure. Anyone with this secret can generate valid JWT tokens to authenticate with Frigate. This should be a cryptographically random string of at least 64 characters.
@@ -97,14 +112,15 @@ python3 -c 'import secrets; print(secrets.token_hex(64))'
### Header mapping
If you have disabled Frigate's authentication and your proxy supports passing a header with authenticated usernames and/or roles, you can use the `header_map` config to specify the header name so it is passed to Frigate. For example, the following will map the `X-Forwarded-User` and `X-Forwarded-Role` values. Header names are not case sensitive.
If you have disabled Frigate's authentication and your proxy supports passing a header with authenticated usernames and/or roles, you can use the `header_map` config to specify the header name so it is passed to Frigate. For example, the following will map the `X-Forwarded-User` and `X-Forwarded-Groups` values. Header names are not case sensitive. Multiple values can be included in the role header. Frigate expects that the character separating the roles is a comma, but this can be specified using the `separator` config entry.
```yaml
proxy:
...
separator: "|" # This value defaults to a comma, but Authentik uses a pipe, for example.
header_map:
user: x-forwarded-user
role: x-forwarded-role
role: x-forwarded-groups
```
Frigate supports both `admin` and `viewer` roles (see below). When using port `8971`, Frigate validates these headers and subsequent requests use the headers `remote-user` and `remote-role` for authorization.

View File

@@ -144,7 +144,14 @@ WEB Digest Algorithm - MD5
### Reolink Cameras
Reolink has older cameras (ex: 410 & 520) as well as newer camera (ex: 520a & 511wa) which support different subsets of options. In both cases using the http stream is recommended.
Reolink has many different camera models with inconsistently supported features and behavior. The below table shows a summary of various features and recommendations.
| Camera Resolution | Camera Generation | Recommended Stream Type | Additional Notes |
| ---------------- | ------------------------- | -------------------------------- | ----------------------------------------------------------------------- |
| 5MP or lower | All | http-flv | Stream is h264 |
| 6MP or higher | Latest (ex: Duo3, CX-8##) | http-flv with ffmpeg 8.0, or rtsp | This uses the new http-flv-enhanced over H265 which requires ffmpeg 8.0 |
| 6MP or higher | Older (ex: RLC-8##) | rtsp | |
Frigate works much better with newer reolink cameras that are setup with the below options:
If available, recommended settings are:
@@ -157,19 +164,35 @@ According to [this discussion](https://github.com/blakeblackshear/frigate/issues
Cameras connected via a Reolink NVR can be connected with the http stream, use `channel[0..15]` in the stream url for the additional channels.
The setup of main stream can be also done via RTSP, but isn't always reliable on all hardware versions. The example configuration is working with the oldest HW version RLN16-410 device with multiple types of cameras.
:::warning
<details>
<summary>Example Config</summary>
The below configuration only works for reolink cameras with stream resolution of 5MP or lower, 8MP+ cameras need to use RTSP as http-flv is not supported in this case.
:::tip
Reolink's latest cameras support two way audio via go2rtc and other applications. It is important that the http-flv stream is still used for stability, a secondary rtsp stream can be added that will be using for the two way audio only.
NOTE: The RTSP stream can not be prefixed with `ffmpeg:`, as go2rtc needs to handle the stream to support two way audio.
Ensure HTTP is enabled in the camera's advanced network settings. To use two way talk with Frigate, see the [Live view documentation](/configuration/live#two-way-talk).
:::
```yaml
go2rtc:
streams:
# example for connecting to a standard Reolink camera
your_reolink_camera:
- "ffmpeg:http://reolink_ip/flv?port=1935&app=bcs&stream=channel0_main.bcs&user=username&password=password#video=copy#audio=copy#audio=opus"
your_reolink_camera_sub:
- "ffmpeg:http://reolink_ip/flv?port=1935&app=bcs&stream=channel0_ext.bcs&user=username&password=password"
# example for connectin to a Reolink camera that supports two way talk
your_reolink_camera_twt:
- "ffmpeg:http://reolink_ip/flv?port=1935&app=bcs&stream=channel0_main.bcs&user=username&password=password#video=copy#audio=copy#audio=opus"
- "rtsp://username:password@reolink_ip/Preview_01_sub"
your_reolink_camera_twt_sub:
- "ffmpeg:http://reolink_ip/flv?port=1935&app=bcs&stream=channel0_ext.bcs&user=username&password=password"
- "rtsp://username:password@reolink_ip/Preview_01_sub"
# example for connecting to a Reolink NVR
your_reolink_camera_via_nvr:
- "ffmpeg:http://reolink_nvr_ip/flv?port=1935&app=bcs&stream=channel3_main.bcs&user=username&password=password" # channel numbers are 0-15
- "ffmpeg:your_reolink_camera_via_nvr#audio=aac"
@@ -200,25 +223,16 @@ cameras:
roles:
- detect
```
#### Reolink Doorbell
The reolink doorbell supports two way audio via go2rtc and other applications. It is important that the http-flv stream is still used for stability, a secondary rtsp stream can be added that will be using for the two way audio only.
Ensure HTTP is enabled in the camera's advanced network settings. To use two way talk with Frigate, see the [Live view documentation](/configuration/live#two-way-talk).
```yaml
go2rtc:
streams:
your_reolink_doorbell:
- "ffmpeg:http://reolink_ip/flv?port=1935&app=bcs&stream=channel0_main.bcs&user=username&password=password#video=copy#audio=copy#audio=opus"
- rtsp://reolink_ip/Preview_01_sub
your_reolink_doorbell_sub:
- "ffmpeg:http://reolink_ip/flv?port=1935&app=bcs&stream=channel0_ext.bcs&user=username&password=password"
```
</details>
### Unifi Protect Cameras
:::note
Unifi G5s cameras and newer need a Unifi Protect server to enable rtsps stream, it's not posible to enable it in standalone mode.
:::
Unifi protect cameras require the rtspx stream to be used with go2rtc.
To utilize a Unifi protect camera, modify the rtsps link to begin with rtspx.
Additionally, remove the "?enableSrtp" from the end of the Unifi link.
@@ -243,3 +257,40 @@ ffmpeg:
### TP-Link VIGI Cameras
TP-Link VIGI cameras need some adjustments to the main stream settings on the camera itself to avoid issues. The stream needs to be configured as `H264` with `Smart Coding` set to `off`. Without these settings you may have problems when trying to watch recorded footage. For example Firefox will stop playback after a few seconds and show the following error message: `The media playback was aborted due to a corruption problem or because the media used features your browser did not support.`.
### Wyze Wireless Cameras
Some community members have found better performance on Wyze cameras by using an alternative firmware known as [Thingino](https://thingino.com/).
## USB Cameras (aka Webcams)
To use a USB camera (webcam) with Frigate, the recommendation is to use go2rtc's [FFmpeg Device](https://github.com/AlexxIT/go2rtc?tab=readme-ov-file#source-ffmpeg-device) support:
- Preparation outside of Frigate:
- Get USB camera path. Run `v4l2-ctl --list-devices` to get a listing of locally-connected cameras available. (You may need to install `v4l-utils` in a way appropriate for your Linux distribution). In the sample configuration below, we use `video=0` to correlate with a detected device path of `/dev/video0`
- Get USB camera formats & resolutions. Run `ffmpeg -f v4l2 -list_formats all -i /dev/video0` to get an idea of what formats and resolutions the USB Camera supports. In the sample configuration below, we use a width of 1024 and height of 576 in the stream and detection settings based on what was reported back.
- If using Frigate in a container (e.g. Docker on TrueNAS), ensure you have USB Passthrough support enabled, along with a specific Host Device (`/dev/video0`) + Container Device (`/dev/video0`) listed.
- In your Frigate Configuration File, add the go2rtc stream and roles as appropriate:
```
go2rtc:
streams:
usb_camera:
- "ffmpeg:device?video=0&video_size=1024x576#video=h264"
cameras:
usb_camera:
enabled: true
ffmpeg:
inputs:
- path: rtsp://127.0.0.1:8554/usb_camera
input_args: preset-rtsp-restream
roles:
- detect
- record
detect:
enabled: false # <---- disable detection until you have a working camera feed
width: 1024
height: 576
```

View File

@@ -97,17 +97,18 @@ This list of working and non-working PTZ cameras is based on user feedback.
| Amcrest ASH21 | ✅ | ❌ | ONVIF service port: 80 |
| Amcrest IP4M-S2112EW-AI | ✅ | ❌ | FOV relative movement not supported. |
| Amcrest IP5M-1190EW | ✅ | ❌ | ONVIF Port: 80. FOV relative movement not supported. |
| Annke CZ504 | ✅ | ✅ | Annke support provide specific firmware ([V5.7.1 build 250227](https://github.com/pierrepinon/annke_cz504/raw/refs/heads/main/digicap_V5-7-1_build_250227.dav)) to fix issue with ONVIF "TranslationSpaceFov" |
| Axis Q-6155E | ✅ | ❌ | ONVIF service port: 80; Camera does not support MoveStatus.
| Ctronics PTZ | ✅ | ❌ | |
| Dahua | ✅ | ✅ | |
| Dahua | ✅ | ✅ | Some low-end Dahuas (lite series, among others) have been reported to not support autotracking |
| Dahua DH-SD2A500HB | ✅ | ❌ | |
| Dahua DH-SD49825GB-HNR | ✅ | ✅ | |
| Dahua DH-P5AE-PV | ❌ | ❌ | |
| Foscam R5 | ✅ | ❌ | |
| Hanwha XNP-6550RH | ✅ | ❌ | |
| Hikvision | ✅ | ❌ | Incomplete ONVIF support (MoveStatus won't update even on latest firmware) - reported with HWP-N4215IH-DE and DS-2DE3304W-DE, but likely others |
| Hikvision DS-2DE3A404IWG-E/W | ✅ | ✅ | |
| Reolink 511WA | ✅ | ❌ | Zoom only |
| Reolink E1 Pro | ✅ | ❌ | |
| Reolink E1 Zoom | ✅ | ❌ | |
| Reolink RLC-823A 16x | ✅ | ❌ | |
| Reolink | ✅ | ❌ | |
| Speco O8P32X | ✅ | ❌ | |
| Sunba 405-D20X | ✅ | ❌ | Incomplete ONVIF support reported on original, and 4k models. All models are suspected incompatable. |
| Tapo | ✅ | ❌ | Many models supported, ONVIF Service Port: 2020 |

View File

@@ -45,6 +45,8 @@ face_recognition:
enabled: true
```
Like the other real-time processors in Frigate, face recognition runs on the camera stream defined by the `detect` role in your config. To ensure optimal performance, select a suitable resolution for this stream in your camera's firmware that fits your specific scene and requirements.
## Advanced Configuration
Fine-tune face recognition with these optional parameters at the global level of your config. The only optional parameters that can be set at the camera level are `enabled` and `min_area`.
@@ -65,6 +67,8 @@ Fine-tune face recognition with these optional parameters at the global level of
- Default: `0.8`.
- `recognition_threshold`: Recognition confidence score required to add the face to the object as a sub label.
- Default: `0.9`.
- `min_faces`: Min face recognitions for the sub label to be applied to the person object.
- Default: `1`
- `save_attempts`: Number of images of recognized faces to save for training.
- Default: `100`.
- `blur_confidence_filter`: Enables a filter that calculates how blurry the face is and adjusts the confidence based on this.
@@ -72,8 +76,10 @@ Fine-tune face recognition with these optional parameters at the global level of
## Usage
Follow these steps to begin:
1. **Enable face recognition** in your configuration file and restart Frigate.
2. **Upload your face** using the **Add Face** button's wizard in the Face Library section of the Frigate UI.
2. **Upload one face** using the **Add Face** button's wizard in the Face Library section of the Frigate UI. Read below for the best practices on expanding your training set.
3. When Frigate detects and attempts to recognize a face, it will appear in the **Train** tab of the Face Library, along with its associated recognition confidence.
4. From the **Train** tab, you can **assign the face** to a new or existing person to improve recognition accuracy for the future.
@@ -105,22 +111,55 @@ When choosing images to include in the face training set it is recommended to al
:::
### Understanding the Train Tab
The Train tab in the face library displays recent face recognition attempts. Detected face images are grouped according to the person they were identified as potentially matching.
Each face image is labeled with a name (or `Unknown`) along with the confidence score of the recognition attempt. While each image can be used to train the system for a specific person, not all images are suitable for training.
Refer to the guidelines below for best practices on selecting images for training.
### Step 1 - Building a Strong Foundation
When first enabling face recognition it is important to build a foundation of strong images. It is recommended to start by uploading 1-5 photos containing just this person's face. It is important that the person's face in the photo is front-facing and not turned, this will ensure a good starting point.
Then it is recommended to use the `Face Library` tab in Frigate to select and train images for each person as they are detected. When building a strong foundation it is strongly recommended to only train on images that are front-facing. Ignore images from cameras that recognize faces from an angle.
Then it is recommended to use the `Face Library` tab in Frigate to select and train images for each person as they are detected. When building a strong foundation it is strongly recommended to only train on images that are front-facing. Ignore images from cameras that recognize faces from an angle. Aim to strike a balance between the quality of images while also having a range of conditions (day / night, different weather conditions, different times of day, etc.) in order to have diversity in the images used for each person and not have over-fitting.
Aim to strike a balance between the quality of images while also having a range of conditions (day / night, different weather conditions, different times of day, etc.) in order to have diversity in the images used for each person and not have over-fitting.
Once a person starts to be consistently recognized correctly on images that are front-facing, it is time to move on to the next step.
You do not want to train images that are 90%+ as these are already being confidently recognized. In this step the goal is to train on clear, lower scoring front-facing images until the majority of front-facing images for a given person are consistently recognized correctly. Then it is time to move on to step 2.
### Step 2 - Expanding The Dataset
Once front-facing images are performing well, start choosing slightly off-angle images to include for training. It is important to still choose images where enough face detail is visible to recognize someone.
Once front-facing images are performing well, start choosing slightly off-angle images to include for training. It is important to still choose images where enough face detail is visible to recognize someone, and you still only want to train on images that score lower.
## FAQ
### How do I debug Face Recognition issues?
Start with the [Usage](#usage) section and re-read the [Model Requirements](#model-requirements) above.
1. Ensure `person` is being _detected_. A `person` will automatically be scanned by Frigate for a face. Any detected faces will appear in the Train tab in the Frigate UI's Face Library.
If you are using a Frigate+ or `face` detecting model:
- Watch the debug view (Settings --> Debug) to ensure that `face` is being detected along with `person`.
- You may need to adjust the `min_score` for the `face` object if faces are not being detected.
If you are **not** using a Frigate+ or `face` detecting model:
- Check your `detect` stream resolution and ensure it is sufficiently high enough to capture face details on `person` objects.
- You may need to lower your `detection_threshold` if faces are not being detected.
2. Any detected faces will then be _recognized_.
- Make sure you have trained at least one face per the recommendations above.
- Adjust `recognition_threshold` settings per the suggestions [above](#advanced-configuration).
### Detection does not work well with blurry images?
Accuracy is definitely a going to be improved with higher quality cameras / streams. It is important to look at the DORI (Detection Observation Recognition Identification) range of your camera, if that specification is posted. This specification explains the distance from the camera that a person can be detected, observed, recognized, and identified. The identification range is the most relevant here, and the distance listed by the camera is the furthest that face recognition will realistically work.
Some users have also noted that setting the stream in camera firmware to a constant bit rate (CBR) leads to better image clarity than with a variable bit rate (VBR).
### Why can't I bulk upload photos?
It is important to methodically add photos to the library, bulk importing photos (especially from a general photo library) will lead to over-fitting in that particular scenario and hurt recognition performance.
@@ -166,6 +205,6 @@ Face recognition does not run on the recording stream, this would be suboptimal
By default iOS devices will use HEIC (High Efficiency Image Container) for images, but this format is not supported for uploads. Choosing `large` as the format instead of `original` will use JPG which will work correctly.
## How can I delete the face database and start over?
### How can I delete the face database and start over?
Frigate does not store anything in its database related to face recognition. You can simply delete all of your faces through the Frigate UI or remove the contents of the `/media/frigate/clips/faces` directory.

View File

@@ -21,8 +21,7 @@ See [the hwaccel docs](/configuration/hardware_acceleration_video.md) for more i
| preset-nvidia | Nvidia GPU | |
| preset-jetson-h264 | Nvidia Jetson with h264 stream | |
| preset-jetson-h265 | Nvidia Jetson with h265 stream | |
| preset-rk-h264 | Rockchip MPP with h264 stream | Use image with \*-rk suffix and privileged mode |
| preset-rk-h265 | Rockchip MPP with h265 stream | Use image with \*-rk suffix and privileged mode |
| preset-rkmpp | Rockchip MPP | Use image with \*-rk suffix and privileged mode |
### Input Args Presets
@@ -71,11 +70,11 @@ cameras:
Output args presets help make the config more readable and handle use cases for different types of streams to ensure consistent recordings.
| Preset | Usage | Other Notes |
| -------------------------------- | --------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
| preset-record-generic | Record WITHOUT audio | This is the default when nothing is specified |
| preset-record-generic-audio-copy | Record WITH original audio | Use this to enable audio in recordings |
| preset-record-generic-audio-aac | Record WITH transcoded aac audio | Use this to transcode to aac audio. If your source is already aac, use preset-record-generic-audio-copy instead to avoid re-encoding |
| preset-record-mjpeg | Record an mjpeg stream | Recommend restreaming mjpeg stream instead |
| preset-record-jpeg | Record live jpeg | Recommend restreaming live jpeg instead |
| preset-record-ubiquiti | Record ubiquiti stream with audio | Recordings with ubiquiti non-standard audio |
| Preset | Usage | Other Notes |
| -------------------------------- | --------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| preset-record-generic | Record WITHOUT audio | If your camera doesnt have audio, or if you dont want to record audio, use this option |
| preset-record-generic-audio-copy | Record WITH original audio | Use this to enable audio in recordings |
| preset-record-generic-audio-aac | Record WITH transcoded aac audio | This is the default when no option is specified. Use it to transcode audio to AAC. If the source is already in AAC format, use preset-record-generic-audio-copy instead to avoid unnecessary re-encoding |
| preset-record-mjpeg | Record an mjpeg stream | Recommend restreaming mjpeg stream instead |
| preset-record-jpeg | Record live jpeg | Recommend restreaming live jpeg instead |
| preset-record-ubiquiti | Record ubiquiti stream with audio | Recordings with ubiquiti non-standard audio |

View File

@@ -18,15 +18,26 @@ genai:
enabled: True
provider: gemini
api_key: "{FRIGATE_GEMINI_API_KEY}"
model: gemini-1.5-flash
model: gemini-2.0-flash
cameras:
front_camera: ...
front_camera:
genai:
enabled: True # <- enable GenAI for your front camera
use_snapshot: True
objects:
- person
required_zones:
- steps
indoor_camera:
genai: # <- disable GenAI for your indoor camera
enabled: False
genai:
enabled: False # <- disable GenAI for your indoor camera
```
By default, descriptions will be generated for all tracked objects and all zones. But you can also optionally specify `objects` and `required_zones` to only generate descriptions for certain tracked objects or zones.
Optionally, you can generate the description using a snapshot (if enabled) by setting `use_snapshot` to `True`. By default, this is set to `False`, which sends the uncompressed images from the `detect` stream collected over the object's lifetime to the model. Once the object lifecycle ends, only a single compressed and cropped thumbnail is saved with the tracked object. Using a snapshot might be useful when you want to _regenerate_ a tracked object's description as it will provide the AI with a higher-quality image (typically downscaled by the AI itself) than the cropped/compressed thumbnail. Using a snapshot otherwise has a trade-off in that only a single image is sent to your provider, which will limit the model's ability to determine object movement or direction.
## Ollama
:::warning
@@ -67,7 +78,7 @@ Google Gemini has a free tier allowing [15 queries per minute](https://ai.google
### Supported Models
You must use a vision capable model with Frigate. Current model variants can be found [in their documentation](https://ai.google.dev/gemini-api/docs/models/gemini). At the time of writing, this includes `gemini-1.5-pro` and `gemini-1.5-flash`.
You must use a vision capable model with Frigate. Current model variants can be found [in their documentation](https://ai.google.dev/gemini-api/docs/models/gemini).
### Get API Key
@@ -85,16 +96,22 @@ genai:
enabled: True
provider: gemini
api_key: "{FRIGATE_GEMINI_API_KEY}"
model: gemini-1.5-flash
model: gemini-2.0-flash
```
:::note
To use a different Gemini-compatible API endpoint, set the `GEMINI_BASE_URL` environment variable to your provider's API URL.
:::
## OpenAI
OpenAI does not have a free tier for their API. With the release of gpt-4o, pricing has been reduced and each generation should cost fractions of a cent if you choose to go this route.
### Supported Models
You must use a vision capable model with Frigate. Current model variants can be found [in their documentation](https://platform.openai.com/docs/models). At the time of writing, this includes `gpt-4o` and `gpt-4-turbo`.
You must use a vision capable model with Frigate. Current model variants can be found [in their documentation](https://platform.openai.com/docs/models).
### Get API Key
@@ -122,11 +139,11 @@ Microsoft offers several vision models through Azure OpenAI. A subscription is r
### Supported Models
You must use a vision capable model with Frigate. Current model variants can be found [in their documentation](https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models). At the time of writing, this includes `gpt-4o` and `gpt-4-turbo`.
You must use a vision capable model with Frigate. Current model variants can be found [in their documentation](https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models).
### Create Resource and Get API Key
To start using Azure OpenAI, you must first [create a resource](https://learn.microsoft.com/azure/cognitive-services/openai/how-to/create-resource?pivots=web-portal#create-a-resource). You'll need your API key and resource URL, which must include the `api-version` parameter (see the example below). The model field is not required in your configuration as the model is part of the deployment name you chose when deploying the resource.
To start using Azure OpenAI, you must first [create a resource](https://learn.microsoft.com/azure/cognitive-services/openai/how-to/create-resource?pivots=web-portal#create-a-resource). You'll need your API key, model name, and resource URL, which must include the `api-version` parameter (see the example below).
### Configuration
@@ -134,7 +151,8 @@ To start using Azure OpenAI, you must first [create a resource](https://learn.mi
genai:
enabled: True
provider: azure_openai
base_url: https://example-endpoint.openai.azure.com/openai/deployments/gpt-4o/chat/completions?api-version=2023-03-15-preview
base_url: https://instance.cognitiveservices.azure.com/openai/responses?api-version=2025-04-01-preview
model: gpt-5-mini
api_key: "{FRIGATE_OPENAI_API_KEY}"
```
@@ -167,7 +185,7 @@ Analyze the sequence of images containing the {label}. Focus on the likely inten
:::tip
Prompts can use variable replacements like `{label}`, `{sub_label}`, and `{camera}` to substitute information from the tracked object as part of the prompt.
Prompts can use variable replacements `{label}`, `{sub_label}`, and `{camera}` to substitute information from the tracked object as part of the prompt.
:::
@@ -185,9 +203,7 @@ genai:
car: "Observe the primary vehicle in these images. Focus on its movement, direction, or purpose (e.g., parking, approaching, circling). If it's a delivery vehicle, mention the company."
```
Prompts can also be overriden at the camera level to provide a more detailed prompt to the model about your specific camera, if you desire. By default, descriptions will be generated for all tracked objects and all zones. But you can also optionally specify `objects` and `required_zones` to only generate descriptions for certain tracked objects or zones.
Optionally, you can generate the description using a snapshot (if enabled) by setting `use_snapshot` to `True`. By default, this is set to `False`, which sends the uncompressed images from the `detect` stream collected over the object's lifetime to the model. Once the object lifecycle ends, only a single compressed and cropped thumbnail is saved with the tracked object. Using a snapshot might be useful when you want to _regenerate_ a tracked object's description as it will provide the AI with a higher-quality image (typically downscaled by the AI itself) than the cropped/compressed thumbnail. Using a snapshot otherwise has a trade-off in that only a single image is sent to your provider, which will limit the model's ability to determine object movement or direction.
Prompts can also be overriden at the camera level to provide a more detailed prompt to the model about your specific camera, if you desire.
```yaml
cameras:

View File

@@ -23,7 +23,7 @@ Object detection and enrichments (like Semantic Search, Face Recognition, and Li
- Nvidia GPUs will automatically be detected and used for enrichments in the `-tensorrt` Frigate image.
- Jetson devices will automatically be detected and used for enrichments in the `-tensorrt-jp6` Frigate image.
Utilizing a GPU for enrichments does not require you to use the same GPU for object detection. For example, you can run the `tensorrt` Docker image for enrichments and still use other dedicated hardware for object detection.
Utilizing a GPU for enrichments does not require you to use the same GPU for object detection. For example, you can run the `tensorrt` Docker image for enrichments and still use other dedicated hardware like a Coral or Hailo for object detection. However, one combination that is not supported is TensorRT for object detection and OpenVINO for enrichments.
:::note

View File

@@ -9,7 +9,6 @@ It is highly recommended to use a GPU for hardware acceleration video decoding i
Depending on your system, these parameters may not be compatible. More information on hardware accelerated decoding for ffmpeg can be found here: https://trac.ffmpeg.org/wiki/HWAccelIntro
# Object Detection
## Raspberry Pi 3/4
@@ -71,7 +70,8 @@ Or map in all the `/dev/video*` devices.
| CPU Generation | Intel Driver | Recommended Preset | Notes |
| -------------- | ------------ | ------------------- | ------------------------------------ |
| gen1 - gen7 | i965 | preset-vaapi | qsv is not supported |
| gen1 - gen5 | i965 | preset-vaapi | qsv is not supported |
| gen6 - gen7 | iHD | preset-vaapi | qsv is not supported |
| gen8 - gen12 | iHD | preset-vaapi | preset-intel-qsv-\* can also be used |
| gen13+ | iHD / Xe | preset-intel-qsv-\* | |
| Intel Arc GPU | iHD / Xe | preset-intel-qsv-\* | |
@@ -175,16 +175,26 @@ For more information on the various values across different distributions, see h
Depending on your OS and kernel configuration, you may need to change the `/proc/sys/kernel/perf_event_paranoid` kernel tunable. You can test the change by running `sudo sh -c 'echo 2 >/proc/sys/kernel/perf_event_paranoid'` which will persist until a reboot. Make it permanent by running `sudo sh -c 'echo kernel.perf_event_paranoid=2 >> /etc/sysctl.d/local.conf'`
#### Stats for SR-IOV devices
#### Stats for SR-IOV or other devices
When using virtualized GPUs via SR-IOV, additional args are needed for GPU stats to function. This can be enabled with the following config:
When using virtualized GPUs via SR-IOV, you need to specify the device path to use to gather stats from `intel_gpu_top`. This example may work for some systems using SR-IOV:
```yaml
telemetry:
stats:
sriov: True
intel_gpu_device: "sriov"
```
For other virtualized GPUs, try specifying the direct path to the device instead:
```yaml
telemetry:
stats:
intel_gpu_device: "drm:/dev/dri/card0"
```
If you are passing in a device path, make sure you've passed the device through to the container.
## AMD/ATI GPUs (Radeon HD 2000 and newer GPUs) via libva-mesa-driver
VAAPI supports automatic profile selection so it will work automatically with both H.264 and H.265 streams.
@@ -218,7 +228,7 @@ Additional configuration is needed for the Docker container to be able to access
services:
frigate:
...
image: ghcr.io/blakeblackshear/frigate:stable
image: ghcr.io/blakeblackshear/frigate:stable-tensorrt
deploy: # <------------- Add this section
resources:
reservations:
@@ -236,7 +246,7 @@ docker run -d \
--name frigate \
...
--gpus=all \
ghcr.io/blakeblackshear/frigate:stable
ghcr.io/blakeblackshear/frigate:stable-tensorrt
```
### Setup Decoder
@@ -375,13 +385,8 @@ Make sure to follow the [Rockchip specific installation instructions](/frigate/i
Add one of the following FFmpeg presets to your `config.yml` to enable hardware video processing:
```yaml
# if you try to decode a h264 encoded stream
ffmpeg:
hwaccel_args: preset-rk-h264
# if you try to decode a h265 (hevc) encoded stream
ffmpeg:
hwaccel_args: preset-rk-h265
hwaccel_args: preset-rkmpp
```
:::note
@@ -389,3 +394,36 @@ ffmpeg:
Make sure that your SoC supports hardware acceleration for your input stream. For example, if your camera streams with h265 encoding and a 4k resolution, your SoC must be able to de- and encode h265 with a 4k resolution or higher. If you are unsure whether your SoC meets the requirements, take a look at the datasheet.
:::
:::warning
If one or more of your cameras are not properly processed and this error is shown in the logs:
```
[segment @ 0xaaaaff694790] Timestamps are unset in a packet for stream 0. This is deprecated and will stop working in the future. Fix your code to set the timestamps properly
[Parsed_scale_rkrga_0 @ 0xaaaaff819070] No hw context provided on input
[Parsed_scale_rkrga_0 @ 0xaaaaff819070] Failed to configure output pad on Parsed_scale_rkrga_0
Error initializing filters!
Error marking filters as finished
[out#1/rawvideo @ 0xaaaaff3d8730] Nothing was written into output file, because at least one of its streams received no packets.
Restarting ffmpeg...
```
you should try to uprade to FFmpeg 7. This can be done using this config option:
```
ffmpeg:
path: "7.0"
```
You can set this option globally to use FFmpeg 7 for all cameras or on camera level to use it only for specific cameras. Do not confuse this option with:
```
cameras:
name:
ffmpeg:
inputs:
- path: rtsp://viewer:{FRIGATE_RTSP_PASSWORD}@10.0.10.10:554/cam/realmonitor?channel=1&subtype=2
```
:::

View File

@@ -30,8 +30,7 @@ In the default mode, Frigate's LPR needs to first detect a `car` or `motorcycle`
## Minimum System Requirements
License plate recognition works by running AI models locally on your system. The models are relatively lightweight and can run on your CPU or GPU, depending on your configuration. At least 4GB of RAM is required.
License plate recognition works by running AI models locally on your system. The YOLOv9 plate detector model and the OCR models ([PaddleOCR](https://github.com/PaddlePaddle/PaddleOCR)) are relatively lightweight and can run on your CPU or GPU, depending on your configuration. At least 4GB of RAM is required.
## Configuration
License plate recognition is disabled by default. Enable it in your config file:
@@ -164,11 +163,17 @@ Dedicated LPR cameras are single-purpose cameras with powerful optical zoom to c
To mark a camera as a dedicated LPR camera, add `type: "lpr"` the camera configuration.
:::note
Frigate's dedicated LPR mode is optimized for cameras with a narrow field of view, specifically positioned and zoomed to capture license plates exclusively. If your camera provides a general overview of a scene rather than a tightly focused view, this mode is not recommended.
:::
Users can configure Frigate's dedicated LPR mode in two different ways depending on whether a Frigate+ (or native `license_plate` detecting) model is used:
### Using a Frigate+ (or Native `license_plate` Detecting) Model
Users running a Frigate+ model (or any model that natively detects `license_plate`) can take advantage of `license_plate` detection. This allows license plates to be treated as standard objects in dedicated LPR mode, meaning that alerts, detections, snapshots, zones, and other Frigate features work as usual, and plates are detected efficiently through your configured object detector.
Users running a Frigate+ model (or any model that natively detects `license_plate`) can take advantage of `license_plate` detection. This allows license plates to be treated as standard objects in dedicated LPR mode, meaning that alerts, detections, snapshots, and other Frigate features work as usual, and plates are detected efficiently through your configured object detector.
An example configuration for a dedicated LPR camera using a `license_plate`-detecting model:
@@ -213,7 +218,7 @@ cameras:
With this setup:
- License plates are treated as normal objects in Frigate.
- Scores, alerts, detections, snapshots, zones, and object masks work as expected.
- Scores, alerts, detections, and snapshots work as expected.
- Snapshots will have license plate bounding boxes on them.
- The `frigate/events` MQTT topic will publish tracked object updates.
- Debug view will display `license_plate` bounding boxes.
@@ -279,7 +284,6 @@ With this setup:
| License Plate Detection | Uses `license_plate` as a tracked object | Runs a dedicated LPR pipeline |
| FPS Setting | 5 (increase for fast-moving cars) | 5 (increase for fast-moving cars, but it may use much more CPU) |
| Object Detection | Standard Frigate+ detection applies | Bypasses standard object detection |
| Zones & Object Masks | Supported | Not supported |
| Debug View | May show `license_plate` bounding boxes | May **not** show `license_plate` bounding boxes |
| MQTT `frigate/events` | Publishes tracked object updates | Publishes limited updates |
| Explore | Recognized plates available in More Filters | Recognized plates available in More Filters |
@@ -335,19 +339,37 @@ Use `match_distance` to allow small character mismatches. Alternatively, define
### How do I debug LPR issues?
- View MQTT messages for `frigate/events` to verify detected plates.
- If you are using a Frigate+ model or a model that detects license plates, watch the debug view (Settings --> Debug) to ensure that `license_plate` is being detected with a `car` or `motorcycle`.
- Watch the debug view to see plates recognized in real-time. For non-dedicated LPR cameras, the `car` or `motorcycle` label will change to the recognized plate when LPR is enabled and working.
- Adjust `detection_threshold` and `recognition_threshold` settings per the suggestions [above](#advanced-configuration).
- Enable `debug_save_plates` to save images of detected text on plates to the clips directory (`/media/frigate/clips/lpr`). Ensure these images are readable and the text is clear.
- Enable debug logs for LPR by adding `frigate.data_processing.common.license_plate: debug` to your `logger` configuration. These logs are _very_ verbose, so only enable this when necessary.
Start with ["Why isn't my license plate being detected and recognized?"](#why-isnt-my-license-plate-being-detected-and-recognized). If you are still having issues, work through these steps.
```yaml
logger:
default: info
logs:
frigate.data_processing.common.license_plate: debug
```
1. Enable debug logs to see exactly what Frigate is doing.
- Enable debug logs for LPR by adding `frigate.data_processing.common.license_plate: debug` to your `logger` configuration. These logs are _very_ verbose, so only keep this enabled when necessary.
```yaml
logger:
default: info
logs:
frigate.data_processing.common.license_plate: debug
```
2. Ensure your plates are being _detected_.
If you are using a Frigate+ or `license_plate` detecting model:
- Watch the debug view (Settings --> Debug) to ensure that `license_plate` is being detected.
- View MQTT messages for `frigate/events` to verify detected plates.
- You may need to adjust your `min_score` and/or `threshold` for the `license_plate` object if your plates are not being detected.
If you are **not** using a Frigate+ or `license_plate` detecting model:
- Watch the debug logs for messages from the YOLOv9 plate detector.
- You may need to adjust your `detection_threshold` if your plates are not being detected.
3. Ensure the characters on detected plates are being _recognized_.
- Enable `debug_save_plates` to save images of detected text on plates to the clips directory (`/media/frigate/clips/lpr`). Ensure these images are readable and the text is clear.
- Watch the debug view to see plates recognized in real-time. For non-dedicated LPR cameras, the `car` or `motorcycle` label will change to the recognized plate when LPR is enabled and working.
- Adjust `recognition_threshold` settings per the suggestions [above](#advanced-configuration).
### Will LPR slow down my system?

View File

@@ -15,7 +15,7 @@ The jsmpeg live view will use more browser and client GPU resources. Using go2rt
| ------ | ------------------------------------- | ---------- | ---------------------------- | --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| jsmpeg | same as `detect -> fps`, capped at 10 | 720p | no | no | Resolution is configurable, but go2rtc is recommended if you want higher resolutions and better frame rates. jsmpeg is Frigate's default without go2rtc configured. |
| mse | native | native | yes (depends on audio codec) | yes | iPhone requires iOS 17.1+, Firefox is h.264 only. This is Frigate's default when go2rtc is configured. |
| webrtc | native | native | yes (depends on audio codec) | yes | Requires extra configuration, doesn't support h.265. Frigate attempts to use WebRTC when MSE fails or when using a camera's two-way talk feature. |
| webrtc | native | native | yes (depends on audio codec) | yes | Requires extra configuration. Frigate attempts to use WebRTC when MSE fails or when using a camera's two-way talk feature. |
### Camera Settings Recommendations
@@ -23,7 +23,7 @@ If you are using go2rtc, you should adjust the following settings in your camera
- Video codec: **H.264** - provides the most compatible video codec with all Live view technologies and browsers. Avoid any kind of "smart codec" or "+" codec like _H.264+_ or _H.265+_. as these non-standard codecs remove keyframes (see below).
- Audio codec: **AAC** - provides the most compatible audio codec with all Live view technologies and browsers that support audio.
- I-frame interval (sometimes called the keyframe interval, the interframe space, or the GOP length): match your camera's frame rate, or choose "1x" (for interframe space on Reolink cameras). For example, if your stream outputs 20fps, your i-frame interval should be 20 (or 1x on Reolink). Values higher than the frame rate will cause the stream to take longer to begin playback. See [this page](https://gardinal.net/understanding-the-keyframe-interval/) for more on keyframes. For many users this may not be an issue, but it should be noted that that a 1x i-frame interval will cause more storage utilization if you are using the stream for the `record` role as well.
- I-frame interval (sometimes called the keyframe interval, the interframe space, or the GOP length): match your camera's frame rate, or choose "1x" (for interframe space on Reolink cameras). For example, if your stream outputs 20fps, your i-frame interval should be 20 (or 1x on Reolink). Values higher than the frame rate will cause the stream to take longer to begin playback. See [this page](https://gardinal.net/understanding-the-keyframe-interval/) for more on keyframes. For many users this may not be an issue, but it should be noted that a 1x i-frame interval will cause more storage utilization if you are using the stream for the `record` role as well.
The default video and audio codec on your camera may not always be compatible with your browser, which is why setting them to H.264 and AAC is recommended. See the [go2rtc docs](https://github.com/AlexxIT/go2rtc?tab=readme-ov-file#codecs-madness) for codec support information.
@@ -127,7 +127,8 @@ WebRTC works by creating a TCP or UDP connection on port `8555`. However, it req
```
- For access through Tailscale, the Frigate system's Tailscale IP must be added as a WebRTC candidate. Tailscale IPs all start with `100.`, and are reserved within the `100.64.0.0/10` CIDR block.
- Note that WebRTC does not support H.265.
- Note that some browsers may not support H.265 (HEVC). You can check your browser's current version for H.265 compatibility [here](https://github.com/AlexxIT/go2rtc?tab=readme-ov-file#codecs-madness).
:::tip
@@ -172,9 +173,9 @@ For devices that support two way talk, Frigate can be configured to use the feat
- Set up go2rtc with [WebRTC](#webrtc-extra-configuration).
- Ensure you access Frigate via https (may require [opening port 8971](/frigate/installation/#ports)).
- For the Home Assistant Frigate card, [follow the docs](https://github.com/dermotduffy/frigate-hass-card?tab=readme-ov-file#using-2-way-audio) for the correct source.
- For the Home Assistant Frigate card, [follow the docs](http://card.camera/#/usage/2-way-audio) for the correct source.
To use the Reolink Doorbell with two way talk, you should use the [recommended Reolink configuration](/configuration/camera_specific#reolink-doorbell)
To use the Reolink Doorbell with two way talk, you should use the [recommended Reolink configuration](/configuration/camera_specific#reolink-cameras)
### Streaming options on camera group dashboards
@@ -189,7 +190,12 @@ Frigate provides a dialog in the Camera Group Edit pane with several options for
:::note
The default dashboard ("All Cameras") will always use Smart Streaming and the first entry set in your `streams` configuration, if defined. Use a camera group if you want to change any of these settings from the defaults.
The default dashboard ("All Cameras") will always use:
- Smart Streaming, unless you've disabled the global Automatic Live View in Settings.
- The first entry set in your `streams` configuration, if defined.
Use a camera group if you want to change any of these settings from the defaults.
:::
@@ -197,6 +203,12 @@ The default dashboard ("All Cameras") will always use Smart Streaming and the fi
Cameras can be temporarily disabled through the Frigate UI and through [MQTT](/integrations/mqtt#frigatecamera_nameenabledset) to conserve system resources. When disabled, Frigate's ffmpeg processes are terminated — recording stops, object detection is paused, and the Live dashboard displays a blank image with a disabled message. Review items, tracked objects, and historical footage for disabled cameras can still be accessed via the UI.
:::note
Disabling a camera via the Frigate UI or MQTT is temporary and does not persist through restarts of Frigate.
:::
For restreamed cameras, go2rtc remains active but does not use system resources for decoding or processing unless there are active external consumers (such as the Advanced Camera Card in Home Assistant using a go2rtc source).
Note that disabling a camera through the config file (`enabled: False`) removes all related UI elements, including historical footage access. To retain access while disabling the camera, keep it enabled in the config and use the UI or MQTT to disable it temporarily.
@@ -240,3 +252,7 @@ Note that disabling a camera through the config file (`enabled: False`) removes
6. **I have unmuted some cameras on my dashboard, but I do not hear sound. Why?**
If your camera is streaming (as indicated by a red dot in the upper right, or if it has been set to continuous streaming mode), your browser may be blocking audio until you interact with the page. This is an intentional browser limitation. See [this article](https://developer.mozilla.org/en-US/docs/Web/Media/Autoplay_guide#autoplay_availability). Many browsers have a whitelist feature to change this behavior.
7. **My camera streams have lots of visual artifacts / distortion.**
Some cameras don't include the hardware to support multiple connections to the high resolution stream, and this can cause unexpected behavior. In this case it is recommended to [restream](./restream.md) the high resolution stream so that it can be used for live view and recordings.

View File

@@ -104,4 +104,4 @@ Lightning threshold does not stop motion based recordings from being saved.
:::
Large changes in motion like PTZ moves and camera switches between Color and IR mode should result in no motion detection. This is done via the `lightning_threshold` configuration. It is defined as the percentage of the image used to detect lightning or other substantial changes where motion detection needs to recalibrate. Increasing this value will make motion detection more likely to consider lightning or IR mode changes as valid motion. Decreasing this value will make motion detection more likely to ignore large amounts of motion such as a person approaching a doorbell camera.
Large changes in motion like PTZ moves and camera switches between Color and IR mode should result in a pause in object detection. This is done via the `lightning_threshold` configuration. It is defined as the percentage of the image used to detect lightning or other substantial changes where motion detection needs to recalibrate. Increasing this value will make motion detection more likely to consider lightning or IR mode changes as valid motion. Decreasing this value will make motion detection more likely to ignore large amounts of motion such as a person approaching a doorbell camera.

View File

@@ -24,10 +24,14 @@ Frigate supports multiple different detectors that work on different types of ha
- [OpenVino](#openvino-detector): OpenVino can run on Intel Arc GPUs, Intel integrated GPUs, and Intel CPUs to provide efficient object detection.
- [ONNX](#onnx): OpenVINO will automatically be detected and used as a detector in the default Frigate image when a supported ONNX model is configured.
**Nvidia**
**Nvidia GPU**
- [TensortRT](#nvidia-tensorrt-detector): TensorRT can run on Nvidia GPUs and Jetson devices, using one of many default models.
- [ONNX](#onnx): TensorRT will automatically be detected and used as a detector in the `-tensorrt` or `-tensorrt-jp6` Frigate images when a supported ONNX model is configured.
- [ONNX](#onnx): TensorRT will automatically be detected and used as a detector in the `-tensorrt` Frigate image when a supported ONNX model is configured.
**Nvidia Jetson**
- [TensortRT](#nvidia-tensorrt-detector): TensorRT can run on Jetson devices, using one of many default models.
- [ONNX](#onnx): TensorRT will automatically be detected and used as a detector in the `-tensorrt-jp6` Frigate image when a supported ONNX model is configured.
**Rockchip**
@@ -322,6 +326,12 @@ The YOLO detector has been designed to support YOLOv3, YOLOv4, YOLOv7, and YOLOv
:::
:::warning
If you are using a Frigate+ YOLOv9 model, you should not define any of the below `model` parameters in your config except for `path`. See [the Frigate+ model docs](/plus/first_model#step-3-set-your-model-id-in-the-config) for more information on setting up your model.
:::
After placing the downloaded onnx model in your config folder, you can use the following configuration:
```yaml
@@ -362,8 +372,8 @@ detectors:
model:
model_type: rfdetr
width: 560
height: 560
width: 320
height: 320
input_tensor: nchw
input_dtype: float
path: /config/model_cache/rfdetr.onnx
@@ -385,7 +395,7 @@ After placing the downloaded onnx model in your config/model_cache folder, you c
detectors:
ov:
type: openvino
device: GPU
device: CPU
model:
model_type: dfine
@@ -399,111 +409,6 @@ model:
Note that the labelmap uses a subset of the complete COCO label set that has only 80 objects.
## NVidia TensorRT Detector
Nvidia GPUs may be used for object detection using the TensorRT libraries. Due to the size of the additional libraries, this detector is only provided in images with the `-tensorrt` tag suffix, e.g. `ghcr.io/blakeblackshear/frigate:stable-tensorrt`. This detector is designed to work with Yolo models for object detection.
### Minimum Hardware Support
The TensorRT detector uses the 12.x series of CUDA libraries which have minor version compatibility. The minimum driver version on the host system must be `>=545`. Also the GPU must support a Compute Capability of `5.0` or greater. This generally correlates to a Maxwell-era GPU or newer, check the NVIDIA GPU Compute Capability table linked below.
To use the TensorRT detector, make sure your host system has the [nvidia-container-runtime](https://docs.docker.com/config/containers/resource_constraints/#access-an-nvidia-gpu) installed to pass through the GPU to the container and the host system has a compatible driver installed for your GPU.
There are improved capabilities in newer GPU architectures that TensorRT can benefit from, such as INT8 operations and Tensor cores. The features compatible with your hardware will be optimized when the model is converted to a trt file. Currently the script provided for generating the model provides a switch to enable/disable FP16 operations. If you wish to use newer features such as INT8 optimization, more work is required.
#### Compatibility References:
[NVIDIA TensorRT Support Matrix](https://docs.nvidia.com/deeplearning/tensorrt/archives/tensorrt-841/support-matrix/index.html)
[NVIDIA CUDA Compatibility](https://docs.nvidia.com/deploy/cuda-compatibility/index.html)
[NVIDIA GPU Compute Capability](https://developer.nvidia.com/cuda-gpus)
### Generate Models
The model used for TensorRT must be preprocessed on the same hardware platform that they will run on. This means that each user must run additional setup to generate a model file for the TensorRT library. A script is included that will build several common models.
The Frigate image will generate model files during startup if the specified model is not found. Processed models are stored in the `/config/model_cache` folder. Typically the `/config` path is mapped to a directory on the host already and the `model_cache` does not need to be mapped separately unless the user wants to store it in a different location on the host.
By default, no models will be generated, but this can be overridden by specifying the `YOLO_MODELS` environment variable in Docker. One or more models may be listed in a comma-separated format, and each one will be generated. Models will only be generated if the corresponding `{model}.trt` file is not present in the `model_cache` folder, so you can force a model to be regenerated by deleting it from your Frigate data folder.
If you have a Jetson device with DLAs (Xavier or Orin), you can generate a model that will run on the DLA by appending `-dla` to your model name, e.g. specify `YOLO_MODELS=yolov7-320-dla`. The model will run on DLA0 (Frigate does not currently support DLA1). DLA-incompatible layers will fall back to running on the GPU.
If your GPU does not support FP16 operations, you can pass the environment variable `USE_FP16=False` to disable it.
Specific models can be selected by passing an environment variable to the `docker run` command or in your `docker-compose.yml` file. Use the form `-e YOLO_MODELS=yolov4-416,yolov4-tiny-416` to select one or more model names. The models available are shown below.
<details>
<summary>Available Models</summary>
```
yolov3-288
yolov3-416
yolov3-608
yolov3-spp-288
yolov3-spp-416
yolov3-spp-608
yolov3-tiny-288
yolov3-tiny-416
yolov4-288
yolov4-416
yolov4-608
yolov4-csp-256
yolov4-csp-512
yolov4-p5-448
yolov4-p5-896
yolov4-tiny-288
yolov4-tiny-416
yolov4x-mish-320
yolov4x-mish-640
yolov7-tiny-288
yolov7-tiny-416
yolov7-640
yolov7-416
yolov7-320
yolov7x-640
yolov7x-320
```
</details>
An example `docker-compose.yml` fragment that converts the `yolov4-608` and `yolov7x-640` models for a Pascal card would look something like this:
```yml
frigate:
environment:
- YOLO_MODELS=yolov7-320,yolov7x-640
- USE_FP16=false
```
If you have multiple GPUs passed through to Frigate, you can specify which one to use for the model conversion. The conversion script will use the first visible GPU, however in systems with mixed GPU models you may not want to use the default index for object detection. Add the `TRT_MODEL_PREP_DEVICE` environment variable to select a specific GPU.
```yml
frigate:
environment:
- TRT_MODEL_PREP_DEVICE=0 # Optionally, select which GPU is used for model optimization
```
### Configuration Parameters
The TensorRT detector can be selected by specifying `tensorrt` as the model type. The GPU will need to be passed through to the docker container using the same methods described in the [Hardware Acceleration](hardware_acceleration_video.md#nvidia-gpus) section. If you pass through multiple GPUs, you can select which GPU is used for a detector with the `device` configuration parameter. The `device` parameter is an integer value of the GPU index, as shown by `nvidia-smi` within the container.
The TensorRT detector uses `.trt` model files that are located in `/config/model_cache/tensorrt` by default. These model path and dimensions used will depend on which model you have generated.
Use the config below to work with generated TRT models:
```yaml
detectors:
tensorrt:
type: tensorrt
device: 0 #This is the default, select the first GPU
model:
path: /config/model_cache/tensorrt/yolov7-320.trt
input_tensor: nchw
input_pixel_format: rgb
width: 320
height: 320
```
## AMD/ROCm GPU detector
### Setup
@@ -526,10 +431,10 @@ When using Docker Compose:
```yaml
services:
frigate:
---
devices:
- /dev/dri
- /dev/kfd
...
devices:
- /dev/dri
- /dev/kfd
```
For reference on recommended settings see [running ROCm/pytorch in Docker](https://rocm.docs.amd.com/projects/install-on-linux/en/develop/how-to/3rd-party/pytorch-install.html#using-docker-with-pytorch-pre-installed).
@@ -542,14 +447,13 @@ Also AMD/ROCm does not "officially" support integrated GPUs. It still does work
For the rocm frigate build there is some automatic detection:
- gfx90c -> 9.0.0
- gfx1031 -> 10.3.0
- gfx1103 -> 11.0.0
If you have something else you might need to override the `HSA_OVERRIDE_GFX_VERSION` at Docker launch. Suppose the version you want is `9.0.0`, then you should configure it from command line as:
If you have something else you might need to override the `HSA_OVERRIDE_GFX_VERSION` at Docker launch. Suppose the version you want is `10.0.0`, then you should configure it from command line as:
```bash
$ docker run -e HSA_OVERRIDE_GFX_VERSION=9.0.0 \
$ docker run -e HSA_OVERRIDE_GFX_VERSION=10.0.0 \
...
```
@@ -558,9 +462,9 @@ When using Docker Compose:
```yaml
services:
frigate:
environment:
HSA_OVERRIDE_GFX_VERSION: "9.0.0"
...
environment:
HSA_OVERRIDE_GFX_VERSION: "10.0.0"
```
Figuring out what version you need can be complicated as you can't tell the chipset name and driver from the AMD brand name.
@@ -636,6 +540,12 @@ There is no default model provided, the following formats are supported:
[YOLO-NAS](https://github.com/Deci-AI/super-gradients/blob/master/YOLONAS.md) models are supported, but not included by default. See [the models section](#downloading-yolo-nas-model) for more information on downloading the YOLO-NAS model for use in Frigate.
:::warning
If you are using a Frigate+ YOLO-NAS model, you should not define any of the below `model` parameters in your config except for `path`. See [the Frigate+ model docs](/plus/first_model#step-3-set-your-model-id-in-the-config) for more information on setting up your model.
:::
After placing the downloaded onnx model in your config folder, you can use the following configuration:
```yaml
@@ -663,6 +573,12 @@ The YOLO detector has been designed to support YOLOv3, YOLOv4, YOLOv7, and YOLOv
:::
:::warning
If you are using a Frigate+ YOLOv9 model, you should not define any of the below `model` parameters in your config except for `path`. See [the Frigate+ model docs](/plus/first_model#step-3-set-your-model-id-in-the-config) for more information on setting up your model.
:::
After placing the downloaded onnx model in your config folder, you can use the following configuration:
```yaml
@@ -718,8 +634,8 @@ detectors:
model:
model_type: rfdetr
width: 560
height: 560
width: 320
height: 320
input_tensor: nchw
input_dtype: float
path: /config/model_cache/rfdetr.onnx
@@ -801,6 +717,88 @@ To verify that the integration is working correctly, start Frigate and observe t
# Community Supported Detectors
## NVidia TensorRT Detector
Nvidia Jetson devices may be used for object detection using the TensorRT libraries. Due to the size of the additional libraries, this detector is only provided in images with the `-tensorrt-jp6` tag suffix, e.g. `ghcr.io/blakeblackshear/frigate:stable-tensorrt-jp6`. This detector is designed to work with Yolo models for object detection.
### Generate Models
The model used for TensorRT must be preprocessed on the same hardware platform that they will run on. This means that each user must run additional setup to generate a model file for the TensorRT library. A script is included that will build several common models.
The Frigate image will generate model files during startup if the specified model is not found. Processed models are stored in the `/config/model_cache` folder. Typically the `/config` path is mapped to a directory on the host already and the `model_cache` does not need to be mapped separately unless the user wants to store it in a different location on the host.
By default, no models will be generated, but this can be overridden by specifying the `YOLO_MODELS` environment variable in Docker. One or more models may be listed in a comma-separated format, and each one will be generated. Models will only be generated if the corresponding `{model}.trt` file is not present in the `model_cache` folder, so you can force a model to be regenerated by deleting it from your Frigate data folder.
If you have a Jetson device with DLAs (Xavier or Orin), you can generate a model that will run on the DLA by appending `-dla` to your model name, e.g. specify `YOLO_MODELS=yolov7-320-dla`. The model will run on DLA0 (Frigate does not currently support DLA1). DLA-incompatible layers will fall back to running on the GPU.
If your GPU does not support FP16 operations, you can pass the environment variable `USE_FP16=False` to disable it.
Specific models can be selected by passing an environment variable to the `docker run` command or in your `docker-compose.yml` file. Use the form `-e YOLO_MODELS=yolov4-416,yolov4-tiny-416` to select one or more model names. The models available are shown below.
<details>
<summary>Available Models</summary>
```
yolov3-288
yolov3-416
yolov3-608
yolov3-spp-288
yolov3-spp-416
yolov3-spp-608
yolov3-tiny-288
yolov3-tiny-416
yolov4-288
yolov4-416
yolov4-608
yolov4-csp-256
yolov4-csp-512
yolov4-p5-448
yolov4-p5-896
yolov4-tiny-288
yolov4-tiny-416
yolov4x-mish-320
yolov4x-mish-640
yolov7-tiny-288
yolov7-tiny-416
yolov7-640
yolov7-416
yolov7-320
yolov7x-640
yolov7x-320
```
</details>
An example `docker-compose.yml` fragment that converts the `yolov4-608` and `yolov7x-640` models would look something like this:
```yml
frigate:
environment:
- YOLO_MODELS=yolov7-320,yolov7x-640
- USE_FP16=false
```
### Configuration Parameters
The TensorRT detector can be selected by specifying `tensorrt` as the model type. The GPU will need to be passed through to the docker container using the same methods described in the [Hardware Acceleration](hardware_acceleration_video.md#nvidia-gpus) section. If you pass through multiple GPUs, you can select which GPU is used for a detector with the `device` configuration parameter. The `device` parameter is an integer value of the GPU index, as shown by `nvidia-smi` within the container.
The TensorRT detector uses `.trt` model files that are located in `/config/model_cache/tensorrt` by default. These model path and dimensions used will depend on which model you have generated.
Use the config below to work with generated TRT models:
```yaml
detectors:
tensorrt:
type: tensorrt
device: 0 #This is the default, select the first GPU
model:
path: /config/model_cache/tensorrt/yolov7-320.trt
labelmap_path: /labelmap/coco-80.txt
input_tensor: nchw
input_pixel_format: rgb
width: 320 # MUST match the chosen model i.e yolov7-320 -> 320, yolov4-416 -> 416
height: 320 # MUST match the chosen model i.e yolov7-320 -> 320 yolov4-416 -> 416
```
## Rockchip platform
Hardware accelerated object detection is supported on the following SoCs:
@@ -914,7 +912,6 @@ model: # required
width: 320
height: 320
input_tensor: nhwc
input_dtype: float
labelmap_path: /labelmap/coco-80.txt
```
@@ -981,50 +978,52 @@ Here are some tips for getting different model types
### Downloading D-FINE Model
To export as ONNX:
D-FINE can be exported as ONNX by running the command below. You can copy and paste the whole thing to your terminal and execute, altering `MODEL_SIZE=s` in the first line to `s`, `m`, or `l` size.
1. Clone: https://github.com/Peterande/D-FINE and install all dependencies.
2. Select and download a checkpoint from the [readme](https://github.com/Peterande/D-FINE).
3. Modify line 58 of `tools/deployment/export_onnx.py` and change batch size to 1: `data = torch.rand(1, 3, 640, 640)`
4. Run the export, making sure you select the right config, for your checkpoint.
Example:
```
python3 tools/deployment/export_onnx.py -c configs/dfine/objects365/dfine_hgnetv2_m_obj2coco.yml -r output/dfine_m_obj2coco.pth
```sh
docker build . --build-arg MODEL_SIZE=s --output . -f- <<'EOF'
FROM python:3.11 AS build
RUN apt-get update && apt-get install --no-install-recommends -y libgl1 && rm -rf /var/lib/apt/lists/*
COPY --from=ghcr.io/astral-sh/uv:0.8.0 /uv /bin/
WORKDIR /dfine
RUN git clone https://github.com/Peterande/D-FINE.git .
RUN uv pip install --system -r requirements.txt
RUN uv pip install --system onnx onnxruntime onnxsim onnxscript
# Create output directory and download checkpoint
RUN mkdir -p output
ARG MODEL_SIZE
RUN wget https://github.com/Peterande/storage/releases/download/dfinev1.0/dfine_${MODEL_SIZE}_obj2coco.pth -O output/dfine_${MODEL_SIZE}_obj2coco.pth
# Modify line 58 of export_onnx.py to change batch size to 1
RUN sed -i '58s/data = torch.rand(.*)/data = torch.rand(1, 3, 640, 640)/' tools/deployment/export_onnx.py
RUN python3 tools/deployment/export_onnx.py -c configs/dfine/objects365/dfine_hgnetv2_${MODEL_SIZE}_obj2coco.yml -r output/dfine_${MODEL_SIZE}_obj2coco.pth
FROM scratch
ARG MODEL_SIZE
COPY --from=build /dfine/output/dfine_${MODEL_SIZE}_obj2coco.onnx /dfine-${MODEL_SIZE}.onnx
EOF
```
:::tip
### Downloading RF-DETR Model
Model export has only been tested on Linux (or WSL2). Not all dependencies are in `requirements.txt`. Some live in the deployment folder, and some are still missing entirely and must be installed manually.
RF-DETR can be exported as ONNX by running the command below. You can copy and paste the whole thing to your terminal and execute, altering `MODEL_SIZE=Nano` in the first line to `Nano`, `Small`, or `Medium` size.
Make sure you change the batch size to 1 before exporting.
:::
### Download RF-DETR Model
To export as ONNX:
1. `pip3 install rfdetr`
2. `python3`
3. `from rfdetr import RFDETRBase`
4. `x = RFDETRBase()`
5. `x.export()`
#### Additional Configuration
The input tensor resolution can be customized:
```python
from rfdetr import RFDETRBase
x = RFDETRBase(resolution=560) # resolution must be a multiple of 56
x.export()
```sh
docker build . --build-arg MODEL_SIZE=Nano --rm --output . -f- <<'EOF'
FROM python:3.11 AS build
RUN apt-get update && apt-get install --no-install-recommends -y libgl1 && rm -rf /var/lib/apt/lists/*
COPY --from=ghcr.io/astral-sh/uv:0.8.0 /uv /bin/
WORKDIR /rfdetr
RUN uv pip install --system rfdetr[onnxexport] torch==2.8.0 onnx==1.19.1 onnxscript
ARG MODEL_SIZE
RUN python3 -c "from rfdetr import RFDETR${MODEL_SIZE}; x = RFDETR${MODEL_SIZE}(resolution=320); x.export(simplify=True)"
FROM scratch
ARG MODEL_SIZE
COPY --from=build /rfdetr/output/inference_model.onnx /rfdetr-${MODEL_SIZE}.onnx
EOF
```
### Downloading YOLO-NAS Model
You can build and download a compatible model with pre-trained weights using [this notebook](https://github.com/blakeblackshear/frigate/blob/dev/notebooks/YOLO_NAS_Pretrained_Export.ipynb) [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/blakeblackshear/frigate/blob/dev/notebooks/YOLO_NAS_Pretrained_Export.ipynb).
You can build and download a compatible model with pre-trained weights using [this notebook](https://github.com/blakeblackshear/frigate/blob/dev/notebooks/YOLO_NAS_Pretrained_Export.ipynb) [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/blakeblackshear/frigate/blob/dev/notebooks/YOLO_NAS_Pretrained_Export.ipynb) which can be run directly in [Google Colab](https://colab.research.google.com/github/blakeblackshear/frigate/blob/dev/notebooks/YOLO_NAS_Pretrained_Export.ipynb).
:::warning
@@ -1053,21 +1052,25 @@ python3 yolo_to_onnx.py -m yolov7-320
#### YOLOv9
YOLOv9 models can be exported using the below code or they [can be downloaded from hugging face](https://huggingface.co/Xenova/yolov9-onnx/tree/main)
YOLOv9 model can be exported as ONNX using the command below. You can copy and paste the whole thing to your terminal and execute, altering `MODEL_SIZE=t` and `IMG_SIZE=320` in the first line to the [model size](https://github.com/WongKinYiu/yolov9#performance) you would like to convert (available model sizes are `t`, `s`, `m`, `c`, and `e`, common image sizes are `320` and `640`).
```sh
git clone https://github.com/WongKinYiu/yolov9
cd yolov9
# setup the virtual environment so installation doesn't affect main system
python3 -m venv ./
bin/pip install -r requirements.txt
bin/pip install onnx onnxruntime onnx-simplifier>=0.4.1
# download the weights
wget -O yolov9-t.pt "https://github.com/WongKinYiu/yolov9/releases/download/v0.1/yolov9-t-converted.pt" # download the weights
# prepare and run export script
sed -i "s/ckpt = torch.load(attempt_download(w), map_location='cpu')/ckpt = torch.load(attempt_download(w), map_location='cpu', weights_only=False)/g" ./models/experimental.py
bin/python3 export.py --weights ./yolov9-t.pt --imgsz 320 --simplify --include onnx
docker build . --build-arg MODEL_SIZE=t --build-arg IMG_SIZE=320 --output . -f- <<'EOF'
FROM python:3.11 AS build
RUN apt-get update && apt-get install --no-install-recommends -y libgl1 && rm -rf /var/lib/apt/lists/*
COPY --from=ghcr.io/astral-sh/uv:0.8.0 /uv /bin/
WORKDIR /yolov9
ADD https://github.com/WongKinYiu/yolov9.git .
RUN uv pip install --system -r requirements.txt
RUN uv pip install --system onnx==1.18.0 onnxruntime onnx-simplifier>=0.4.1 onnxscript
ARG MODEL_SIZE
ARG IMG_SIZE
ADD https://github.com/WongKinYiu/yolov9/releases/download/v0.1/yolov9-${MODEL_SIZE}-converted.pt yolov9-${MODEL_SIZE}.pt
RUN sed -i "s/ckpt = torch.load(attempt_download(w), map_location='cpu')/ckpt = torch.load(attempt_download(w), map_location='cpu', weights_only=False)/g" models/experimental.py
RUN python3 export.py --weights ./yolov9-${MODEL_SIZE}.pt --imgsz ${IMG_SIZE} --simplify --include onnx
FROM scratch
ARG MODEL_SIZE
ARG IMG_SIZE
COPY --from=build /yolov9/yolov9-${MODEL_SIZE}.onnx /yolov9-${MODEL_SIZE}-${IMG_SIZE}.onnx
EOF
```

View File

@@ -11,7 +11,7 @@ This adds features including the ability to deep link directly into the app.
In order to install Frigate as a PWA, the following requirements must be met:
- Frigate must be accessed via a secure context (localhost, secure https, etc.)
- Frigate must be accessed via a secure context (localhost, secure https, VPN, etc.)
- On Android, Firefox, Chrome, Edge, Opera, and Samsung Internet Browser all support installing PWAs.
- On iOS 16.4 and later, PWAs can be installed from the Share menu in Safari, Chrome, Edge, Firefox, and Orion.
@@ -20,5 +20,9 @@ In order to install Frigate as a PWA, the following requirements must be met:
Installation varies slightly based on the device that is being used:
- Desktop: Use the install button typically found in right edge of the address bar
- Android: Use the `Install as App` button in the more options menu
- iOS: Use the `Add to Homescreen` button in the share menu
- Android: Use the `Install as App` button in the more options menu for Chrome, and the `Add app to Home screen` button for Firefox
- iOS: Use the `Add to Homescreen` button in the share menu
## Usage
Once setup, the Frigate app can be used wherever it has access to Frigate. This means it can be setup as local-only, VPN-only, or fully accessible depending on your needs.

View File

@@ -91,6 +91,8 @@ proxy:
auth_secret: None
# Optional: The default role to use for proxy auth. Must be "admin" or "viewer"
default_role: viewer
# Optional: The character used to separate multiple values in the proxy headers. (default: shown below)
separator: ","
# Optional: Authentication configuration
auth:
@@ -436,7 +438,7 @@ record:
# Optional: Number of minutes to wait between cleanup runs (default: shown below)
# This can be used to reduce the frequency of deleting recording segments from disk if you want to minimize i/o
expire_interval: 60
# Optional: Sync recordings with disk on startup and once a day (default: shown below).
# Optional: Two-way sync recordings database with disk on startup and once a day (default: shown below).
sync_recordings: False
# Optional: Retention settings for recording
retain:
@@ -559,6 +561,8 @@ face_recognition:
recognition_threshold: 0.9
# Optional: Min area of detected face box to consider running face recognition (default: shown below)
min_area: 500
# Optional: Min face recognitions for the sub label to be applied to the person object (default: shown below)
min_faces: 1
# Optional: Number of images of recognized faces to save for training (default: shown below)
save_attempts: 100
# Optional: Apply a blur quality filter to adjust confidence based on the blur level of the image (default: shown below)
@@ -899,7 +903,7 @@ telemetry:
# Optional: Enable Intel GPU stats (default: shown below)
intel_gpu_stats: True
# Optional: Treat GPU as SR-IOV to fix GPU stats (default: shown below)
sriov: False
intel_gpu_device: None
# Optional: Enable network bandwidth stats monitoring for camera ffmpeg processes, go2rtc, and object detectors. (default: shown below)
# NOTE: The container must either be privileged or have cap_net_admin, cap_net_raw capabilities enabled.
network_bandwidth: False

View File

@@ -21,6 +21,21 @@ In 0.14 and later, all of that is bundled into a single review item which starts
Not every segment of video captured by Frigate may be of the same level of interest to you. Video of people who enter your property may be a different priority than those walking by on the sidewalk. For this reason, Frigate 0.14 categorizes review items as _alerts_ and _detections_. By default, all person and car objects are considered alerts. You can refine categorization of your review items by configuring required zones for them.
:::note
Alerts and detections categorize the tracked objects in review items, but Frigate must first detect those objects with your configured object detector (Coral, OpenVINO, etc). By default, the object tracker only detects `person`. Setting `labels` for `alerts` and `detections` does not automatically enable detection of new objects. To detect more than `person`, you should add the following to your config:
```yaml
objects:
track:
- person
- car
- ...
```
See the [objects documentation](objects.md) for the list of objects that Frigate's default model tracks.
:::
## Restricting alerts to specific labels
By default a review item will only be marked as an alert if a person or car is detected. This can be configured to include any object or audio label using the following config:

View File

@@ -19,7 +19,7 @@ For best performance, 16GB or more of RAM and a dedicated GPU are recommended.
## Configuration
Semantic Search is disabled by default, and must be enabled in your config file or in the UI's Classification Settings page before it can be used. Semantic Search is a global configuration setting.
Semantic Search is disabled by default, and must be enabled in your config file or in the UI's Enrichments Settings page before it can be used. Semantic Search is a global configuration setting.
```yaml
semantic_search:
@@ -29,7 +29,7 @@ semantic_search:
:::tip
The embeddings database can be re-indexed from the existing tracked objects in your database by pressing the "Reindex" button in the Classification Settings in the UI or by adding `reindex: True` to your `semantic_search` configuration and restarting Frigate. Depending on the number of tracked objects you have, it can take a long while to complete and may max out your CPU while indexing.
The embeddings database can be re-indexed from the existing tracked objects in your database by pressing the "Reindex" button in the Enrichments Settings in the UI or by adding `reindex: True` to your `semantic_search` configuration and restarting Frigate. Depending on the number of tracked objects you have, it can take a long while to complete and may max out your CPU while indexing.
If you are enabling Semantic Search for the first time, be advised that Frigate does not automatically index older tracked objects. You will need to reindex as described above.

View File

@@ -36,8 +36,8 @@ Note that certbot uses symlinks, and those can't be followed by the container un
frigate:
...
volumes:
- /etc/letsencrypt/live/frigate:/etc/letsencrypt/live/frigate:ro
- /etc/letsencrypt/archive/frigate:/etc/letsencrypt/archive/frigate:ro
- /etc/letsencrypt/live/your.fqdn.net:/etc/letsencrypt/live/frigate:ro
- /etc/letsencrypt/archive/your.fqdn.net:/etc/letsencrypt/archive/your.fqdn.net:ro
...
```

View File

@@ -136,7 +136,7 @@ Your zone must be defined with exactly 4 points and should be aligned to the gro
![Ground plane 4-point zone](/img/ground-plane.jpg)
Speed estimation requires a minimum number of frames for your object to be tracked before a valid estimate can be calculated, so create your zone away from places where objects enter and exit for the best results. _Your zone should not take up the full frame._ An object's speed is tracked while it is in the zone and then saved to Frigate's database.
Speed estimation requires a minimum number of frames for your object to be tracked before a valid estimate can be calculated, so create your zone away from places where objects enter and exit for the best results. The object's bounding box must be stable and remain a constant size as it enters and exits the zone. _Your zone should not take up the full frame, and the zone does **not** need to be the same size or larger than the objects passing through it._ An object's speed is tracked while it passes through the zone and then saved to Frigate's database.
Accurate real-world distance measurements are required to estimate speeds. These distances can be specified in your zone config through the `distances` field.
@@ -165,8 +165,9 @@ These speed values are output as a number in miles per hour (mph) or kilometers
#### Best practices and caveats
- Speed estimation works best with a straight road or path when your object travels in a straight line across that path. Avoid creating your zone near intersections or anywhere that objects would make a turn. If the bounding box changes shape (either because the object made a turn or became partially obscured, for example), speed estimation will not be accurate.
- Create a zone where the bottom center of your object's bounding box travels directly through it and does not become obscured at any time. See the photo example above.
- Speed estimation works best with a straight road or path when your object travels in a straight line across that path. Avoid creating your zone near intersections or anywhere that objects would make a turn.
- Create a zone where the bottom center of your object's bounding box travels directly through it and does not become obscured at any time.
- A large zone can be used (as in the photo example above), but it may cause inaccurate estimation if the object's bounding box changes shape (such as when it turns or becomes partially hidden). Generally it's best to make your zone large enough to capture a few frames, but small enough so that the bounding box doesn't change size as it enters, travels through, and exits the zone.
- Depending on the size and location of your zone, you may want to decrease the zone's `inertia` value from the default of 3.
- The more accurate your real-world dimensions can be measured, the more accurate speed estimation will be. However, due to the way Frigate's tracking algorithm works, you may need to tweak the real-world distance values so that estimated speeds better match real-world speeds.
- Once an object leaves the zone, speed accuracy will likely decrease due to perspective distortion and misalignment with the calibrated area. Therefore, speed values will show as a zero through MQTT and will not be visible on the debug view when an object is outside of a speed tracking zone.

View File

@@ -3,7 +3,7 @@ id: camera_setup
title: Camera setup
---
Cameras configured to output H.264 video and AAC audio will offer the most compatibility with all features of Frigate and Home Assistant. H.265 has better compression, but less compatibility. Chrome 108+, Safari and Edge are the only browsers able to play H.265 and only support a limited number of H.265 profiles. Ideally, cameras should be configured directly for the desired resolutions and frame rates you want to use in Frigate. Reducing frame rates within Frigate will waste CPU resources decoding extra frames that are discarded. There are three different goals that you want to tune your stream configurations around.
Cameras configured to output H.264 video and AAC audio will offer the most compatibility with all features of Frigate and Home Assistant. H.265 has better compression, but less compatibility. Firefox 134+/136+/137+ (Windows/Mac/Linux & Android), Chrome 108+, Safari and Edge are the only browsers able to play H.265 and only support a limited number of H.265 profiles. Ideally, cameras should be configured directly for the desired resolutions and frame rates you want to use in Frigate. Reducing frame rates within Frigate will waste CPU resources decoding extra frames that are discarded. There are three different goals that you want to tune your stream configurations around.
- **Detection**: This is the only stream that Frigate will decode for processing. Also, this is the stream where snapshots will be generated from. The resolution for detection should be tuned for the size of the objects you want to detect. See [Choosing a detect resolution](#choosing-a-detect-resolution) for more details. The recommended frame rate is 5fps, but may need to be higher (10fps is the recommended maximum for most users) for very fast moving objects. Higher resolutions and frame rates will drive higher CPU usage on your server.

View File

@@ -66,4 +66,4 @@ The time period starting when a tracked object entered the frame and ending when
## Zone
Zones are areas of interest, zones can be used for notifications and for limiting the areas where Frigate will create an [event](#event). [See the zone docs for more info](/configuration/zones)
Zones are areas of interest, zones can be used for notifications and for limiting the areas where Frigate will create a [review item](#review-item). [See the zone docs for more info](/configuration/zones)

View File

@@ -9,23 +9,38 @@ Cameras that output H.264 video and AAC audio will offer the most compatibility
I recommend Dahua, Hikvision, and Amcrest in that order. Dahua edges out Hikvision because they are easier to find and order, not because they are better cameras. I personally use Dahua cameras because they are easier to purchase directly. In my experience Dahua and Hikvision both have multiple streams with configurable resolutions and frame rates and rock solid streams. They also both have models with large sensors well known for excellent image quality at night. Not all the models are equal. Larger sensors are better than higher resolutions; especially at night. Amcrest is the fallback recommendation because they are rebranded Dahuas. They are rebranding the lower end models with smaller sensors or less configuration options.
Many users have reported various issues with Reolink cameras, so I do not recommend them. If you are using Reolink, I suggest the [Reolink specific configuration](../configuration/camera_specific.md#reolink-cameras). Wifi cameras are also not recommended. Their streams are less reliable and cause connection loss and/or lost video data.
WiFi cameras are not recommended as [their streams are less reliable and cause connection loss and/or lost video data](https://ipcamtalk.com/threads/camera-conflicts.68142/#post-738821), especially when more than a few WiFi cameras will be used at the same time.
Here are some of the camera's I recommend:
Many users have reported various issues with 4K-plus Reolink cameras, it is best to stick with 5MP and lower for Reolink cameras. If you are using Reolink, I suggest the [Reolink specific configuration](../configuration/camera_specific.md#reolink-cameras).
Here are some of the cameras I recommend:
- <a href="https://amzn.to/4fwoNWA" target="_blank" rel="nofollow noopener sponsored">Loryta(Dahua) IPC-T549M-ALED-S3</a> (affiliate link)
- <a href="https://amzn.to/3YXpcMw" target="_blank" rel="nofollow noopener sponsored">Loryta(Dahua) IPC-T54IR-AS</a> (affiliate link)
- <a href="https://amzn.to/3AvBHoY" target="_blank" rel="nofollow noopener sponsored">Amcrest IP5M-T1179EW-AI-V3</a> (affiliate link)
- <a href="https://www.bhphotovideo.com/c/product/1705511-REG/hikvision_colorvu_ds_2cd2387g2p_lsu_sl_8mp_network.html" target="_blank" rel="nofollow noopener">HIKVISION DS-2CD2387G2P-LSU/SL ColorVu 8MP Panoramic Turret IP Camera</a> (affiliate link)
I may earn a small commission for my endorsement, recommendation, testimonial, or link to any products or services from this website.
## Server
My current favorite is the Beelink EQ13 because of the efficient N100 CPU and dual NICs that allow you to setup a dedicated private network for your cameras where they can be blocked from accessing the internet. There are many used workstation options on eBay that work very well. Anything with an Intel CPU and capable of running Debian should work fine. As a bonus, you may want to look for devices with a M.2 or PCIe express slot that is compatible with the Hailo8 or Google Coral. I may earn a small commission for my endorsement, recommendation, testimonial, or link to any products or services from this website.
My current favorite is the Beelink EQ13 because of the efficient N100 CPU and dual NICs that allow you to setup a dedicated private network for your cameras where they can be blocked from accessing the internet. There are many used workstation options on eBay that work very well. Anything with an Intel CPU and capable of running Debian should work fine. As a bonus, you may want to look for devices with a M.2 or PCIe express slot that is compatible with the Google Coral, Hailo, or other AI accelerators.
| Name | Notes |
| ------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- |
| Beelink EQ13 (<a href="https://amzn.to/4iQaBKu" target="_blank" rel="nofollow noopener sponsored">Amazon</a>) | Dual gigabit NICs for easy isolated camera network. Easily handles several 1080p cameras. |
Note that many of these mini PCs come with Windows pre-installed, and you will need to install Linux according to the [getting started guide](../guides/getting_started.md).
I may earn a small commission for my endorsement, recommendation, testimonial, or link to any products or services from this website.
:::warning
If the EQ13 is out of stock, the link below may take you to a suggested alternative on Amazon. The Beelink EQ14 has some known compatibility issues, so you should avoid that model for now.
:::
| Name | Capabilities | Notes |
| ------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------- | --------------------------------------------------- |
| Beelink EQ13 (<a href="https://amzn.to/4jn2qVr" target="_blank" rel="nofollow noopener sponsored">Amazon</a>) | Can run object detection on several 1080p cameras with low-medium activity | Dual gigabit NICs for easy isolated camera network. |
| Intel 1120p ([Amazon](https://www.amazon.com/Beelink-i3-1220P-Computer-Display-Gigabit/dp/B0DDCKT9YP) | Can handle a large number of 1080p cameras with high activity | |
| Intel 125H ([Amazon](https://www.amazon.com/MINISFORUM-Pro-125H-Barebone-Computer-HDMI2-1/dp/B0FH21FSZM) | Can handle a significant number of 1080p cameras with high activity | Includes NPU for more efficient detection in 0.17+ |
## Detectors
@@ -47,13 +62,13 @@ Frigate supports multiple different detectors that work on different types of ha
**AMD**
- [ROCm](#amd-gpus): ROCm can run on AMD Discrete GPUs to provide efficient object detection
- [ROCm](#rocm---amd-gpu): ROCm can run on AMD Discrete GPUs to provide efficient object detection
- [Supports limited model architectures](../../configuration/object_detectors#supported-models-1)
- Runs best on discrete AMD GPUs
**Intel**
- [OpenVino](#openvino): OpenVino can run on Intel Arc GPUs, Intel integrated GPUs, and Intel CPUs to provide efficient object detection.
- [OpenVino](#openvino---intel): OpenVino can run on Intel Arc GPUs, Intel integrated GPUs, and Intel CPUs to provide efficient object detection.
- [Supports majority of model architectures](../../configuration/object_detectors#supported-models)
- Runs best with tiny, small, or medium models
@@ -86,66 +101,97 @@ In real-world deployments, even with multiple cameras running concurrently, Frig
| Name | Hailo8 Inference Time | Hailo8L Inference Time |
| ---------------- | ---------------------- | ----------------------- |
| ssd mobilenet v1 | ~ 6 ms | ~ 10 ms |
| yolov9-tiny | | 320: 18ms |
| yolov6n | ~ 7 ms | ~ 11 ms |
### Google Coral TPU
:::warning
The Coral is no longer recommended for new Frigate installations, except in deployments with particularly low power requirements or hardware incapable of utilizing alternative AI accelerators for object detection. Instead, we suggest using one of the numerous other supported object detectors. Frigate will continue to provide support for the Coral TPU for as long as practicably possible given its still one of the most power-efficient devices for executing object detection models.
:::
Frigate supports both the USB and M.2 versions of the Google Coral.
- The USB version is compatible with the widest variety of hardware and does not require a driver on the host machine. However, it does lack the automatic throttling features of the other versions.
- The PCIe and M.2 versions require installation of a driver on the host. Follow the instructions for your version from https://coral.ai
- The PCIe and M.2 versions require installation of a driver on the host. https://github.com/jnicolson/gasket-builder should be used.
A single Coral can handle many cameras using the default model and will be sufficient for the majority of users. You can calculate the maximum performance of your Coral based on the inference speed reported by Frigate. With an inference speed of 10, your Coral will top out at `1000/10=100`, or 100 frames per second. If your detection fps is regularly getting close to that, you should first consider tuning motion masks. If those are already properly configured, a second Coral may be needed.
### OpenVINO
### OpenVINO - Intel
The OpenVINO detector type is able to run on:
- 6th Gen Intel Platforms and newer that have an iGPU
- x86 & Arm64 hosts with VPU Hardware (ex: Intel NCS2)
- x86 hosts with an Intel Arc GPU
- Most modern AMD CPUs (though this is officially not supported by Intel)
- x86 & Arm64 hosts via CPU (generally not recommended)
:::note
Intel NPUs have seen [limited success in community deployments](https://github.com/blakeblackshear/frigate/discussions/13248#discussioncomment-12347357), although they remain officially unsupported.
In testing, the NPU delivered performance that was only comparable to — or in some cases worse than — the integrated GPU.
:::
More information is available [in the detector docs](/configuration/object_detectors#openvino-detector)
Inference speeds vary greatly depending on the CPU or GPU used, some known examples of GPU inference times are below:
| Name | MobileNetV2 Inference Time | YOLO-NAS Inference Time | RF-DETR Inference Time | Notes |
| -------------- | -------------------------- | ------------------------- | ---------------------- | ---------------------------------- |
| Intel HD 530 | 15 - 35 ms | | | Can only run one detector instance |
| Intel HD 620 | 15 - 25 ms | 320: ~ 35 ms | | |
| Intel HD 630 | ~ 15 ms | 320: ~ 30 ms | | |
| Intel UHD 730 | ~ 10 ms | 320: ~ 19 ms 640: ~ 54 ms | | |
| Intel UHD 770 | ~ 15 ms | 320: ~ 20 ms 640: ~ 46 ms | | |
| Intel N100 | ~ 15 ms | 320: ~ 20 ms | | |
| Intel Iris XE | ~ 10 ms | 320: ~ 18 ms 640: ~ 50 ms | | |
| Intel Arc A380 | ~ 6 ms | 320: ~ 10 ms 640: ~ 22 ms | 336: 20 ms 448: 27 ms | |
| Intel Arc A750 | ~ 4 ms | 320: ~ 8 ms | | |
| Name | MobileNetV2 Inference Time | YOLOv9 | YOLO-NAS Inference Time | RF-DETR Inference Time | Notes |
| -------------- | -------------------------- | ------------------------------------------------- | ------------------------- | ---------------------- | ---------------------------------- |
| Intel HD 530 | 15 - 35 ms | | | | Can only run one detector instance |
| Intel HD 620 | 15 - 25 ms | | 320: ~ 35 ms | | |
| Intel HD 630 | ~ 15 ms | | 320: ~ 30 ms | | |
| Intel UHD 730 | ~ 10 ms | | 320: ~ 19 ms 640: ~ 54 ms | | |
| Intel UHD 770 | ~ 15 ms | t-320: ~ 16 ms s-320: ~ 20 ms s-640: ~ 40 ms | 320: ~ 20 ms 640: ~ 46 ms | | |
| Intel N100 | ~ 15 ms | s-320: 30 ms | 320: ~ 25 ms | | Can only run one detector instance |
| Intel N150 | ~ 15 ms | t-320: 16 ms s-320: 24 ms | | | |
| Intel Iris XE | ~ 10 ms | s-320: 12 ms s-640: 30 ms | 320: ~ 18 ms 640: ~ 50 ms | | |
| Intel Arc A310 | ~ 5 ms | t-320: 7 ms t-640: 11 ms s-320: 8 ms s-640: 15 ms | 320: ~ 8 ms 640: ~ 14 ms | | |
| Intel Arc A380 | ~ 6 ms | | 320: ~ 10 ms 640: ~ 22 ms | 336: 20 ms 448: 27 ms | |
| Intel Arc A750 | ~ 4 ms | | 320: ~ 8 ms | | |
### TensorRT - Nvidia GPU
The TensortRT detector is able to run on x86 hosts that have an Nvidia GPU which supports the 12.x series of CUDA libraries. The minimum driver version on the host system must be `>=525.60.13`. Also the GPU must support a Compute Capability of `5.0` or greater. This generally correlates to a Maxwell-era GPU or newer, check the [TensorRT docs for more info](/configuration/object_detectors#nvidia-tensorrt-detector).
Frigate is able to utilize an Nvidia GPU which supports the 12.x series of CUDA libraries.
#### Minimum Hardware Support
12.x series of CUDA libraries are used which have minor version compatibility. The minimum driver version on the host system must be `>=545`. Also the GPU must support a Compute Capability of `5.0` or greater. This generally correlates to a Maxwell-era GPU or newer, check the NVIDIA GPU Compute Capability table linked below.
Make sure your host system has the [nvidia-container-runtime](https://docs.docker.com/config/containers/resource_constraints/#access-an-nvidia-gpu) installed to pass through the GPU to the container and the host system has a compatible driver installed for your GPU.
There are improved capabilities in newer GPU architectures that TensorRT can benefit from, such as INT8 operations and Tensor cores. The features compatible with your hardware will be optimized when the model is converted to a trt file. Currently the script provided for generating the model provides a switch to enable/disable FP16 operations. If you wish to use newer features such as INT8 optimization, more work is required.
#### Compatibility References:
[NVIDIA TensorRT Support Matrix](https://docs.nvidia.com/deeplearning/tensorrt/archives/tensorrt-841/support-matrix/index.html)
[NVIDIA CUDA Compatibility](https://docs.nvidia.com/deploy/cuda-compatibility/index.html)
[NVIDIA GPU Compute Capability](https://developer.nvidia.com/cuda-gpus)
Inference speeds will vary greatly depending on the GPU and the model used.
`tiny` variants are faster than the equivalent non-tiny model, some known examples are below:
| Name | YOLOv7 Inference Time | YOLO-NAS Inference Time | RF-DETR Inference Time |
| --------------- | --------------------- | ------------------------- | ------------------------- |
| GTX 1060 6GB | ~ 7 ms | | |
| GTX 1070 | ~ 6 ms | | |
| GTX 1660 SUPER | ~ 4 ms | | |
| RTX 3050 | 5 - 7 ms | 320: ~ 10 ms 640: ~ 16 ms | 336: ~ 16 ms 560: ~ 40 ms |
| RTX 3070 Mobile | ~ 5 ms | | |
| RTX 3070 | 4 - 6 ms | 320: ~ 6 ms 640: ~ 12 ms | 336: ~ 14 ms 560: ~ 36 ms |
| Quadro P400 2GB | 20 - 25 ms | | |
| Quadro P2000 | ~ 12 ms | | |
| Name | YOLOv9 Inference Time | YOLO-NAS Inference Time | RF-DETR Inference Time |
| --------------- | ------------------------- | ------------------------- | ---------------------- |
| GTX 1070 | s-320: 16 ms | 320: 14 ms | |
| RTX 3050 | t-320: 15 ms s-320: 17 ms | 320: ~ 10 ms 640: ~ 16 ms | Nano-320: ~ 12 ms |
| RTX 3070 | t-320: 11 ms s-320: 13 ms | 320: ~ 8 ms 640: ~ 14 ms | Nano-320: ~ 9 ms |
| RTX A4000 | | 320: ~ 15 ms | |
| Tesla P40 | | 320: ~ 105 ms | |
### AMD GPUs
### ROCm - AMD GPU
With the [rocm](../configuration/object_detectors.md#amdrocm-gpu-detector) detector Frigate can take advantage of many discrete AMD GPUs.
| Name | YOLOv9 Inference Time | YOLO-NAS Inference Time |
| --------- | --------------------- | ------------------------- |
| AMD 780M | ~ 14 ms | 320: ~ 30 ms 640: ~ 60 ms |
| AMD 780M | 320: ~ 14 ms | 320: ~ 25 ms 640: ~ 50 ms |
| AMD 8700G | | 320: ~ 20 ms 640: ~ 40 ms |
## Community Supported Detectors
@@ -193,4 +239,4 @@ Basically - When you increase the resolution and/or the frame rate of the stream
YES! The Coral does not help with decoding video streams.
Decompressing video streams takes a significant amount of CPU power. Video compression uses key frames (also known as I-frames) to send a full frame in the video stream. The following frames only include the difference from the key frame, and the CPU has to compile each frame by merging the differences with the key frame. [More detailed explanation](https://blog.video.ibm.com/streaming-video-tips/keyframes-interframe-video-compression/). Higher resolutions and frame rates mean more processing power is needed to decode the video stream, so try and set them on the camera to avoid unnecessary decoding work.
Decompressing video streams takes a significant amount of CPU power. Video compression uses key frames (also known as I-frames) to send a full frame in the video stream. The following frames only include the difference from the key frame, and the CPU has to compile each frame by merging the differences with the key frame. [More detailed explanation](https://support.video.ibm.com/hc/en-us/articles/18106203580316-Keyframes-InterFrame-Video-Compression). Higher resolutions and frame rates mean more processing power is needed to decode the video stream, so try and set them on the camera to avoid unnecessary decoding work.

View File

@@ -43,7 +43,7 @@ The following ports are used by Frigate and can be mapped via docker as required
| `8971` | Authenticated UI and API access without TLS. Reverse proxies should use this port. |
| `5000` | Internal unauthenticated UI and API access. Access to this port should be limited. Intended to be used within the docker network for services that integrate with Frigate. |
| `8554` | RTSP restreaming. By default, these streams are unauthenticated. Authentication can be configured in go2rtc section of config. |
| `8555` | WebRTC connections for low latency live views. |
| `8555` | WebRTC connections for cameras with two-way talk support. |
#### Common Docker Compose storage configurations
@@ -94,6 +94,10 @@ $ python -c 'print("{:.2f}MB".format(((1280 * 720 * 1.5 * 20 + 270480) / 1048576
The shm size cannot be set per container for Home Assistant add-ons. However, this is probably not required since by default Home Assistant Supervisor allocates `/dev/shm` with half the size of your total memory. If your machine has 8GB of memory, chances are that Frigate will have access to up to 4GB without any additional configuration.
## Extra Steps for Specific Hardware
The following sections contain additional setup steps that are only required if you are using specific hardware. If you are not using any of these hardware types, you can skip to the [Docker](#docker) installation section.
### Raspberry Pi 3/4
By default, the Raspberry Pi limits the amount of memory available to the GPU. In order to use ffmpeg hardware acceleration, you must increase the available memory by setting `gpu_mem` to the maximum recommended value in `config.txt` as described in the [official docs](https://www.raspberrypi.org/documentation/computers/config_txt.html#memory-options).
@@ -106,14 +110,107 @@ The Hailo-8 and Hailo-8L AI accelerators are available in both M.2 and HAT form
#### Installation
For Raspberry Pi 5 users with the AI Kit, installation is straightforward. Simply follow this [guide](https://www.raspberrypi.com/documentation/accessories/ai-kit.html#ai-kit-installation) to install the driver and software.
:::warning
For other installations, follow these steps for installation:
The Raspberry Pi kernel includes an older version of the Hailo driver that is incompatible with Frigate. You **must** follow the installation steps below to install the correct driver version, and you **must** disable the built-in kernel driver as described in step 1.
1. Install the driver from the [Hailo GitHub repository](https://github.com/hailo-ai/hailort-drivers). A convenient script for Linux is available to clone the repository, build the driver, and install it.
2. Copy or download [this script](https://github.com/blakeblackshear/frigate/blob/dev/docker/hailo8l/user_installation.sh).
3. Ensure it has execution permissions with `sudo chmod +x user_installation.sh`
4. Run the script with `./user_installation.sh`
:::
1. **Disable the built-in Hailo driver (Raspberry Pi only)**:
:::note
If you are **not** using a Raspberry Pi, skip this step and proceed directly to step 2.
:::
If you are using a Raspberry Pi, you need to blacklist the built-in kernel Hailo driver to prevent conflicts. First, check if the driver is currently loaded:
```bash
lsmod | grep hailo
```
If it shows `hailo_pci`, unload it:
```bash
sudo rmmod hailo_pci
```
Now blacklist the driver to prevent it from loading on boot:
```bash
echo "blacklist hailo_pci" | sudo tee /etc/modprobe.d/blacklist-hailo_pci.conf
```
Update initramfs to ensure the blacklist takes effect:
```bash
sudo update-initramfs -u
```
Reboot your Raspberry Pi:
```bash
sudo reboot
```
After rebooting, verify the built-in driver is not loaded:
```bash
lsmod | grep hailo
```
This command should return no results. If it still shows `hailo_pci`, the blacklist did not take effect properly and you may need to check for other Hailo packages installed via apt that are loading the driver.
2. **Run the installation script**:
Download the installation script:
```bash
wget https://raw.githubusercontent.com/blakeblackshear/frigate/dev/docker/hailo8l/user_installation.sh
```
Make it executable:
```bash
sudo chmod +x user_installation.sh
```
Run the script:
```bash
./user_installation.sh
```
The script will:
- Install necessary build dependencies
- Clone and build the Hailo driver from the official repository
- Install the driver
- Download and install the required firmware
- Set up udev rules
3. **Reboot your system**:
After the script completes successfully, reboot to load the firmware:
```bash
sudo reboot
```
4. **Verify the installation**:
After rebooting, verify that the Hailo device is available:
```bash
ls -l /dev/hailo0
```
You should see the device listed. You can also verify the driver is loaded:
```bash
lsmod | grep hailo_pci
```
#### Setup
@@ -145,7 +242,7 @@ $ sudo cat /sys/kernel/debug/rknpu/version
RKNPU driver: v0.9.2 # or later version
```
I recommend [Joshua Riek's Ubuntu for Rockchip](https://github.com/Joshua-Riek/ubuntu-rockchip), if your board is supported.
I recommend [Armbian](https://www.armbian.com/download/?arch=aarch64), if your board is supported.
#### Setup
@@ -200,7 +297,7 @@ services:
shm_size: "512mb" # update for your cameras based on calculation above
devices:
- /dev/bus/usb:/dev/bus/usb # Passes the USB Coral, needs to be modified for other versions
- /dev/apex_0:/dev/apex_0 # Passes a PCIe Coral, follow driver instructions here https://coral.ai/docs/m2/get-started/#2a-on-linux
- /dev/apex_0:/dev/apex_0 # Passes a PCIe Coral, follow driver instructions here https://github.com/jnicolson/gasket-builder
- /dev/video11:/dev/video11 # For Raspberry Pi 4B
- /dev/dri/renderD128:/dev/dri/renderD128 # For intel hwaccel, needs to be updated for your hardware
volumes:

View File

@@ -0,0 +1,74 @@
---
id: planning_setup
title: Planning a New Installation
---
Choosing the right hardware for your Frigate NVR setup is important for optimal performance and a smooth experience. This guide will walk you through the key considerations, focusing on the number of cameras and the hardware required for efficient object detection.
## Key Considerations
### Number of Cameras and Simultaneous Activity
The most fundamental factor in your hardware decision is the number of cameras you plan to use. However, it's not just about the raw count; it's also about how many of those cameras are likely to see activity and require object detection simultaneously.
When motion is detected in a camera's feed, regions of that frame are sent to your chosen [object detection hardware](/configuration/object_detectors).
- **Low Simultaneous Activity (1-6 cameras with occasional motion)**: If you have a few cameras in areas with infrequent activity (e.g., a seldom-used backyard, a quiet interior), the demand on your object detection hardware will be lower. A single, entry-level AI accelerator will suffice.
- **Moderate Simultaneous Activity (6-12 cameras with some overlapping motion)**: For setups with more cameras, especially in areas like a busy street or a property with multiple access points, it's more likely that several cameras will capture activity at the same time. This increases the load on your object detection hardware, requiring more processing power.
- **High Simultaneous Activity (12+ cameras or highly active zones)**: Large installations or scenarios where many cameras frequently capture activity (e.g., busy street with overview, identification, dedicated LPR cameras, etc.) will necessitate robust object detection capabilities. You'll likely need multiple entry-level AI accelerators or a more powerful single unit such as a discrete GPU.
- **Commercial Installations (40+ cameras)**: Commercial installations or scenarios where a substantial number of cameras capture activity (e.g., a commercial property, an active public space) will necessitate robust object detection capabilities. You'll likely need a modern discrete GPU.
### Video Decoding
Modern CPUs with integrated GPUs (Intel Quick Sync, AMD VCN) or dedicated GPUs can significantly offload video decoding from the main CPU, freeing up resources. This is highly recommended, especially for multiple cameras.
:::tip
For commercial installations it is important to verify the number of supported concurrent streams on your GPU, many consumer GPUs max out at ~20 concurrent camera streams.
:::
## Hardware Considerations
### Object Detection
There are many different hardware options for object detection depending on priorities and available hardware. See [the recommended hardware page](./hardware.md#detectors) for more specifics on what hardware is recommended for object detection.
### Storage
Storage is an important consideration when planning a new installation. To get a more precise estimate of your storage requirements, you can use an IP camera storage calculator. Websites like [IPConfigure Storage Calculator](https://calculator.ipconfigure.com/) can help you determine the necessary disk space based on your camera settings.
#### SSDs (Solid State Drives)
SSDs are an excellent choice for Frigate, offering high speed and responsiveness. The older concern that SSDs would quickly "wear out" from constant video recording is largely no longer valid for modern consumer and enterprise-grade SSDs.
- Longevity: Modern SSDs are designed with advanced wear-leveling algorithms and significantly higher "Terabytes Written" (TBW) ratings than earlier models. For typical home NVR use, a good quality SSD will likely outlast the useful life of your NVR hardware itself.
- Performance: SSDs excel at handling the numerous small write operations that occur during continuous video recording and can significantly improve the responsiveness of the Frigate UI and clip retrieval.
- Silence and Efficiency: SSDs produce no noise and consume less power than traditional HDDs.
#### HDDs (Hard Disk Drives)
Traditional Hard Disk Drives (HDDs) remain a great and often more cost-effective option for long-term video storage, especially for larger setups where raw capacity is prioritized.
- Cost-Effectiveness: HDDs offer the best cost per gigabyte, making them ideal for storing many days, weeks, or months of continuous footage.
- Capacity: HDDs are available in much larger capacities than most consumer SSDs, which is beneficial for extensive video archives.
- NVR-Rated Drives: If choosing an HDD, consider drives specifically designed for surveillance (NVR) use, such as Western Digital Purple or Seagate SkyHawk. These drives are engineered for 24/7 operation and continuous write workloads, offering improved reliability compared to standard desktop drives.
Determining Your Storage Needs
The amount of storage you need will depend on several factors:
- Number of Cameras: More cameras naturally require more space.
- Resolution and Framerate: Higher resolution (e.g., 4K) and higher framerate (e.g., 30fps) streams consume significantly more storage.
- Recording Method: Continuous recording uses the most space. motion-only recording or object-triggered recording can save space, but may miss some footage.
- Retention Period: How many days, weeks, or months of footage do you want to keep?
#### Network Storage (NFS/SMB)
While supported, using network-attached storage (NAS) for recordings can introduce latency and network dependency considerations. For optimal performance and reliability, it is generally recommended to have local storage for your Frigate recordings. If using a NAS, ensure your network connection to it is robust and fast (Gigabit Ethernet at minimum) and that the NAS itself can handle the continuous write load.
### RAM (Memory)
- **Basic Minimum: 4GB RAM**: This is generally sufficient for a very basic Frigate setup with a few cameras and a dedicated object detection accelerator, without running any enrichments. Performance might be tight, especially with higher resolution streams or numerous detections.
- **Minimum for Enrichments: 8GB RAM**: If you plan to utilize Frigate's enrichment features (e.g., facial recognition, license plate recognition, or other AI models that run alongside standard object detection), 8GB of RAM should be considered the minimum. Enrichments require additional memory to load and process their respective models and data.
- **Recommended: 16GB RAM**: For most users, especially those with many cameras (8+) or who plan to heavily leverage enrichments, 16GB of RAM is highly recommended. This provides ample headroom for smooth operation, reduces the likelihood of swapping to disk (which can impact performance), and allows for future expansion.

View File

@@ -0,0 +1,119 @@
---
id: updating
title: Updating
---
# Updating Frigate
The current stable version of Frigate is **0.16.3**. The release notes and any breaking changes for this version can be found on the [Frigate GitHub releases page](https://github.com/blakeblackshear/frigate/releases/tag/v0.16.3).
Keeping Frigate up to date ensures you benefit from the latest features, performance improvements, and bug fixes. The update process varies slightly depending on your installation method (Docker, Home Assistant Addon, etc.). Below are instructions for the most common setups.
## Before You Begin
- **Stop Frigate**: For most methods, youll need to stop the running Frigate instance before backing up and updating.
- **Backup Your Configuration**: Always back up your `/config` directory (e.g., `config.yml` and `frigate.db`, the SQLite database) before updating. This ensures you can roll back if something goes wrong.
- **Check Release Notes**: Carefully review the [Frigate GitHub releases page](https://github.com/blakeblackshear/frigate/releases) for breaking changes or configuration updates that might affect your setup.
## Updating with Docker
If youre running Frigate via Docker (recommended method), follow these steps:
1. **Stop the Container**:
- If using Docker Compose:
```bash
docker compose down frigate
```
- If using `docker run`:
```bash
docker stop frigate
```
2. **Update and Pull the Latest Image**:
- If using Docker Compose:
- Edit your `docker-compose.yml` file to specify the desired version tag (e.g., `0.16.3` instead of `0.15.2`). For example:
```yaml
services:
frigate:
image: ghcr.io/blakeblackshear/frigate:0.16.3
```
- Then pull the image:
```bash
docker pull ghcr.io/blakeblackshear/frigate:0.16.3
```
- **Note for `stable` Tag Users**: If your `docker-compose.yml` uses the `stable` tag (e.g., `ghcr.io/blakeblackshear/frigate:stable`), you dont need to update the tag manually. The `stable` tag always points to the latest stable release after pulling.
- If using `docker run`:
- Pull the image with the appropriate tag (e.g., `0.16.3`, `0.16.3-tensorrt`, or `stable`):
```bash
docker pull ghcr.io/blakeblackshear/frigate:0.16.3
```
3. **Start the Container**:
- If using Docker Compose:
```bash
docker compose up -d
```
- If using `docker run`, re-run your original command (e.g., from the [Installation](./installation.md#docker) section) with the updated image tag.
4. **Verify the Update**:
- Check the container logs to ensure Frigate starts successfully:
```bash
docker logs frigate
```
- Visit the Frigate Web UI (default: `http://<your-ip>:5000`) to confirm the new version is running. The version number is displayed at the top of the System Metrics page.
### Notes
- If youve customized other settings (e.g., `shm-size`), ensure theyre still appropriate after the update.
- Docker will automatically use the updated image when you restart the container, as long as you pulled the correct version.
## Updating the Home Assistant Addon
For users running Frigate as a Home Assistant Addon:
1. **Check for Updates**:
- Navigate to **Settings > Add-ons** in Home Assistant.
- Find your installed Frigate addon (e.g., "Frigate NVR" or "Frigate NVR (Full Access)").
- If an update is available, youll see an "Update" button.
2. **Update the Addon**:
- Click the "Update" button next to the Frigate addon.
- Wait for the process to complete. Home Assistant will handle downloading and installing the new version.
3. **Restart the Addon**:
- After updating, go to the addons page and click "Restart" to apply the changes.
4. **Verify the Update**:
- Check the addon logs (under the "Log" tab) to ensure Frigate starts without errors.
- Access the Frigate Web UI to confirm the new version is running.
### Notes
- Ensure your `/config/frigate.yml` is compatible with the new version by reviewing the [Release notes](https://github.com/blakeblackshear/frigate/releases).
- If using custom hardware (e.g., Coral or GPU), verify that configurations still work, as addon updates dont modify your hardware settings.
## Rolling Back
If an update causes issues:
1. Stop Frigate.
2. Restore your backed-up config file and database.
3. Revert to the previous image version:
- For Docker: Specify an older tag (e.g., `ghcr.io/blakeblackshear/frigate:0.15.2`) in your `docker run` command.
- For Docker Compose: Edit your `docker-compose.yml`, specify the older version tag (e.g., `ghcr.io/blakeblackshear/frigate:0.15.2`), and re-run `docker compose up -d`.
- For Home Assistant: Reinstall the previous addon version manually via the repository if needed and restart the addon.
4. Verify the old version is running again.
## Troubleshooting
- **Container Fails to Start**: Check logs (`docker logs frigate`) for errors.
- **UI Not Loading**: Ensure ports (e.g., 5000, 8971) are still mapped correctly and the service is running.
- **Hardware Issues**: Revisit hardware-specific setup (e.g., Coral, GPU) if detection or decoding fails post-update.
Common questions are often answered in the [FAQ](https://github.com/blakeblackshear/frigate/discussions), pinned at the top of the support discussions.

View File

@@ -15,10 +15,10 @@ At a high level, there are five processing steps that could be applied to a came
%%{init: {"themeVariables": {"edgeLabelBackground": "transparent"}}}%%
flowchart LR
Feed(Feed\nacquisition) --> Decode(Video\ndecoding)
Decode --> Motion(Motion\ndetection)
Motion --> Object(Object\ndetection)
Feed --> Recording(Recording\nand\nvisualization)
Feed(Feed acquisition) --> Decode(Video decoding)
Decode --> Motion(Motion detection)
Motion --> Object(Object detection)
Feed --> Recording(Recording and visualization)
Motion --> Recording
Object --> Recording
```

View File

@@ -114,7 +114,7 @@ section.
## Next steps
1. If the stream you added to go2rtc is also used by Frigate for the `record` or `detect` role, you can migrate your config to pull from the RTSP restream to reduce the number of connections to your camera as shown [here](/configuration/restream#reduce-connections-to-camera).
2. You may also prefer to [setup WebRTC](/configuration/live#webrtc-extra-configuration) for slightly lower latency than MSE. Note that WebRTC only supports h264 and specific audio formats and may require opening ports on your router.
2. You can [set up WebRTC](/configuration/live#webrtc-extra-configuration) if your camera supports two-way talk. Note that WebRTC only supports specific audio formats and may require opening ports on your router.
## Important considerations

View File

@@ -202,7 +202,7 @@ services:
...
devices:
- /dev/bus/usb:/dev/bus/usb # passes the USB Coral, needs to be modified for other versions
- /dev/apex_0:/dev/apex_0 # passes a PCIe Coral, follow driver instructions here https://coral.ai/docs/m2/get-started/#2a-on-linux
- /dev/apex_0:/dev/apex_0 # passes a PCIe Coral, follow driver instructions here https://github.com/jnicolson/gasket-builder
...
```

View File

@@ -35,6 +35,7 @@ There are many solutions available to implement reverse proxies and the communit
* [Apache2](#apache2-reverse-proxy)
* [Nginx](#nginx-reverse-proxy)
* [Traefik](#traefik-reverse-proxy)
* [Caddy](#caddy-reverse-proxy)
## Apache2 Reverse Proxy
@@ -117,7 +118,8 @@ server {
set $port 8971;
listen 80;
listen 443 ssl http2;
listen 443 ssl;
http2 on;
server_name frigate.domain.com;
}
@@ -177,3 +179,33 @@ The above configuration will create a "service" in Traefik, automatically adding
It will also add a router, routing requests to "traefik.example.com" to your local container.
Note that with this approach, you don't need to expose any ports for the Frigate instance since all traffic will be routed over the internal Docker network.
## Caddy Reverse Proxy
This example shows Frigate running under a subdomain with logging and a tls cert (in this case a wildcard domain cert obtained independently of caddy) handled via imports
```caddy
(logging) {
log {
output file /var/log/caddy/{args[0]}.log {
roll_size 10MiB
roll_keep 5
roll_keep_for 10d
}
format json
level INFO
}
}
(tls) {
tls /var/lib/caddy/wildcard.YOUR_DOMAIN.TLD.fullchain.pem /var/lib/caddy/wildcard.YOUR_DOMAIN.TLD.privkey.pem
}
frigate.YOUR_DOMAIN.TLD {
reverse_proxy http://localhost:8971
import tls
import logging frigate.YOUR_DOMAIN.TLD
}
```

View File

@@ -110,6 +110,14 @@ If you run Frigate on a separate device within your local network, Home Assistan
Use `http://<frigate_device_ip>:8971` as the URL for the integration so that authentication is required.
:::tip
The above URL assumes you have [disabled TLS](../configuration/tls).
By default, TLS is enabled and Frigate will be using a self-signed certificate. HomeAssistant will fail to connect HTTPS to port 8971 since it fails to verify the self-signed certificate.
Either disable TLS and use HTTP from HomeAssistant, or configure Frigate to be acessible with a valid certificate.
:::
```yaml
services:
frigate:
@@ -177,6 +185,26 @@ For clips to be castable to media devices, audio is required and may need to be
<a name="api"></a>
## Camera API
To disable a camera dynamically
```
action: camera.turn_off
data: {}
target:
entity_id: camera.back_deck_cam # your Frigate camera entity ID
```
To enable a camera that has been disabled dynamically
```
action: camera.turn_on
data: {}
target:
entity_id: camera.back_deck_cam # your Frigate camera entity ID
```
## Notification API
Many people do not want to expose Frigate to the web, so the integration creates some public API endpoints that can be used for notifications.

View File

@@ -28,7 +28,14 @@ Message published for each changed tracked object. The first message is publishe
"id": "1607123955.475377-mxklsc",
"camera": "front_door",
"frame_time": 1607123961.837752,
"snapshot_time": 1607123961.837752,
"snapshot": {
"frame_time": 1607123965.975463,
"box": [415, 489, 528, 700],
"area": 12728,
"region": [260, 446, 660, 846],
"score": 0.77546,
"attributes": []
},
"label": "person",
"sub_label": null,
"top_score": 0.958984375,
@@ -54,6 +61,7 @@ Message published for each changed tracked object. The first message is publishe
}, // attributes with top score that have been identified on the object at any point
"current_attributes": [], // detailed data about the current attributes in this frame
"current_estimated_speed": 0.71, // current estimated speed (mph or kph) for objects moving through zones with speed estimation enabled
"average_estimated_speed": 14.3, // average estimated speed (mph or kph) for objects moving through zones with speed estimation enabled
"velocity_angle": 180, // direction of travel relative to the frame for objects moving through zones with speed estimation enabled
"recognized_license_plate": "ABC12345", // a recognized license plate for car objects
"recognized_license_plate_score": 0.933451
@@ -62,7 +70,14 @@ Message published for each changed tracked object. The first message is publishe
"id": "1607123955.475377-mxklsc",
"camera": "front_door",
"frame_time": 1607123962.082975,
"snapshot_time": 1607123961.837752,
"snapshot": {
"frame_time": 1607123965.975463,
"box": [415, 489, 528, 700],
"area": 12728,
"region": [260, 446, 660, 846],
"score": 0.77546,
"attributes": []
},
"label": "person",
"sub_label": ["John Smith", 0.79],
"top_score": 0.958984375,
@@ -95,6 +110,7 @@ Message published for each changed tracked object. The first message is publishe
}
],
"current_estimated_speed": 0.77, // current estimated speed (mph or kph) for objects moving through zones with speed estimation enabled
"average_estimated_speed": 14.31, // average estimated speed (mph or kph) for objects moving through zones with speed estimation enabled
"velocity_angle": 180, // direction of travel relative to the frame for objects moving through zones with speed estimation enabled
"recognized_license_plate": "ABC12345", // a recognized license plate for car objects
"recognized_license_plate_score": 0.933451
@@ -125,7 +141,7 @@ Message published for updates to tracked object metadata, for example:
"name": "John",
"score": 0.95,
"camera": "front_door_cam",
"timestamp": 1607123958.748393,
"timestamp": 1607123958.748393
}
```
@@ -139,13 +155,20 @@ Message published for updates to tracked object metadata, for example:
"plate": "123ABC",
"score": 0.95,
"camera": "driveway_cam",
"timestamp": 1607123958.748393,
"timestamp": 1607123958.748393
}
```
### `frigate/reviews`
Message published for each changed review item. The first message is published when the `detection` or `alert` is initiated. When additional objects are detected or when a zone change occurs, it will publish a, `update` message with the same id. When the review activity has ended a final `end` message is published.
Message published for each changed review item. The first message is published when the `detection` or `alert` is initiated.
An `update` with the same ID will be published when:
- The severity changes from `detection` to `alert`
- Additional objects are detected
- An object is recognized via face, lpr, etc.
When the review activity has ended a final `end` message is published.
```json
{

View File

@@ -43,7 +43,7 @@ Snapshots must be enabled to be able to submit examples to Frigate+
### Annotate and verify
You can view all of your submitted images at [https://plus.frigate.video](https://plus.frigate.video). Annotations can be added by clicking an image. For more detailed information about labeling, see the documentation on [improving your model](../plus/improving_model.md).
You can view all of your submitted images at [https://plus.frigate.video](https://plus.frigate.video). Annotations can be added by clicking an image. For more detailed information about labeling, see the documentation on [annotating](../plus/annotating.md).
![Annotate](/img/annotate.png)

View File

@@ -13,6 +13,10 @@ Please use your own knowledge to assess and vet them before you install anything
:::
## [Advanced Camera Card (formerly known as Frigate Card](https://card.camera/#/README)
The [Advanced Camera Card](https://card.camera/#/README) is a Home Assistant dashboard card with deep Frigate integration.
## [Double Take](https://github.com/skrashevich/double-take)
[Double Take](https://github.com/skrashevich/double-take) provides an unified UI and API for processing and training images for facial recognition.
@@ -23,6 +27,14 @@ This is a fork (with fixed errors and new features) of [original Double Take](ht
[Frigate Notify](https://github.com/0x2142/frigate-notify) is a simple app designed to send notifications from Frigate to your favorite platforms. Intended to be used with standalone Frigate installations - Home Assistant not required, MQTT is optional but recommended.
## [Frigate Snap-Sync](https://github.com/thequantumphysicist/frigate-snap-sync/)
[Frigate Snap-Sync](https://github.com/thequantumphysicist/frigate-snap-sync/) is a program that works in tandem with Frigate. It responds to Frigate when a snapshot or a review is made (and more can be added), and uploads them to one or more remote server(s) of your choice.
## [Frigate telegram](https://github.com/OldTyT/frigate-telegram)
[Frigate telegram](https://github.com/OldTyT/frigate-telegram) makes it possible to send events from Frigate to Telegram. Events are sent as a message with a text description, video, and thumbnail.
## [Periscope](https://github.com/maksz42/periscope)
[Periscope](https://github.com/maksz42/periscope) is a lightweight Android app that turns old devices into live viewers for Frigate. It works on Android 2.2 and above, including Android TV. It supports authentication and HTTPS.

View File

@@ -1,17 +1,9 @@
---
id: improving_model
title: Improving your model
id: annotating
title: Annotating your images
---
You may find that Frigate+ models result in more false positives initially, but by submitting true and false positives, the model will improve. With all the new images now being submitted by subscribers, future base models will improve as more and more examples are incorporated. Note that only images with at least one verified label will be used when training your model. Submitting an image from Frigate as a true or false positive will not verify the image. You still must verify the image in Frigate+ in order for it to be used in training.
- **Submit both true positives and false positives**. This will help the model differentiate between what is and isn't correct. You should aim for a target of 80% true positive submissions and 20% false positives across all of your images. If you are experiencing false positives in a specific area, submitting true positives for any object type near that area in similar lighting conditions will help teach the model what that area looks like when no objects are present.
- **Lower your thresholds a little in order to generate more false/true positives near the threshold value**. For example, if you have some false positives that are scoring at 68% and some true positives scoring at 72%, you can try lowering your threshold to 65% and submitting both true and false positives within that range. This will help the model learn and widen the gap between true and false positive scores.
- **Submit diverse images**. For the best results, you should provide at least 100 verified images per camera. Keep in mind that varying conditions should be included. You will want images from cloudy days, sunny days, dawn, dusk, and night. As circumstances change, you may need to submit new examples to address new types of false positives. For example, the change from summer days to snowy winter days or other changes such as a new grill or patio furniture may require additional examples and training.
## Properly labeling images
For the best results, follow the following guidelines.
For the best results, follow these guidelines. You may also want to review the documentation on [improving your model](./index.md#improving-your-model).
**Label every object in the image**: It is important that you label all objects in each image before verifying. If you don't label a car for example, the model will be taught that part of the image is _not_ a car and it will start to get confused. You can exclude labels that you don't want detected on any of your cameras.
@@ -25,9 +17,17 @@ For the best results, follow the following guidelines.
![Fedex Logo](/img/plus/fedex-logo.jpg)
## AI suggested labels
If you have an active Frigate+ subscription, new uploads will be scanned for the objects configured for you camera and you will see suggested labels as light blue boxes when annotating in Frigate+. These suggestions are processed via a queue and typically complete within a minute after uploading, but processing times can be longer.
![Suggestions](/img/plus/suggestions.webp)
Suggestions are converted to labels when saving, so you should remove any errant suggestions. There is already some logic designed to avoid duplicate labels, but you may still occasionally see some duplicate suggestions. You should keep the most accurate bounding box and delete any duplicates so that you have just one label per object remaining.
## False positive labels
False positives will be shown with a read box and the label will have a strike through.
False positives will be shown with a red box and the label will have a strike through. These can't be adjusted, but they can be deleted if you accidentally submit a true positive as a false positive from Frigate.
![false positive](/img/plus/false-positive.jpg)
Misidentified objects should have a correct label added. For example, if a person was mistakenly detected as a cat, you should submit it as a false positive in Frigate and add a label for the person. The boxes will overlap.
@@ -42,6 +42,7 @@ Misidentified objects should have a correct label added. For example, if a perso
| `w` | Add box |
| `d` | Toggle difficult |
| `s` | Switch to the next label |
| `Shift + s` | Switch to the previous label |
| `tab` | Select next largest box |
| `del` | Delete current box |
| `esc` | Deselect/Cancel |

View File

@@ -9,11 +9,11 @@ Before requesting your first model, you will need to upload and verify at least
It is recommended to submit **both** true positives and false positives. This will help the model differentiate between what is and isn't correct. You should aim for a target of 80% true positive submissions and 20% false positives across all of your images. If you are experiencing false positives in a specific area, submitting true positives for any object type near that area in similar lighting conditions will help teach the model what that area looks like when no objects are present.
For more detailed recommendations, you can refer to the docs on [improving your model](./improving_model.md).
For more detailed recommendations, you can refer to the docs on [annotating](./annotating.md).
## Step 2: Submit a model request
Once you have an initial set of verified images, you can request a model on the Models page. For guidance on choosing a model type, refer to [this part of the documentation](./index.md#available-model-types). Each model request requires 1 of the 12 trainings that you receive with your annual subscription. This model will support all [label types available](./index.md#available-label-types) even if you do not submit any examples for those labels. Model creation can take up to 36 hours.
Once you have an initial set of verified images, you can request a model on the Models page. For guidance on choosing a model type, refer to [this part of the documentation](./index.md#available-model-types). If you are unsure which type to request, you can test the base model for each version from the "Base Models" tab. Each model request requires 1 of the 12 trainings that you receive with your annual subscription. This model will support all [label types available](./index.md#available-label-types) even if you do not submit any examples for those labels. Model creation can take up to 36 hours.
![Plus Models Page](/img/plus/plus-models.jpg)
## Step 3: Set your model id in the config
@@ -34,6 +34,12 @@ Model IDs are not secret values and can be shared freely. Access to your model i
:::
:::tip
When setting the plus model id, all other fields should be removed as these are configured automatically with the Frigate+ model config
:::
## Step 4: Adjust your object filters for higher scores
Frigate+ models generally have much higher scores than the default model provided in Frigate. You will likely need to increase your `threshold` and `min_score` values. Here is an example of how these values can be refined, but you should expect these to evolve as your model improves. For more information about how `threshold` and `min_score` are related, see the docs on [object filters](../configuration/object_filters.md#object-scores).

View File

@@ -3,61 +3,90 @@ id: index
title: Models
---
<a href="https://frigate.video/plus" target="_blank" rel="nofollow">Frigate+</a> offers models trained on images submitted by Frigate+ users from their security cameras and is specifically designed for the way Frigate analyzes video footage. These models offer higher accuracy with less resources. The images you upload are used to fine tune a baseline model trained from images uploaded by all Frigate+ users. This fine tuning process results in a model that is optimized for accuracy in your specific conditions.
<a href="https://frigate.video/plus" target="_blank" rel="nofollow">Frigate+</a> offers models trained on images submitted by Frigate+ users from their security cameras and is specifically designed for the way Frigate NVR analyzes video footage. These models offer higher accuracy with less resources. The images you upload are used to fine tune a base model trained from images uploaded by all Frigate+ users. This fine tuning process results in a model that is optimized for accuracy in your specific conditions.
:::info
The baseline model isn't directly available after subscribing. This may change in the future, but for now you will need to submit a model request with the minimum number of images.
:::
With a subscription, 12 model trainings per year are included. If you cancel your subscription, you will retain access to any trained models. An active subscription is required to submit model requests or purchase additional trainings.
With a subscription, 12 model trainings to fine tune your model per year are included. In addition, you will have access to any base models published while your subscription is active. If you cancel your subscription, you will retain access to any trained and base models in your account. An active subscription is required to submit model requests or purchase additional trainings. New base models are published quarterly with target dates of January 15th, April 15th, July 15th, and October 15th.
Information on how to integrate Frigate+ with Frigate can be found in the [integration docs](../integrations/plus.md).
## Available model types
There are two model types offered in Frigate+, `mobiledet` and `yolonas`. Both of these models are object detection models and are trained to detect the same set of labels [listed below](#available-label-types).
There are three model types offered in Frigate+, `mobiledet`, `yolonas`, and `yolov9`. All of these models are object detection models and are trained to detect the same set of labels [listed below](#available-label-types).
Not all model types are supported by all detectors, so it's important to choose a model type to match your detector as shown in the table under [supported detector types](#supported-detector-types).
Not all model types are supported by all detectors, so it's important to choose a model type to match your detector as shown in the table under [supported detector types](#supported-detector-types). You can test model types for compatibility and speed on your hardware by using the base models.
| Model Type | Description |
| ----------- | -------------------------------------------------------------------------------------------------------------------------------------------- |
| `mobiledet` | Based on the same architecture as the default model included with Frigate. Runs on Google Coral devices and CPUs. |
| `yolonas` | A newer architecture that offers slightly higher accuracy and improved detection of small objects. Runs on Intel, NVidia GPUs, and AMD GPUs. |
| Model Type | Description |
| ----------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `mobiledet` | Based on the same architecture as the default model included with Frigate. Runs on Google Coral devices and CPUs. |
| `yolonas` | A newer architecture that offers slightly higher accuracy and improved detection of small objects. Runs on Intel, NVidia GPUs, and AMD GPUs. |
| `yolov9` | A leading SOTA (state of the art) object detection model with similar performance to yolonas, but on a wider range of hardware options. Runs on Intel, NVidia GPUs, AMD GPUs, Hailo, MemryX\*, Apple Silicon\*, and Rockchip NPUs. |
## Supported detector types
_\* Support coming in 0.17_
Currently, Frigate+ models support CPU (`cpu`), Google Coral (`edgetpu`), OpenVino (`openvino`), and ONNX (`onnx`) detectors.
### YOLOv9 Details
:::warning
YOLOv9 models are available in `s` and `t` sizes. When requesting a `yolov9` model, you will be prompted to choose a size. If you are unsure what size to choose, you should perform some tests with the base models to find the performance level that suits you. The `s` size is most similar to the current `yolonas` models in terms of inference times and accuracy, and a good place to start is the `320x320` resolution model for `yolov9s`.
Using Frigate+ models with `onnx` is only available with Frigate 0.15 and later.
:::info
When switching to YOLOv9, you may need to adjust your thresholds for some objects.
:::
| Hardware | Recommended Detector Type | Recommended Model Type |
| ---------------------------------------------------------------------------------------------------------------------------- | ------------------------- | ---------------------- |
| [CPU](/configuration/object_detectors.md#cpu-detector-not-recommended) | `cpu` | `mobiledet` |
| [Coral (all form factors)](/configuration/object_detectors.md#edge-tpu-detector) | `edgetpu` | `mobiledet` |
| [Intel](/configuration/object_detectors.md#openvino-detector) | `openvino` | `yolonas` |
| [NVidia GPU](https://deploy-preview-13787--frigate-docs.netlify.app/configuration/object_detectors#onnx)\* | `onnx` | `yolonas` |
| [AMD ROCm GPU](https://deploy-preview-13787--frigate-docs.netlify.app/configuration/object_detectors#amdrocm-gpu-detector)\* | `onnx` | `yolonas` |
#### Hailo Support
_\* Requires Frigate 0.15_
If you have a Hailo device, you will need to specify the hardware you have when submitting a model request because they are not cross compatible. Please test using the available base models before submitting your model request.
#### Rockchip (RKNN) Support
For 0.16, YOLOv9 onnx models will need to be manually converted. First, you will need to configure Frigate to use the model id for your YOLOv9 onnx model so it downloads the model to your `model_cache` directory. From there, you can follow the [documentation](/configuration/object_detectors.md#converting-your-own-onnx-model-to-rknn-format) to convert it. Automatic conversion is coming in 0.17.
## Supported detector types
Currently, Frigate+ models support CPU (`cpu`), Google Coral (`edgetpu`), OpenVino (`openvino`), ONNX (`onnx`), Hailo (`hailo8l`), and Rockchip\* (`rknn`) detectors.
| Hardware | Recommended Detector Type | Recommended Model Type |
| -------------------------------------------------------------------------------- | ------------------------- | ---------------------- |
| [CPU](/configuration/object_detectors.md#cpu-detector-not-recommended) | `cpu` | `mobiledet` |
| [Coral (all form factors)](/configuration/object_detectors.md#edge-tpu-detector) | `edgetpu` | `mobiledet` |
| [Intel](/configuration/object_detectors.md#openvino-detector) | `openvino` | `yolov9` |
| [NVidia GPU](/configuration/object_detectors#onnx) | `onnx` | `yolov9` |
| [AMD ROCm GPU](/configuration/object_detectors#amdrocm-gpu-detector) | `onnx` | `yolov9` |
| [Hailo8/Hailo8L/Hailo8R](/configuration/object_detectors#hailo-8) | `hailo8l` | `yolov9` |
| [Rockchip NPU](/configuration/object_detectors#rockchip-platform)\* | `rknn` | `yolov9` |
_\* Requires manual conversion in 0.16. Automatic conversion coming in 0.17._
## Improving your model
Some users may find that Frigate+ models result in more false positives initially, but by submitting true and false positives, the model will improve. With all the new images now being submitted by subscribers, future base models will improve as more and more examples are incorporated. Note that only images with at least one verified label will be used when training your model. Submitting an image from Frigate as a true or false positive will not verify the image. You still must verify the image in Frigate+ in order for it to be used in training.
- **Submit both true positives and false positives**. This will help the model differentiate between what is and isn't correct. You should aim for a target of 80% true positive submissions and 20% false positives across all of your images. If you are experiencing false positives in a specific area, submitting true positives for any object type near that area in similar lighting conditions will help teach the model what that area looks like when no objects are present.
- **Lower your thresholds a little in order to generate more false/true positives near the threshold value**. For example, if you have some false positives that are scoring at 68% and some true positives scoring at 72%, you can try lowering your threshold to 65% and submitting both true and false positives within that range. This will help the model learn and widen the gap between true and false positive scores.
- **Submit diverse images**. For the best results, you should provide at least 100 verified images per camera. Keep in mind that varying conditions should be included. You will want images from cloudy days, sunny days, dawn, dusk, and night. As circumstances change, you may need to submit new examples to address new types of false positives. For example, the change from summer days to snowy winter days or other changes such as a new grill or patio furniture may require additional examples and training.
## Available label types
Frigate+ models support a more relevant set of objects for security cameras. Currently, the following objects are supported:
Frigate+ models support a more relevant set of objects for security cameras. The labels for annotation in Frigate+ are configurable by editing the camera in the Cameras section of Frigate+. Currently, the following objects are supported:
- **People**: `person`, `face`
- **Vehicles**: `car`, `motorcycle`, `bicycle`, `boat`, `license_plate`
- **Delivery Logos**: `amazon`, `usps`, `ups`, `fedex`, `dhl`, `an_post`, `purolator`, `postnl`, `nzpost`, `postnord`, `gls`, `dpd`
- **Animals**: `dog`, `cat`, `deer`, `horse`, `bird`, `raccoon`, `fox`, `bear`, `cow`, `squirrel`, `goat`, `rabbit`
- **Vehicles**: `car`, `motorcycle`, `bicycle`, `boat`, `school_bus`, `license_plate`
- **Delivery Logos**: `amazon`, `usps`, `ups`, `fedex`, `dhl`, `an_post`, `purolator`, `postnl`, `nzpost`, `postnord`, `gls`, `dpd`, `canada_post`, `royal_mail`
- **Animals**: `dog`, `cat`, `deer`, `horse`, `bird`, `raccoon`, `fox`, `bear`, `cow`, `squirrel`, `goat`, `rabbit`, `skunk`, `kangaroo`
- **Other**: `package`, `waste_bin`, `bbq_grill`, `robot_lawnmower`, `umbrella`
Other object types available in the default Frigate model are not available. Additional object types will be added in future releases.
### Candidate labels
Candidate labels are also available for annotation. These labels don't have enough data to be included in the model yet, but using them will help add support sooner. You can enable these labels by editing the camera settings.
Where possible, these labels are mapped to existing labels during training. For example, any `baby` labels are mapped to `person` until support for new labels is added.
The candidate labels are: `baby`, `bpost`, `badger`, `possum`, `rodent`, `chicken`, `groundhog`, `boar`, `hedgehog`, `tractor`, `golf cart`, `garbage truck`, `bus`, `sports ball`
Candidate labels are not available for automatic suggestions.
### Label attributes
Frigate has special handling for some labels when using Frigate+ models. `face`, `license_plate`, and delivery logos such as `amazon`, `ups`, and `fedex` are considered attribute labels which are not tracked like regular objects and do not generate review items directly. In addition, the `threshold` filter will have no effect on these labels. You should adjust the `min_score` and other filter values as needed.

View File

@@ -46,6 +46,17 @@ Some users have reported that this older device runs an older kernel causing iss
6. Open the control panel - info scree. The coral TPU will now be recognised as a USB Device - google inc
7. Start the frigate container. Everything should work now!
### QNAP NAS
QNAP NAS devices, such as the TS-253A, may use connected Coral TPU devices if [QuMagie](https://www.qnap.com/en/software/qumagie) is installed along with its QNAP AI Core extension. If any of the features—`facial recognition`, `object recognition`, or `similar photo recognition`—are enabled, Container Station applications such as `Frigate` or `CodeProject.AI Server` will be unable to initialize the TPU device in use.
To allow the Coral TPU device to be discovered, the you must either:
1. [Disable the AI recognition features in QuMagie](https://docs.qnap.com/application/qumagie/2.x/en-us/configuring-qnap-ai-core-settings-FB13CE03.html),
2. Remove the QNAP AI Core extension or
3. Manually start the QNAP AI Core extension after Frigate has fully started (not recommended).
It is also recommended to restart the NAS once the changes have been made.
## USB Coral Detection Appears to be Stuck
The USB Coral can become stuck and need to be restarted, this can happen for a number of reasons depending on hardware and software setup. Some common reasons are:
@@ -55,10 +66,9 @@ The USB Coral can become stuck and need to be restarted, this can happen for a n
## PCIe Coral Not Detected
The most common reason for the PCIe Coral not being detected is that the driver has not been installed. This process varies based on what OS and kernel that is being run.
The most common reason for the PCIe Coral not being detected is that the driver has not been installed. This process varies based on what OS and kernel that is being run.
- In most cases [the Coral docs](https://coral.ai/docs/m2/get-started/#2-install-the-pcie-driver-and-edge-tpu-runtime) show how to install the driver for the PCIe based Coral.
- For Ubuntu 22.04+ https://github.com/jnicolson/gasket-builder can be used to build and install the latest version of the driver.
- In most cases https://github.com/jnicolson/gasket-builder can be used to build and install the latest version of the driver.
## Attempting to load TPU as pci & Fatal Python error: Illegal instruction

View File

@@ -0,0 +1,13 @@
---
id: gpu
title: Troubleshooting GPU
---
## OpenVINO
### Can't get OPTIMIZATION_CAPABILITIES property as no supported devices found.
Some users have reported issues using some Intel iGPUs with OpenVINO, where the GPU would not be detected. This error can be caused by various problems, so it is important to ensure the configuration is setup correctly. Some solutions users have noted:
- In some cases users have noted that an HDMI dummy plug was necessary to be plugged into the motherboard's HDMI port.
- When mixing an Intel iGPU with Nvidia GPU, the devices can be mixed up between `/dev/dri/renderD128` and `/dev/dri/renderD129` so it is important to confirm the correct device, or map the entire `/dev/dri` directory into the Frigate container.

View File

@@ -1,19 +1,24 @@
import type * as Preset from '@docusaurus/preset-classic';
import * as path from 'node:path';
import type { Config, PluginConfig } from '@docusaurus/types';
import type * as OpenApiPlugin from 'docusaurus-plugin-openapi-docs';
import type * as Preset from "@docusaurus/preset-classic";
import * as path from "node:path";
import type { Config, PluginConfig } from "@docusaurus/types";
import type * as OpenApiPlugin from "docusaurus-plugin-openapi-docs";
const config: Config = {
title: 'Frigate',
tagline: 'NVR With Realtime Object Detection for IP Cameras',
url: 'https://docs.frigate.video',
baseUrl: '/',
onBrokenLinks: 'throw',
onBrokenMarkdownLinks: 'warn',
favicon: 'img/favicon.ico',
organizationName: 'blakeblackshear',
projectName: 'frigate',
themes: ['@docusaurus/theme-mermaid', 'docusaurus-theme-openapi-docs'],
title: "Frigate",
tagline: "NVR With Realtime Object Detection for IP Cameras",
url: "https://docs.frigate.video",
baseUrl: "/",
onBrokenLinks: "throw",
onBrokenMarkdownLinks: "warn",
favicon: "img/favicon.ico",
organizationName: "blakeblackshear",
projectName: "frigate",
themes: [
"@docusaurus/theme-mermaid",
"docusaurus-theme-openapi-docs",
"@inkeep/docusaurus/chatButton",
"@inkeep/docusaurus/searchBar",
],
markdown: {
mermaid: true,
},
@@ -27,39 +32,79 @@ const config: Config = {
},
},
themeConfig: {
algolia: {
appId: 'WIURGBNBPY',
apiKey: 'd02cc0a6a61178b25da550212925226b',
indexName: 'frigate',
announcementBar: {
id: 'frigate_plus',
content: `
<span style="margin-right: 8px; display: inline-block; animation: pulse 2s infinite;">🚀</span>
Get more relevant and accurate detections with Frigate+ models.
<a style="margin-left: 12px; padding: 3px 10px; background: #94d2bd; color: #001219; text-decoration: none; border-radius: 4px; font-weight: 500; " target="_blank" rel="noopener noreferrer" href="https://frigate.video/plus/">Learn more</a>
<span style="margin-left: 8px; display: inline-block; animation: pulse 2s infinite;">✨</span>
<style>
@keyframes pulse {
0%, 100% { transform: scale(1); }
50% { transform: scale(1.1); }
}
</style>`,
backgroundColor: '#005f73',
textColor: '#e0fbfc',
isCloseable: false,
},
docs: {
sidebar: {
hideable: true,
},
},
inkeepConfig: {
baseSettings: {
apiKey: "b1a4c4d73c9b48aa5b3cdae6e4c81f0bb3d1134eeb5a7100",
integrationId: "cm6xmhn9h000gs601495fkkdx",
organizationId: "org_map2JQEOco8U1ZYY",
primaryBrandColor: "#010101",
},
aiChatSettings: {
chatSubjectName: "Frigate",
botAvatarSrcUrl: "https://frigate.video/images/favicon.png",
getHelpCallToActions: [
{
name: "GitHub",
url: "https://github.com/blakeblackshear/frigate",
icon: {
builtIn: "FaGithub",
},
},
],
quickQuestions: [
"How to configure and setup camera settings?",
"How to setup notifications?",
"Supported builtin detectors?",
"How to restream video feed?",
"How can I get sound or audio in my recordings?",
],
},
},
prism: {
additionalLanguages: ['bash', 'json'],
additionalLanguages: ["bash", "json"],
},
languageTabs: [
{
highlight: 'python',
language: 'python',
logoClass: 'python',
highlight: "python",
language: "python",
logoClass: "python",
},
{
highlight: 'javascript',
language: 'nodejs',
logoClass: 'nodejs',
highlight: "javascript",
language: "nodejs",
logoClass: "nodejs",
},
{
highlight: 'javascript',
language: 'javascript',
logoClass: 'javascript',
highlight: "javascript",
language: "javascript",
logoClass: "javascript",
},
{
highlight: 'bash',
language: 'curl',
logoClass: 'curl',
highlight: "bash",
language: "curl",
logoClass: "curl",
},
{
highlight: "rust",
@@ -68,28 +113,28 @@ const config: Config = {
},
],
navbar: {
title: 'Frigate',
title: "Frigate",
logo: {
alt: 'Frigate',
src: 'img/logo.svg',
srcDark: 'img/logo-dark.svg',
alt: "Frigate",
src: "img/logo.svg",
srcDark: "img/logo-dark.svg",
},
items: [
{
to: '/',
activeBasePath: 'docs',
label: 'Docs',
position: 'left',
to: "/",
activeBasePath: "docs",
label: "Docs",
position: "left",
},
{
href: 'https://frigate.video',
label: 'Website',
position: 'right',
href: "https://frigate.video",
label: "Website",
position: "right",
},
{
href: 'http://demo.frigate.video',
label: 'Demo',
position: 'right',
href: "http://demo.frigate.video",
label: "Demo",
position: "right",
},
{
type: 'localeDropdown',
@@ -109,18 +154,18 @@ const config: Config = {
],
},
footer: {
style: 'dark',
style: "dark",
links: [
{
title: 'Community',
title: "Community",
items: [
{
label: 'GitHub',
href: 'https://github.com/blakeblackshear/frigate',
label: "GitHub",
href: "https://github.com/blakeblackshear/frigate",
},
{
label: 'Discussions',
href: 'https://github.com/blakeblackshear/frigate/discussions',
label: "Discussions",
href: "https://github.com/blakeblackshear/frigate/discussions",
},
],
},
@@ -129,19 +174,19 @@ const config: Config = {
},
},
plugins: [
path.resolve(__dirname, 'plugins', 'raw-loader'),
path.resolve(__dirname, "plugins", "raw-loader"),
[
'docusaurus-plugin-openapi-docs',
"docusaurus-plugin-openapi-docs",
{
id: 'openapi',
docsPluginId: 'classic', // configured for preset-classic
id: "openapi",
docsPluginId: "classic", // configured for preset-classic
config: {
frigateApi: {
specPath: 'static/frigate-api.yaml',
outputDir: 'docs/integrations/api',
specPath: "static/frigate-api.yaml",
outputDir: "docs/integrations/api",
sidebarOptions: {
groupPathsBy: 'tag',
categoryLinkSource: 'tag',
groupPathsBy: "tag",
categoryLinkSource: "tag",
sidebarCollapsible: true,
sidebarCollapsed: true,
},
@@ -149,23 +194,24 @@ const config: Config = {
} satisfies OpenApiPlugin.Options,
},
},
]
],
] as PluginConfig[],
presets: [
[
'classic',
"classic",
{
docs: {
routeBasePath: '/',
sidebarPath: './sidebars.ts',
routeBasePath: "/",
sidebarPath: "./sidebars.ts",
// Please change this to your repo.
editUrl: 'https://github.com/blakeblackshear/frigate/edit/master/docs/',
editUrl:
"https://github.com/blakeblackshear/frigate/edit/master/docs/",
sidebarCollapsible: false,
docItemComponent: '@theme/ApiItem', // Derived from docusaurus-theme-openapi
docItemComponent: "@theme/ApiItem", // Derived from docusaurus-theme-openapi
},
theme: {
customCss: './src/css/custom.css',
customCss: "./src/css/custom.css",
},
} satisfies Preset.Options,
],

View File

@@ -12,6 +12,7 @@
"@docusaurus/plugin-content-docs": "^3.6.3",
"@docusaurus/preset-classic": "^3.7.0",
"@docusaurus/theme-mermaid": "^3.6.3",
"@inkeep/docusaurus": "^2.0.16",
"@mdx-js/react": "^3.1.0",
"clsx": "^2.1.1",
"docusaurus-plugin-openapi-docs": "^4.3.1",
@@ -3954,6 +3955,12 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/@inkeep/docusaurus": {
"version": "2.0.16",
"resolved": "https://registry.npmjs.org/@inkeep/docusaurus/-/docusaurus-2.0.16.tgz",
"integrity": "sha512-dQhjlvFnl3CVr0gWeJ/V/qLnDy1XYrCfkdVSa2D3gJTxI9/vOf9639Y1aPxTxO88DiXuW9CertLrZLB6SoJ2yg==",
"license": "MIT"
},
"node_modules/@isaacs/cliui": {
"version": "8.0.2",
"resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",

View File

@@ -21,6 +21,7 @@
"@docusaurus/plugin-content-docs": "^3.6.3",
"@docusaurus/preset-classic": "^3.7.0",
"@docusaurus/theme-mermaid": "^3.6.3",
"@inkeep/docusaurus": "^2.0.16",
"@mdx-js/react": "^3.1.0",
"clsx": "^2.1.1",
"docusaurus-plugin-openapi-docs": "^4.3.1",

View File

@@ -5,12 +5,14 @@ import frigateHttpApiSidebar from "./docs/integrations/api/sidebar";
const sidebars: SidebarsConfig = {
docs: {
Frigate: [
"frigate/index",
"frigate/hardware",
"frigate/installation",
"frigate/camera_setup",
"frigate/video_pipeline",
"frigate/glossary",
'frigate/index',
'frigate/hardware',
'frigate/planning_setup',
'frigate/installation',
'frigate/updating',
'frigate/camera_setup',
'frigate/video_pipeline',
'frigate/glossary',
],
Guides: [
"guides/getting_started",
@@ -91,15 +93,16 @@ const sidebars: SidebarsConfig = {
"configuration/metrics",
"integrations/third_party_extensions",
],
"Frigate+": [
"plus/index",
"plus/first_model",
"plus/improving_model",
"plus/faq",
'Frigate+': [
'plus/index',
'plus/annotating',
'plus/first_model',
'plus/faq',
],
Troubleshooting: [
"troubleshooting/faqs",
"troubleshooting/recordings",
"troubleshooting/gpu",
"troubleshooting/edgetpu",
],
Development: [

View File

@@ -105,7 +105,7 @@ paths:
application/json:
schema:
$ref: "#/components/schemas/HTTPValidationError"
"/users/{username}":
/users/{username}:
delete:
tags:
- Auth
@@ -130,7 +130,7 @@ paths:
application/json:
schema:
$ref: "#/components/schemas/HTTPValidationError"
"/users/{username}/password":
/users/{username}/password:
put:
tags:
- Auth
@@ -161,7 +161,7 @@ paths:
application/json:
schema:
$ref: "#/components/schemas/HTTPValidationError"
"/users/{username}/role":
/users/{username}/role:
put:
tags:
- Auth
@@ -228,7 +228,7 @@ paths:
application/json:
schema:
$ref: "#/components/schemas/HTTPValidationError"
"/faces/train/{name}/classify":
/faces/train/{name}/classify:
post:
tags:
- Events
@@ -259,7 +259,7 @@ paths:
application/json:
schema:
$ref: "#/components/schemas/HTTPValidationError"
"/faces/{name}/create":
/faces/{name}/create:
post:
tags:
- Events
@@ -284,7 +284,7 @@ paths:
application/json:
schema:
$ref: "#/components/schemas/HTTPValidationError"
"/faces/{name}/register":
/faces/{name}/register:
post:
tags:
- Events
@@ -340,7 +340,7 @@ paths:
application/json:
schema:
$ref: "#/components/schemas/HTTPValidationError"
"/faces/{name}/delete":
/faces/{name}/delete:
post:
tags:
- Events
@@ -371,6 +371,37 @@ paths:
application/json:
schema:
$ref: "#/components/schemas/HTTPValidationError"
/faces/{old_name}/rename:
put:
tags:
- Events
summary: Rename Face
operationId: rename_face_faces__old_name__rename_put
parameters:
- name: old_name
in: path
required: true
schema:
type: string
title: Old Name
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/RenameFaceBody"
responses:
"200":
description: Successful Response
content:
application/json:
schema: {}
"422":
description: Validation Error
content:
application/json:
schema:
$ref: "#/components/schemas/HTTPValidationError"
/lpr/reprocess:
put:
tags:
@@ -659,7 +690,7 @@ paths:
application/json:
schema:
$ref: "#/components/schemas/HTTPValidationError"
"/review/event/{event_id}":
/review/event/{event_id}:
get:
tags:
- Review
@@ -685,7 +716,7 @@ paths:
application/json:
schema:
$ref: "#/components/schemas/HTTPValidationError"
"/review/{review_id}":
/review/{review_id}:
get:
tags:
- Review
@@ -711,7 +742,7 @@ paths:
application/json:
schema:
$ref: "#/components/schemas/HTTPValidationError"
"/review/{review_id}/viewed":
/review/{review_id}/viewed:
delete:
tags:
- Review
@@ -774,7 +805,7 @@ paths:
content:
application/json:
schema: {}
"/go2rtc/streams/{camera_name}":
/go2rtc/streams/{camera_name}:
get:
tags:
- App
@@ -991,7 +1022,7 @@ paths:
content:
application/json:
schema: {}
"/logs/{service}":
/logs/{service}:
get:
tags:
- App
@@ -1287,7 +1318,7 @@ paths:
application/json:
schema:
$ref: "#/components/schemas/HTTPValidationError"
"/preview/{camera_name}/start/{start_ts}/end/{end_ts}":
/preview/{camera_name}/start/{start_ts}/end/{end_ts}:
get:
tags:
- Preview
@@ -1325,7 +1356,7 @@ paths:
application/json:
schema:
$ref: "#/components/schemas/HTTPValidationError"
"/preview/{year_month}/{day}/{hour}/{camera_name}/{tz_name}":
/preview/{year_month}/{day}/{hour}/{camera_name}/{tz_name}:
get:
tags:
- Preview
@@ -1376,7 +1407,7 @@ paths:
application/json:
schema:
$ref: "#/components/schemas/HTTPValidationError"
"/preview/{camera_name}/start/{start_ts}/end/{end_ts}/frames":
/preview/{camera_name}/start/{start_ts}/end/{end_ts}/frames:
get:
tags:
- Preview
@@ -1463,7 +1494,7 @@ paths:
content:
application/json:
schema: {}
"/export/{camera_name}/start/{start_time}/end/{end_time}":
/export/{camera_name}/start/{start_time}/end/{end_time}:
post:
tags:
- Export
@@ -1507,7 +1538,7 @@ paths:
application/json:
schema:
$ref: "#/components/schemas/HTTPValidationError"
"/export/{event_id}/rename":
/export/{event_id}/rename:
patch:
tags:
- Export
@@ -1538,7 +1569,7 @@ paths:
application/json:
schema:
$ref: "#/components/schemas/HTTPValidationError"
"/export/{event_id}":
/export/{event_id}:
delete:
tags:
- Export
@@ -1563,7 +1594,7 @@ paths:
application/json:
schema:
$ref: "#/components/schemas/HTTPValidationError"
"/exports/{export_id}":
/exports/{export_id}:
get:
tags:
- Export
@@ -1699,7 +1730,7 @@ paths:
anyOf:
- type: string
- type: "null"
default: "00:00,24:00"
default: 00:00,24:00
title: Time Range
- name: has_clip
in: query
@@ -1728,6 +1759,10 @@ paths:
- name: include_thumbnails
in: query
required: false
description: >
Deprecated. Thumbnail data is no longer included in the response.
Use the /api/events/:event_id/thumbnail.:extension endpoint instead.
deprecated: true
schema:
anyOf:
- type: integer
@@ -1942,6 +1977,10 @@ paths:
- name: include_thumbnails
in: query
required: false
description: >
Deprecated. Thumbnail data is no longer included in the response.
Use the /api/events/:event_id/thumbnail.:extension endpoint instead.
deprecated: true
schema:
anyOf:
- type: integer
@@ -2007,7 +2046,7 @@ paths:
anyOf:
- type: string
- type: "null"
default: "00:00,24:00"
default: 00:00,24:00
title: Time Range
- name: has_clip
in: query
@@ -2147,7 +2186,7 @@ paths:
application/json:
schema:
$ref: "#/components/schemas/HTTPValidationError"
"/events/{event_id}":
/events/{event_id}:
get:
tags:
- Events
@@ -2198,7 +2237,7 @@ paths:
application/json:
schema:
$ref: "#/components/schemas/HTTPValidationError"
"/events/{event_id}/retain":
/events/{event_id}/retain:
post:
tags:
- Events
@@ -2249,7 +2288,7 @@ paths:
application/json:
schema:
$ref: "#/components/schemas/HTTPValidationError"
"/events/{event_id}/plus":
/events/{event_id}/plus:
post:
tags:
- Events
@@ -2280,7 +2319,7 @@ paths:
application/json:
schema:
$ref: "#/components/schemas/HTTPValidationError"
"/events/{event_id}/false_positive":
/events/{event_id}/false_positive:
put:
tags:
- Events
@@ -2306,7 +2345,7 @@ paths:
application/json:
schema:
$ref: "#/components/schemas/HTTPValidationError"
"/events/{event_id}/sub_label":
/events/{event_id}/sub_label:
post:
tags:
- Events
@@ -2338,7 +2377,39 @@ paths:
application/json:
schema:
$ref: "#/components/schemas/HTTPValidationError"
"/events/{event_id}/description":
/events/{event_id}/recognized_license_plate:
post:
tags:
- Events
summary: Set Plate
operationId: set_plate_events__event_id__recognized_license_plate_post
parameters:
- name: event_id
in: path
required: true
schema:
type: string
title: Event Id
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/EventsLPRBody"
responses:
"200":
description: Successful Response
content:
application/json:
schema:
$ref: "#/components/schemas/GenericResponse"
"422":
description: Validation Error
content:
application/json:
schema:
$ref: "#/components/schemas/HTTPValidationError"
/events/{event_id}/description:
post:
tags:
- Events
@@ -2370,7 +2441,7 @@ paths:
application/json:
schema:
$ref: "#/components/schemas/HTTPValidationError"
"/events/{event_id}/description/regenerate":
/events/{event_id}/description/regenerate:
put:
tags:
- Events
@@ -2430,7 +2501,7 @@ paths:
application/json:
schema:
$ref: "#/components/schemas/HTTPValidationError"
"/events/{camera_name}/{label}/create":
/events/{camera_name}/{label}/create:
post:
tags:
- Events
@@ -2473,7 +2544,7 @@ paths:
application/json:
schema:
$ref: "#/components/schemas/HTTPValidationError"
"/events/{event_id}/end":
/events/{event_id}/end:
put:
tags:
- Events
@@ -2505,7 +2576,7 @@ paths:
application/json:
schema:
$ref: "#/components/schemas/HTTPValidationError"
"/{camera_name}":
/{camera_name}:
get:
tags:
- Media
@@ -2592,7 +2663,7 @@ paths:
application/json:
schema:
$ref: "#/components/schemas/HTTPValidationError"
"/{camera_name}/ptz/info":
/{camera_name}/ptz/info:
get:
tags:
- Media
@@ -2617,7 +2688,7 @@ paths:
application/json:
schema:
$ref: "#/components/schemas/HTTPValidationError"
"/{camera_name}/latest.{extension}":
/{camera_name}/latest.{extension}:
get:
tags:
- Media
@@ -2720,7 +2791,7 @@ paths:
application/json:
schema:
$ref: "#/components/schemas/HTTPValidationError"
"/{camera_name}/recordings/{frame_time}/snapshot.{format}":
/{camera_name}/recordings/{frame_time}/snapshot.{format}:
get:
tags:
- Media
@@ -2767,7 +2838,7 @@ paths:
application/json:
schema:
$ref: "#/components/schemas/HTTPValidationError"
"/{camera_name}/plus/{frame_time}":
/{camera_name}/plus/{frame_time}:
post:
tags:
- Media
@@ -2846,7 +2917,7 @@ paths:
application/json:
schema:
$ref: "#/components/schemas/HTTPValidationError"
"/{camera_name}/recordings/summary":
/{camera_name}/recordings/summary:
get:
tags:
- Media
@@ -2879,13 +2950,13 @@ paths:
application/json:
schema:
$ref: "#/components/schemas/HTTPValidationError"
"/{camera_name}/recordings":
/{camera_name}/recordings:
get:
tags:
- Media
summary: Recordings
description: >-
Return specific camera recordings between the given 'after'/'end' times.
Return specific camera recordings between the given "after"/"end" times.
If not provided the last hour will be used
operationId: recordings__camera_name__recordings_get
parameters:
@@ -2900,14 +2971,14 @@ paths:
required: false
schema:
type: number
default: 1744227965.180043
default: 1752611870.43948
title: After
- name: before
in: query
required: false
schema:
type: number
default: 1744231565.180048
default: 1752615470.43949
title: Before
responses:
"200":
@@ -2921,13 +2992,14 @@ paths:
application/json:
schema:
$ref: "#/components/schemas/HTTPValidationError"
"/{camera_name}/start/{start_ts}/end/{end_ts}/clip.mp4":
/{camera_name}/start/{start_ts}/end/{end_ts}/clip.mp4:
get:
tags:
- Media
summary: Recording Clip
description: >-
For iOS devices, use the master.m3u8 HLS link instead of clip.mp4. Safari does not reliably process progressive mp4 files.
For iOS devices, use the master.m3u8 HLS link instead of clip.mp4.
Safari does not reliably process progressive mp4 files.
operationId: recording_clip__camera_name__start__start_ts__end__end_ts__clip_mp4_get
parameters:
- name: camera_name
@@ -2960,11 +3032,14 @@ paths:
application/json:
schema:
$ref: "#/components/schemas/HTTPValidationError"
"/vod/{camera_name}/start/{start_ts}/end/{end_ts}":
/vod/{camera_name}/start/{start_ts}/end/{end_ts}:
get:
tags:
- Media
summary: Vod Ts
description: >-
Returns an HLS playlist for the specified timestamp-range on the
specified camera. Append /master.m3u8 or /index.m3u8 for HLS playback.
operationId: vod_ts_vod__camera_name__start__start_ts__end__end_ts__get
parameters:
- name: camera_name
@@ -2997,12 +3072,14 @@ paths:
application/json:
schema:
$ref: "#/components/schemas/HTTPValidationError"
"/vod/{year_month}/{day}/{hour}/{camera_name}":
/vod/{year_month}/{day}/{hour}/{camera_name}:
get:
tags:
- Media
summary: Vod Hour No Timezone
description: VOD for specific hour. Uses the default timezone (UTC).
description: >-
Returns an HLS playlist for the specified date-time on the specified
camera. Append /master.m3u8 or /index.m3u8 for HLS playback.
operationId: vod_hour_no_timezone_vod__year_month___day___hour___camera_name__get
parameters:
- name: year_month
@@ -3041,11 +3118,15 @@ paths:
application/json:
schema:
$ref: "#/components/schemas/HTTPValidationError"
"/vod/{year_month}/{day}/{hour}/{camera_name}/{tz_name}":
/vod/{year_month}/{day}/{hour}/{camera_name}/{tz_name}:
get:
tags:
- Media
summary: Vod Hour
description: >-
Returns an HLS playlist for the specified date-time (with timezone) on
the specified camera. Append /master.m3u8 or /index.m3u8 for HLS
playback.
operationId: vod_hour_vod__year_month___day___hour___camera_name___tz_name__get
parameters:
- name: year_month
@@ -3090,11 +3171,14 @@ paths:
application/json:
schema:
$ref: "#/components/schemas/HTTPValidationError"
"/vod/event/{event_id}":
/vod/event/{event_id}:
get:
tags:
- Media
summary: Vod Event
description: >-
Returns an HLS playlist for the specified object. Append /master.m3u8 or
/index.m3u8 for HLS playback.
operationId: vod_event_vod_event__event_id__get
parameters:
- name: event_id
@@ -3115,11 +3199,15 @@ paths:
application/json:
schema:
$ref: "#/components/schemas/HTTPValidationError"
"/events/{event_id}/snapshot.jpg":
/events/{event_id}/snapshot.jpg:
get:
tags:
- Media
summary: Event Snapshot
description: >-
Returns a snapshot image for the specified object id. NOTE: The query
params only take affect while the event is in-progress. Once the event
has ended the snapshot configuration is used.
operationId: event_snapshot_events__event_id__snapshot_jpg_get
parameters:
- name: event_id
@@ -3190,7 +3278,7 @@ paths:
application/json:
schema:
$ref: "#/components/schemas/HTTPValidationError"
"/events/{event_id}/thumbnail.{extension}":
/events/{event_id}/thumbnail.{extension}:
get:
tags:
- Media
@@ -3240,7 +3328,7 @@ paths:
application/json:
schema:
$ref: "#/components/schemas/HTTPValidationError"
"/{camera_name}/grid.jpg":
/{camera_name}/grid.jpg:
get:
tags:
- Media
@@ -3279,7 +3367,7 @@ paths:
application/json:
schema:
$ref: "#/components/schemas/HTTPValidationError"
"/events/{event_id}/snapshot-clean.png":
/events/{event_id}/snapshot-clean.png:
get:
tags:
- Media
@@ -3311,7 +3399,7 @@ paths:
application/json:
schema:
$ref: "#/components/schemas/HTTPValidationError"
"/events/{event_id}/clip.mp4":
/events/{event_id}/clip.mp4:
get:
tags:
- Media
@@ -3336,7 +3424,7 @@ paths:
application/json:
schema:
$ref: "#/components/schemas/HTTPValidationError"
"/events/{event_id}/preview.gif":
/events/{event_id}/preview.gif:
get:
tags:
- Media
@@ -3361,7 +3449,7 @@ paths:
application/json:
schema:
$ref: "#/components/schemas/HTTPValidationError"
"/{camera_name}/start/{start_ts}/end/{end_ts}/preview.gif":
/{camera_name}/start/{start_ts}/end/{end_ts}/preview.gif:
get:
tags:
- Media
@@ -3407,7 +3495,7 @@ paths:
application/json:
schema:
$ref: "#/components/schemas/HTTPValidationError"
"/{camera_name}/start/{start_ts}/end/{end_ts}/preview.mp4":
/{camera_name}/start/{start_ts}/end/{end_ts}/preview.mp4:
get:
tags:
- Media
@@ -3453,7 +3541,7 @@ paths:
application/json:
schema:
$ref: "#/components/schemas/HTTPValidationError"
"/review/{event_id}/preview":
/review/{event_id}/preview:
get:
tags:
- Media
@@ -3488,7 +3576,7 @@ paths:
application/json:
schema:
$ref: "#/components/schemas/HTTPValidationError"
"/preview/{file_name}/thumbnail.webp":
/preview/{file_name}/thumbnail.webp:
get:
tags:
- Media
@@ -3514,7 +3602,7 @@ paths:
application/json:
schema:
$ref: "#/components/schemas/HTTPValidationError"
"/preview/{file_name}/thumbnail.jpg":
/preview/{file_name}/thumbnail.jpg:
get:
tags:
- Media
@@ -3540,7 +3628,7 @@ paths:
application/json:
schema:
$ref: "#/components/schemas/HTTPValidationError"
"/{camera_name}/{label}/thumbnail.jpg":
/{camera_name}/{label}/thumbnail.jpg:
get:
tags:
- Media
@@ -3571,7 +3659,7 @@ paths:
application/json:
schema:
$ref: "#/components/schemas/HTTPValidationError"
"/{camera_name}/{label}/best.jpg":
/{camera_name}/{label}/best.jpg:
get:
tags:
- Media
@@ -3602,7 +3690,7 @@ paths:
application/json:
schema:
$ref: "#/components/schemas/HTTPValidationError"
"/{camera_name}/{label}/clip.mp4":
/{camera_name}/{label}/clip.mp4:
get:
tags:
- Media
@@ -3633,7 +3721,7 @@ paths:
application/json:
schema:
$ref: "#/components/schemas/HTTPValidationError"
"/{camera_name}/{label}/snapshot.jpg":
/{camera_name}/{label}/snapshot.jpg:
get:
tags:
- Media
@@ -3985,6 +4073,23 @@ components:
title: End Time
type: object
title: EventsEndBody
EventsLPRBody:
properties:
recognizedLicensePlate:
type: string
maxLength: 100
title: Recognized License Plate
recognizedLicensePlateScore:
anyOf:
- type: number
maximum: 1
exclusiveMinimum: 0
- type: "null"
title: Score for recognized license plate
type: object
required:
- recognizedLicensePlate
title: EventsLPRBody
EventsSubLabelBody:
properties:
subLabel:
@@ -4105,6 +4210,15 @@ components:
- thumbnails
- snapshot
title: RegenerateDescriptionEnum
RenameFaceBody:
properties:
new_name:
type: string
title: New Name
type: object
required:
- new_name
title: RenameFaceBody
ReviewActivityMotionResponse:
properties:
start_time:

BIN
docs/static/img/plus/suggestions.webp vendored Normal file
View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

View File

@@ -20,7 +20,7 @@ from fastapi.encoders import jsonable_encoder
from fastapi.params import Depends
from fastapi.responses import JSONResponse, PlainTextResponse, StreamingResponse
from markupsafe import escape
from peewee import operator
from peewee import SQL, operator
from pydantic import ValidationError
from frigate.api.auth import require_role
@@ -685,7 +685,14 @@ def plusModels(request: Request, filterByCurrentModelDetector: bool = False):
@router.get("/recognized_license_plates")
def get_recognized_license_plates(split_joined: Optional[int] = None):
try:
events = Event.select(Event.data).distinct()
query = (
Event.select(
SQL("json_extract(data, '$.recognized_license_plate') AS plate")
)
.where(SQL("json_extract(data, '$.recognized_license_plate') IS NOT NULL"))
.distinct()
)
recognized_license_plates = [row[0] for row in query.tuples()]
except Exception:
return JSONResponse(
content=(
@@ -694,14 +701,6 @@ def get_recognized_license_plates(split_joined: Optional[int] = None):
status_code=404,
)
recognized_license_plates = []
for e in events:
if e.data is not None and "recognized_license_plate" in e.data:
recognized_license_plates.append(e.data["recognized_license_plate"])
while None in recognized_license_plates:
recognized_license_plates.remove(None)
if split_joined:
original_recognized_license_plates = recognized_license_plates.copy()
for recognized_license_plate in original_recognized_license_plates:

View File

@@ -33,6 +33,7 @@ from frigate.models import User
logger = logging.getLogger(__name__)
router = APIRouter(tags=[Tags.auth])
VALID_ROLES = ["admin", "viewer"]
class RateLimiter:
@@ -70,7 +71,7 @@ def get_remote_addr(request: Request):
)
if trusted_proxy.version == 4:
ipv4 = ip.ipv4_mapped if ip.version == 6 else ip
if ipv4 in trusted_proxy:
if ipv4 is not None and ipv4 in trusted_proxy:
trusted = True
logger.debug(f"Trusted: {str(ip)} by {str(trusted_proxy)}")
break
@@ -202,9 +203,15 @@ async def get_current_user(request: Request):
def require_role(required_roles: List[str]):
async def role_checker(request: Request):
proxy_config: ProxyConfig = request.app.frigate_config.proxy
# Get role from header (could be comma-separated)
role_header = request.headers.get("remote-role")
roles = [r.strip() for r in role_header.split(",")] if role_header else []
roles = (
[r.strip() for r in role_header.split(proxy_config.separator)]
if role_header
else []
)
# Check if we have any roles
if not roles:
@@ -266,11 +273,13 @@ def auth(request: Request):
else proxy_config.default_role
)
# if comma-separated with "admin", use "admin", else use default role
success_response.headers["remote-role"] = (
"admin"
if role and "admin" in [r.strip() for r in role.split(",")]
else proxy_config.default_role
# if comma-separated with "admin", use "admin",
# if comma-separated with "viewer", use "viewer",
# else use default role
roles = [r.strip() for r in role.split(proxy_config.separator)] if role else []
success_response.headers["remote-role"] = next(
(r for r in VALID_ROLES if r in roles), proxy_config.default_role
)
return success_response
@@ -395,7 +404,7 @@ def login(request: Request, body: AppPostLoginBody):
password_hash = db_user.password_hash
if verify_password(password, password_hash):
role = getattr(db_user, "role", "viewer")
if role not in ["admin", "viewer"]:
if role not in VALID_ROLES:
role = "viewer" # Enforce valid roles
expiration = int(time.time()) + JWT_SESSION_LENGTH
encoded_jwt = create_encoded_jwt(user, role, expiration, request.app.jwt_token)
@@ -425,7 +434,7 @@ def create_user(
if not re.match("^[A-Za-z0-9._]+$", body.username):
return JSONResponse(content={"message": "Invalid username"}, status_code=400)
role = body.role if body.role in ["admin", "viewer"] else "viewer"
role = body.role if body.role in VALID_ROLES else "viewer"
password_hash = hash_password(body.password, iterations=HASH_ITERATIONS)
User.insert(
{
@@ -438,8 +447,14 @@ def create_user(
return JSONResponse(content={"username": body.username})
@router.delete("/users/{username}")
def delete_user(username: str):
@router.delete("/users/{username}", dependencies=[Depends(require_role(["admin"]))])
def delete_user(request: Request, username: str):
# Prevent deletion of the built-in admin user
if username == "admin":
return JSONResponse(
content={"message": "Cannot delete admin user"}, status_code=403
)
User.delete_by_id(username)
return JSONResponse(content={"success": True})
@@ -496,7 +511,7 @@ async def update_role(
return JSONResponse(
content={"message": "Cannot modify admin user's role"}, status_code=403
)
if body.role not in ["admin", "viewer"]:
if body.role not in VALID_ROLES:
return JSONResponse(
content={"message": "Role must be 'admin' or 'viewer'"}, status_code=400
)

View File

@@ -154,7 +154,25 @@ def train_face(request: Request, name: str, body: dict = None):
x2 = x1 + int(face_box[2] * detect_config.width) - 4
y2 = y1 + int(face_box[3] * detect_config.height) - 4
face = snapshot[y1:y2, x1:x2]
cv2.imwrite(os.path.join(new_file_folder, new_name), face)
success = True
if face.size > 0:
try:
cv2.imwrite(os.path.join(new_file_folder, new_name), face)
success = True
except Exception:
pass
if not success:
return JSONResponse(
content=(
{
"success": False,
"message": "Invalid face box or no face exists",
}
),
status_code=404,
)
context: EmbeddingsContext = request.app.embeddings
context.clear_face_classifier()
@@ -196,7 +214,7 @@ async def register_face(request: Request, name: str, file: UploadFile):
)
context: EmbeddingsContext = request.app.embeddings
result = context.register_face(name, await file.read())
result = None if context is None else context.register_face(name, await file.read())
if not isinstance(result, dict):
return JSONResponse(

View File

@@ -1,6 +1,6 @@
from typing import Optional
from pydantic import BaseModel
from pydantic import BaseModel, Field
DEFAULT_TIME_RANGE = "00:00,24:00"
@@ -21,7 +21,14 @@ class EventsQueryParams(BaseModel):
has_clip: Optional[int] = None
has_snapshot: Optional[int] = None
in_progress: Optional[int] = None
include_thumbnails: Optional[int] = 1
include_thumbnails: Optional[int] = Field(
1,
description=(
"Deprecated. Thumbnail data is no longer included in the response. "
"Use the /api/events/:event_id/thumbnail.:extension endpoint instead."
),
deprecated=True,
)
favorites: Optional[int] = None
min_score: Optional[float] = None
max_score: Optional[float] = None
@@ -40,7 +47,14 @@ class EventsSearchQueryParams(BaseModel):
query: Optional[str] = None
event_id: Optional[str] = None
search_type: Optional[str] = "thumbnail"
include_thumbnails: Optional[int] = 1
include_thumbnails: Optional[int] = Field(
1,
description=(
"Deprecated. Thumbnail data is no longer included in the response. "
"Use the /api/events/:event_id/thumbnail.:extension endpoint instead."
),
deprecated=True,
)
limit: Optional[int] = 50
cameras: Optional[str] = "all"
labels: Optional[str] = "all"

View File

@@ -10,6 +10,11 @@ class Extension(str, Enum):
jpg = "jpg"
jpeg = "jpeg"
def get_mime_type(self) -> str:
if self in (Extension.jpg, Extension.jpeg):
return "image/jpeg"
return f"image/{self.value}"
class MediaLatestFrameQueryParams(BaseModel):
bbox: Optional[int] = None

View File

@@ -724,15 +724,24 @@ def events_search(request: Request, params: EventsSearchQueryParams = Depends())
if (sort is None or sort == "relevance") and search_results:
processed_events.sort(key=lambda x: x.get("search_distance", float("inf")))
elif min_score is not None and max_score is not None and sort == "score_asc":
elif sort == "score_asc":
processed_events.sort(key=lambda x: x["data"]["score"])
elif min_score is not None and max_score is not None and sort == "score_desc":
elif sort == "score_desc":
processed_events.sort(key=lambda x: x["data"]["score"], reverse=True)
elif min_speed is not None and max_speed is not None and sort == "speed_asc":
processed_events.sort(key=lambda x: x["data"]["average_estimated_speed"])
elif min_speed is not None and max_speed is not None and sort == "speed_desc":
elif sort == "speed_asc":
processed_events.sort(
key=lambda x: x["data"]["average_estimated_speed"], reverse=True
key=lambda x: (
x["data"].get("average_estimated_speed") is None,
x["data"].get("average_estimated_speed"),
)
)
elif sort == "speed_desc":
processed_events.sort(
key=lambda x: (
x["data"].get("average_estimated_speed") is None,
x["data"].get("average_estimated_speed", float("-inf")),
),
reverse=True,
)
elif sort == "date_asc":
processed_events.sort(key=lambda x: x["start_time"])

View File

@@ -8,6 +8,7 @@ from pathlib import Path
import psutil
from fastapi import APIRouter, Depends, Request
from fastapi.responses import JSONResponse
from pathvalidate import sanitize_filepath
from peewee import DoesNotExist
from playhouse.shortcuts import model_to_dict
@@ -15,7 +16,7 @@ from frigate.api.auth import require_role
from frigate.api.defs.request.export_recordings_body import ExportRecordingsBody
from frigate.api.defs.request.export_rename_body import ExportRenameBody
from frigate.api.defs.tags import Tags
from frigate.const import EXPORT_DIR
from frigate.const import CLIPS_DIR, EXPORT_DIR
from frigate.models import Export, Previews, Recordings
from frigate.record.export import (
PlaybackFactorEnum,
@@ -54,7 +55,14 @@ def export_recording(
playback_factor = body.playback
playback_source = body.source
friendly_name = body.name
existing_image = body.image_path
existing_image = sanitize_filepath(body.image_path) if body.image_path else None
# Ensure that existing_image is a valid path
if existing_image and not existing_image.startswith(CLIPS_DIR):
return JSONResponse(
content=({"success": False, "message": "Invalid image path"}),
status_code=400,
)
if playback_source == "recordings":
recordings_count = (

View File

@@ -142,15 +142,13 @@ def latest_frame(
"regions": params.regions,
}
quality = params.quality
mime_type = extension
if extension == "png":
if extension == Extension.png:
quality_params = None
elif extension == "webp":
elif extension == Extension.webp:
quality_params = [int(cv2.IMWRITE_WEBP_QUALITY), quality]
else:
else: # jpg or jpeg
quality_params = [int(cv2.IMWRITE_JPEG_QUALITY), quality]
mime_type = "jpeg"
if camera_name in request.app.frigate_config.cameras:
frame = frame_processor.get_current_frame(camera_name, draw_options)
@@ -193,18 +191,21 @@ def latest_frame(
frame = cv2.resize(frame, dsize=(width, height), interpolation=cv2.INTER_AREA)
_, img = cv2.imencode(f".{extension}", frame, quality_params)
_, img = cv2.imencode(f".{extension.value}", frame, quality_params)
return Response(
content=img.tobytes(),
media_type=f"image/{mime_type}",
media_type=extension.get_mime_type(),
headers={
"Content-Type": f"image/{mime_type}",
"Cache-Control": "no-store"
if not params.store
else "private, max-age=60",
},
)
elif camera_name == "birdseye" and request.app.frigate_config.birdseye.restream:
elif (
camera_name == "birdseye"
and request.app.frigate_config.birdseye.enabled
and request.app.frigate_config.birdseye.restream
):
frame = cv2.cvtColor(
frame_processor.get_current_frame(camera_name),
cv2.COLOR_YUV2BGR_I420,
@@ -215,12 +216,11 @@ def latest_frame(
frame = cv2.resize(frame, dsize=(width, height), interpolation=cv2.INTER_AREA)
_, img = cv2.imencode(f".{extension}", frame, quality_params)
_, img = cv2.imencode(f".{extension.value}", frame, quality_params)
return Response(
content=img.tobytes(),
media_type=f"image/{mime_type}",
media_type=extension.get_mime_type(),
headers={
"Content-Type": f"image/{mime_type}",
"Cache-Control": "no-store"
if not params.store
else "private, max-age=60",
@@ -593,9 +593,11 @@ def recording_clip(
clip: Recordings
for clip in recordings:
file.write(f"file '{clip.path}'\n")
# if this is the starting clip, add an inpoint
if clip.start_time < start_ts:
file.write(f"inpoint {int(start_ts - clip.start_time)}\n")
# if this is the ending clip, add an outpoint
if clip.end_time > end_ts:
file.write(f"outpoint {int(end_ts - clip.start_time)}\n")
@@ -638,10 +640,18 @@ def recording_clip(
)
@router.get("/vod/{camera_name}/start/{start_ts}/end/{end_ts}")
@router.get(
"/vod/{camera_name}/start/{start_ts}/end/{end_ts}",
description="Returns an HLS playlist for the specified timestamp-range on the specified camera. Append /master.m3u8 or /index.m3u8 for HLS playback.",
)
def vod_ts(camera_name: str, start_ts: float, end_ts: float):
recordings = (
Recordings.select(Recordings.path, Recordings.duration, Recordings.end_time)
Recordings.select(
Recordings.path,
Recordings.duration,
Recordings.end_time,
Recordings.start_time,
)
.where(
Recordings.start_time.between(start_ts, end_ts)
| Recordings.end_time.between(start_ts, end_ts)
@@ -661,14 +671,19 @@ def vod_ts(camera_name: str, start_ts: float, end_ts: float):
clip = {"type": "source", "path": recording.path}
duration = int(recording.duration * 1000)
# Determine if we need to end the last clip early
# adjust start offset if start_ts is after recording.start_time
if start_ts > recording.start_time:
inpoint = int((start_ts - recording.start_time) * 1000)
clip["clipFrom"] = inpoint
duration -= inpoint
# adjust end if recording.end_time is after end_ts
if recording.end_time > end_ts:
duration -= int((recording.end_time - end_ts) * 1000)
if duration == 0:
# this means the segment starts right at the end of the requested time range
# and it does not need to be included
continue
if duration <= 0:
# skip if the clip has no valid duration
continue
if 0 < duration < max_duration_ms:
clip["keyFrameDurations"] = [duration]
@@ -702,7 +717,10 @@ def vod_ts(camera_name: str, start_ts: float, end_ts: float):
)
@router.get("/vod/{year_month}/{day}/{hour}/{camera_name}")
@router.get(
"/vod/{year_month}/{day}/{hour}/{camera_name}",
description="Returns an HLS playlist for the specified date-time on the specified camera. Append /master.m3u8 or /index.m3u8 for HLS playback.",
)
def vod_hour_no_timezone(year_month: str, day: int, hour: int, camera_name: str):
"""VOD for specific hour. Uses the default timezone (UTC)."""
return vod_hour(
@@ -710,7 +728,10 @@ def vod_hour_no_timezone(year_month: str, day: int, hour: int, camera_name: str)
)
@router.get("/vod/{year_month}/{day}/{hour}/{camera_name}/{tz_name}")
@router.get(
"/vod/{year_month}/{day}/{hour}/{camera_name}/{tz_name}",
description="Returns an HLS playlist for the specified date-time (with timezone) on the specified camera. Append /master.m3u8 or /index.m3u8 for HLS playback.",
)
def vod_hour(year_month: str, day: int, hour: int, camera_name: str, tz_name: str):
parts = year_month.split("-")
start_date = (
@@ -724,8 +745,14 @@ def vod_hour(year_month: str, day: int, hour: int, camera_name: str, tz_name: st
return vod_ts(camera_name, start_ts, end_ts)
@router.get("/vod/event/{event_id}")
def vod_event(event_id: str):
@router.get(
"/vod/event/{event_id}",
description="Returns an HLS playlist for the specified object. Append /master.m3u8 or /index.m3u8 for HLS playback.",
)
def vod_event(
event_id: str,
padding: int = Query(0, description="Padding to apply to the vod."),
):
try:
event: Event = Event.get(Event.id == event_id)
except DoesNotExist:
@@ -748,35 +775,29 @@ def vod_event(event_id: str):
status_code=404,
)
clip_path = os.path.join(CLIPS_DIR, f"{event.camera}-{event.id}.mp4")
if not os.path.isfile(clip_path):
end_ts = (
datetime.now().timestamp() if event.end_time is None else event.end_time
)
vod_response = vod_ts(event.camera, event.start_time, end_ts)
# If the recordings are not found and the event started more than 5 minutes ago, set has_clip to false
if (
event.start_time < datetime.now().timestamp() - 300
and type(vod_response) is tuple
and len(vod_response) == 2
and vod_response[1] == 404
):
Event.update(has_clip=False).where(Event.id == event_id).execute()
return vod_response
duration = int((event.end_time - event.start_time) * 1000)
return JSONResponse(
content={
"cache": True,
"discontinuity": False,
"durations": [duration],
"sequences": [{"clips": [{"type": "source", "path": clip_path}]}],
}
end_ts = (
datetime.now().timestamp()
if event.end_time is None
else (event.end_time + padding)
)
vod_response = vod_ts(event.camera, event.start_time - padding, end_ts)
# If the recordings are not found and the event started more than 5 minutes ago, set has_clip to false
if (
event.start_time < datetime.now().timestamp() - 300
and type(vod_response) is tuple
and len(vod_response) == 2
and vod_response[1] == 404
):
Event.update(has_clip=False).where(Event.id == event_id).execute()
return vod_response
@router.get("/events/{event_id}/snapshot.jpg")
@router.get(
"/events/{event_id}/snapshot.jpg",
description="Returns a snapshot image for the specified object id. NOTE: The query params only take affect while the event is in-progress. Once the event has ended the snapshot configuration is used.",
)
def event_snapshot(
request: Request,
event_id: str,
@@ -851,7 +872,7 @@ def event_snapshot(
def event_thumbnail(
request: Request,
event_id: str,
extension: str,
extension: Extension,
max_cache_age: int = Query(
2592000, description="Max cache age in seconds. Default 30 days in seconds."
),
@@ -876,7 +897,7 @@ def event_thumbnail(
if event_id in camera_state.tracked_objects:
tracked_obj = camera_state.tracked_objects.get(event_id)
if tracked_obj is not None:
thumbnail_bytes = tracked_obj.get_thumbnail(extension)
thumbnail_bytes = tracked_obj.get_thumbnail(extension.value)
except Exception:
return JSONResponse(
content={"success": False, "message": "Event not found"},
@@ -904,23 +925,21 @@ def event_thumbnail(
)
quality_params = None
if extension == "jpg" or extension == "jpeg":
if extension in (Extension.jpg, Extension.jpeg):
quality_params = [int(cv2.IMWRITE_JPEG_QUALITY), 70]
elif extension == "webp":
elif extension == Extension.webp:
quality_params = [int(cv2.IMWRITE_WEBP_QUALITY), 60]
_, img = cv2.imencode(f".{extension}", thumbnail, quality_params)
_, img = cv2.imencode(f".{extension.value}", thumbnail, quality_params)
thumbnail_bytes = img.tobytes()
return Response(
thumbnail_bytes,
media_type=f"image/{extension}",
media_type=extension.get_mime_type(),
headers={
"Cache-Control": f"private, max-age={max_cache_age}"
if event_complete
else "no-store",
"Content-Type": f"image/{extension}",
},
)
@@ -1131,7 +1150,11 @@ def event_snapshot_clean(request: Request, event_id: str, download: bool = False
@router.get("/events/{event_id}/clip.mp4")
def event_clip(request: Request, event_id: str):
def event_clip(
request: Request,
event_id: str,
padding: int = Query(0, description="Padding to apply to clip."),
):
try:
event: Event = Event.get(Event.id == event_id)
except DoesNotExist:
@@ -1144,8 +1167,12 @@ def event_clip(request: Request, event_id: str):
content={"success": False, "message": "Clip not available"}, status_code=404
)
end_ts = datetime.now().timestamp() if event.end_time is None else event.end_time
return recording_clip(request, event.camera, event.start_time, end_ts)
end_ts = (
datetime.now().timestamp()
if event.end_time is None
else event.end_time + padding
)
return recording_clip(request, event.camera, event.start_time - padding, end_ts)
@router.get("/events/{event_id}/preview.gif")
@@ -1571,7 +1598,7 @@ def label_thumbnail(request: Request, camera_name: str, label: str):
try:
event_id = event_query.scalar()
return event_thumbnail(request, event_id, 60)
return event_thumbnail(request, event_id, Extension.jpg, 60)
except DoesNotExist:
frame = np.zeros((175, 175, 3), np.uint8)
ret, jpg = cv2.imencode(".jpg", frame, [int(cv2.IMWRITE_JPEG_QUALITY), 70])

View File

@@ -21,7 +21,12 @@ router = APIRouter(tags=[Tags.notifications])
@router.get("/notifications/pubkey")
def get_vapid_pub_key(request: Request):
if not request.app.frigate_config.notifications.enabled:
config = request.app.frigate_config
notifications_enabled = config.notifications.enabled
camera_notifications_enabled = [
c for c in config.cameras.values() if c.enabled and c.notifications.enabled
]
if not (notifications_enabled or camera_notifications_enabled):
return JSONResponse(
content=({"success": False, "message": "Notifications are not enabled."}),
status_code=400,

View File

@@ -58,9 +58,8 @@ async def review(
)
clauses = [
(ReviewSegment.start_time > after)
& (ReviewSegment.start_time < before)
& ((ReviewSegment.end_time.is_null(True)) | (ReviewSegment.end_time < before))
(ReviewSegment.start_time < before)
& ((ReviewSegment.end_time.is_null(True)) | (ReviewSegment.end_time > after))
]
if cameras != "all":

View File

@@ -6,6 +6,7 @@ import secrets
import shutil
from multiprocessing import Queue
from multiprocessing.synchronize import Event as MpEvent
from pathlib import Path
from typing import Optional
import psutil
@@ -44,6 +45,7 @@ from frigate.embeddings import EmbeddingsContext, manage_embeddings
from frigate.events.audio import AudioProcessor
from frigate.events.cleanup import EventCleanup
from frigate.events.maintainer import EventProcessor
from frigate.log import _stop_logging
from frigate.models import (
Event,
Export,
@@ -71,6 +73,7 @@ from frigate.track.object_processing import TrackedObjectProcessor
from frigate.util.builtin import empty_and_close_queue
from frigate.util.image import SharedMemoryFrameManager, UntrackedSharedMemory
from frigate.util.object import get_camera_regions_grid
from frigate.util.services import set_file_limit
from frigate.version import VERSION
from frigate.video import capture_camera, track_camera
from frigate.watchdog import FrigateWatchdog
@@ -247,6 +250,7 @@ class FrigateApp:
and not genai_cameras
and not self.config.lpr.enabled
and not self.config.face_recognition.enabled
and not self.config.classification.bird.enabled
):
return
@@ -438,7 +442,7 @@ class FrigateApp:
def start_camera_processors(self) -> None:
for name, config in self.config.cameras.items():
if not self.config.cameras[name].enabled:
if not self.config.cameras[name].enabled_in_config:
logger.info(f"Camera processor not started for disabled camera {name}")
continue
@@ -467,7 +471,7 @@ class FrigateApp:
shm_frame_count = self.shm_frame_count()
for name, config in self.config.cameras.items():
if not self.config.cameras[name].enabled:
if not self.config.cameras[name].enabled_in_config:
logger.info(f"Capture process not started for disabled camera {name}")
continue
@@ -630,6 +634,9 @@ class FrigateApp:
# Ensure global state.
self.ensure_dirs()
# Set soft file limits.
set_file_limit()
# Start frigate services.
self.init_camera_metrics()
self.init_queues()
@@ -684,6 +691,9 @@ class FrigateApp:
def stop(self) -> None:
logger.info("Stopping...")
# used by the docker healthcheck
Path("/dev/shm/.frigate-is-stopping").touch()
self.stop_event.set()
# set an end_time on entries without an end_time before exiting
@@ -771,4 +781,7 @@ class FrigateApp:
shm.close()
shm.unlink()
# exit the mp Manager process
_stop_logging()
os._exit(os.EX_OK)

View File

@@ -172,6 +172,7 @@ class CameraState:
# draw any attributes
for attribute in obj["current_attributes"]:
box = attribute["box"]
box_area = int((box[2] - box[0]) * (box[3] - box[1]))
draw_box_with_label(
frame_copy,
box[0],
@@ -179,7 +180,7 @@ class CameraState:
box[2],
box[3],
attribute["label"],
f"{attribute['score']:.0%}",
f"{attribute['score']:.0%} {str(box_area)}",
thickness=thickness,
color=color,
)
@@ -255,6 +256,7 @@ class CameraState:
updated_ids = current_ids.intersection(previous_ids)
for id in new_ids:
logger.debug(f"{self.name}: New tracked object ID: {id}")
new_obj = tracked_objects[id] = TrackedObject(
self.config.model,
self.camera_config,
@@ -264,7 +266,13 @@ class CameraState:
)
# add initial frame to frame cache
self.frame_cache[frame_time] = np.copy(current_frame)
logger.debug(
f"{self.name}: New object, adding {frame_time} to frame cache for {id}"
)
self.frame_cache[frame_time] = {
"frame": np.copy(current_frame),
"object_id": id,
}
# save initial thumbnail data and best object
thumbnail_data = {
@@ -282,9 +290,11 @@ class CameraState:
}
new_obj.thumbnail_data = thumbnail_data
tracked_objects[id].thumbnail_data = thumbnail_data
self.best_objects[new_obj.obj_data["label"]] = new_obj
object_type = new_obj.obj_data["label"]
# call event handlers
self.send_mqtt_snapshot(new_obj, object_type)
for c in self.callbacks["start"]:
c(self.name, new_obj, frame_name)
@@ -306,7 +316,13 @@ class CameraState:
updated_obj.thumbnail_data["frame_time"] == frame_time
and frame_time not in self.frame_cache
):
self.frame_cache[frame_time] = np.copy(current_frame)
logger.debug(
f"{self.name}: Existing object, adding {frame_time} to frame cache for {id}"
)
self.frame_cache[frame_time] = {
"frame": np.copy(current_frame),
"object_id": id,
}
updated_obj.last_updated = frame_time
@@ -332,6 +348,7 @@ class CameraState:
removed_obj = tracked_objects[id]
if "end_time" not in removed_obj.obj_data:
removed_obj.obj_data["end_time"] = frame_time
logger.debug(f"{self.name}: end callback for object {id}")
for c in self.callbacks["end"]:
c(self.name, removed_obj, frame_name)
@@ -398,13 +415,9 @@ class CameraState:
or (now - current_best.thumbnail_data["frame_time"])
> self.camera_config.best_image_timeout
):
self.best_objects[object_type] = obj
for c in self.callbacks["snapshot"]:
c(self.name, self.best_objects[object_type], frame_name)
self.send_mqtt_snapshot(obj, object_type)
else:
self.best_objects[object_type] = obj
for c in self.callbacks["snapshot"]:
c(self.name, self.best_objects[object_type], frame_name)
self.send_mqtt_snapshot(obj, object_type)
for c in self.callbacks["camera_activity"]:
c(self.name, camera_activity)
@@ -413,7 +426,7 @@ class CameraState:
current_thumb_frames = {
obj.thumbnail_data["frame_time"]
for obj in tracked_objects.values()
if not obj.false_positive and obj.thumbnail_data is not None
if obj.thumbnail_data is not None
}
current_best_frames = {
obj.thumbnail_data["frame_time"] for obj in self.best_objects.values()
@@ -423,7 +436,20 @@ class CameraState:
for t in self.frame_cache.keys()
if t not in current_thumb_frames and t not in current_best_frames
]
if len(thumb_frames_to_delete) > 0:
logger.debug(f"{self.name}: Current frame cache contents:")
for k, v in self.frame_cache.items():
logger.debug(f" frame time: {k}, object id: {v['object_id']}")
for obj_id, obj in tracked_objects.items():
thumb_time = (
obj.thumbnail_data["frame_time"] if obj.thumbnail_data else None
)
logger.debug(
f"{self.name}: Tracked object {obj_id} thumbnail frame_time: {thumb_time}, false positive: {obj.false_positive}"
)
for t in thumb_frames_to_delete:
object_id = self.frame_cache[t].get("object_id", "unknown")
logger.debug(f"{self.name}: Deleting {t} from frame cache for {object_id}")
del self.frame_cache[t]
with self.current_frame_lock:
@@ -440,6 +466,20 @@ class CameraState:
self.previous_frame_id = frame_name
def send_mqtt_snapshot(self, new_obj: TrackedObject, object_type: str) -> None:
for c in self.callbacks["snapshot"]:
updated = c(self.name, new_obj)
# if the snapshot was not updated, then this object is not a best object
# but all new objects should be considered the next best object
# so we remove the label from the best objects
if updated:
self.best_objects[object_type] = new_obj
else:
if object_type in self.best_objects:
self.best_objects.pop(object_type)
break
def save_manual_event_image(
self,
frame: np.ndarray | None,

View File

@@ -12,6 +12,7 @@ from typing import Any, Callable
from py_vapid import Vapid01
from pywebpush import WebPusher
from titlecase import titlecase
from frigate.comms.base_communicator import Communicator
from frigate.comms.config_updater import ConfigSubscriber
@@ -173,7 +174,12 @@ class WebPushClient(Communicator): # type: ignore[misc]
return
self.send_alert(decoded)
elif topic == "notification_test":
if not self.config.notifications.enabled:
if not self.config.notifications.enabled and not any(
cam.notifications.enabled for cam in self.config.cameras.values()
):
logger.debug(
"No cameras have notifications enabled, test notification not sent"
)
return
self.send_notification_test()
@@ -235,6 +241,9 @@ class WebPushClient(Communicator): # type: ignore[misc]
self.expired_subs.setdefault(notification.user, []).append(
endpoint
)
logger.debug(
f"Notification endpoint expired for {notification.user}, received {resp.status_code}"
)
elif resp.status_code != 201:
logger.warning(
f"Failed to send notification to {notification.user} :: {resp.status_code}"
@@ -251,6 +260,8 @@ class WebPushClient(Communicator): # type: ignore[misc]
self.check_registrations()
logger.debug("Sending test notification")
for user in self.web_pushers:
self.send_push_notification(
user=user,
@@ -320,8 +331,8 @@ class WebPushClient(Communicator): # type: ignore[misc]
sorted_objects.update(payload["after"]["data"]["sub_labels"])
title = f"{', '.join(sorted_objects).replace('_', ' ').title()}{' was' if state == 'end' else ''} detected in {', '.join(payload['after']['data']['zones']).replace('_', ' ').title()}"
message = f"Detected on {camera.replace('_', ' ').title()}"
title = f"{titlecase(', '.join(sorted_objects).replace('_', ' '))}{' was' if state == 'end' else ''} detected in {titlecase(', '.join(payload['after']['data']['zones']).replace('_', ' '))}"
message = f"Detected on {titlecase(camera.replace('_', ' '))}"
image = f"{payload['after']['thumb_path'].replace('/media/frigate', '')}"
# if event is ongoing open to live view otherwise open to recordings view

View File

@@ -61,6 +61,7 @@ class FfmpegConfig(FrigateBaseModel):
retry_interval: float = Field(
default=10.0,
title="Time in seconds to wait before FFmpeg retries connecting to the camera.",
gt=0.0,
)
apple_compatibility: bool = Field(
default=False,

View File

@@ -78,7 +78,13 @@ class FaceRecognitionConfig(FrigateBaseModel):
le=1.0,
)
min_area: int = Field(
default=500, title="Min area of face box to consider running face recognition."
default=750, title="Min area of face box to consider running face recognition."
)
min_faces: int = Field(
default=1,
gt=0,
le=6,
title="Min face recognitions for the sub label to be applied to the person object.",
)
save_attempts: int = Field(
default=100, ge=0, title="Number of face attempts to save in the train tab."
@@ -91,7 +97,7 @@ class FaceRecognitionConfig(FrigateBaseModel):
class CameraFaceRecognitionConfig(FrigateBaseModel):
enabled: bool = Field(default=False, title="Enable face recognition.")
min_area: int = Field(
default=500, title="Min area of face box to consider running face recognition."
default=750, title="Min area of face box to consider running face recognition."
)
model_config = ConfigDict(extra="forbid", protected_namespaces=())

View File

@@ -299,6 +299,22 @@ def verify_motion_and_detect(camera_config: CameraConfig) -> ValueError | None:
)
def verify_objects_track(
camera_config: CameraConfig, enabled_objects: list[str]
) -> None:
"""Verify that a user has not specified an object to track that is not in the labelmap."""
valid_objects = [
obj for obj in camera_config.objects.track if obj in enabled_objects
]
if len(valid_objects) != len(camera_config.objects.track):
invalid_objects = set(camera_config.objects.track) - set(valid_objects)
logger.warning(
f"{camera_config.name} is configured to track {list(invalid_objects)} objects, which are not supported by the current model."
)
camera_config.objects.track = valid_objects
def verify_lpr_and_face(
frigate_config: FrigateConfig, camera_config: CameraConfig
) -> ValueError | None:
@@ -471,6 +487,37 @@ class FrigateConfig(FrigateBaseModel):
exclude_unset=True,
)
for key, detector in self.detectors.items():
adapter = TypeAdapter(DetectorConfig)
model_dict = (
detector
if isinstance(detector, dict)
else detector.model_dump(warnings="none")
)
detector_config: BaseDetectorConfig = adapter.validate_python(model_dict)
# users should not set model themselves
if detector_config.model:
detector_config.model = None
model_config = self.model.model_dump(exclude_unset=True, warnings="none")
if detector_config.model_path:
model_config["path"] = detector_config.model_path
if "path" not in model_config:
if detector_config.type == "cpu":
model_config["path"] = "/cpu_model.tflite"
elif detector_config.type == "edgetpu":
model_config["path"] = "/edgetpu_model.tflite"
model = ModelConfig.model_validate(model_config)
model.check_and_load_plus_model(self.plus_api, detector_config.type)
model.compute_model_hash()
labelmap_objects = model.merged_labelmap.values()
detector_config.model = model
self.detectors[key] = detector_config
for name, camera in self.cameras.items():
modified_global_config = global_config.copy()
@@ -644,6 +691,7 @@ class FrigateConfig(FrigateBaseModel):
verify_required_zones_exist(camera_config)
verify_autotrack_zones(camera_config)
verify_motion_and_detect(camera_config)
verify_objects_track(camera_config, labelmap_objects)
verify_lpr_and_face(self, camera_config)
self.objects.parse_all_objects(self.cameras)
@@ -655,36 +703,6 @@ class FrigateConfig(FrigateBaseModel):
"Frigate+ is configured but clean snapshots are not enabled, submissions to Frigate+ will not be possible./"
)
for key, detector in self.detectors.items():
adapter = TypeAdapter(DetectorConfig)
model_dict = (
detector
if isinstance(detector, dict)
else detector.model_dump(warnings="none")
)
detector_config: BaseDetectorConfig = adapter.validate_python(model_dict)
# users should not set model themselves
if detector_config.model:
detector_config.model = None
model_config = self.model.model_dump(exclude_unset=True, warnings="none")
if detector_config.model_path:
model_config["path"] = detector_config.model_path
if "path" not in model_config:
if detector_config.type == "cpu":
model_config["path"] = "/cpu_model.tflite"
elif detector_config.type == "edgetpu":
model_config["path"] = "/edgetpu_model.tflite"
model = ModelConfig.model_validate(model_config)
model.check_and_load_plus_model(self.plus_api, detector_config.type)
model.compute_model_hash()
detector_config.model = model
self.detectors[key] = detector_config
return self
@field_validator("cameras")

View File

@@ -1,6 +1,6 @@
from typing import Optional
from pydantic import Field
from pydantic import Field, field_validator
from .base import FrigateBaseModel
from .env import EnvString
@@ -33,3 +33,14 @@ class ProxyConfig(FrigateBaseModel):
default_role: Optional[str] = Field(
default="viewer", title="Default role for proxy users."
)
separator: Optional[str] = Field(
default=",",
title="The character used to separate values in a mapped header.",
)
@field_validator("separator", mode="before")
@classmethod
def validate_separator_length(cls, v):
if v is not None and len(v) != 1:
raise ValueError("Separator must be exactly one character")
return v

View File

@@ -1,3 +1,5 @@
from typing import Optional
from pydantic import Field
from .base import FrigateBaseModel
@@ -11,8 +13,8 @@ class StatsConfig(FrigateBaseModel):
network_bandwidth: bool = Field(
default=False, title="Enable network bandwidth for ffmpeg processes."
)
sriov: bool = Field(
default=False, title="Treat device as SR-IOV to support GPU stats."
intel_gpu_device: Optional[str] = Field(
default=None, title="Define the device to use when gathering SR-IOV stats."
)

View File

@@ -26,6 +26,7 @@ DEFAULT_ATTRIBUTE_LABEL_MAP = {
"car": [
"amazon",
"an_post",
"canada_post",
"dhl",
"dpd",
"fedex",
@@ -35,6 +36,7 @@ DEFAULT_ATTRIBUTE_LABEL_MAP = {
"postnl",
"postnord",
"purolator",
"royal_mail",
"ups",
"usps",
],
@@ -70,6 +72,7 @@ LIBAVFORMAT_VERSION_MAJOR = int(os.environ.get("LIBAVFORMAT_VERSION_MAJOR", "59"
FFMPEG_HWACCEL_NVIDIA = "preset-nvidia"
FFMPEG_HWACCEL_VAAPI = "preset-vaapi"
FFMPEG_HWACCEL_VULKAN = "preset-vulkan"
FFMPEG_HWACCEL_RKMPP = "preset-rkmpp"
FFMPEG_HVC1_ARGS = ["-tag:v", "hvc1"]
# Regex constants

View File

@@ -108,21 +108,24 @@ class FaceRecognizer(ABC):
image, M, (output_width, output_height), flags=cv2.INTER_CUBIC
)
def get_blur_factor(self, input: np.ndarray) -> float:
"""Calculates the factor for the confidence based on the blur of the image."""
def get_blur_confidence_reduction(self, input: np.ndarray) -> float:
"""Calculates the reduction in confidence based on the blur of the image."""
if not self.config.face_recognition.blur_confidence_filter:
return 1.0
return 0.0
variance = cv2.Laplacian(input, cv2.CV_64F).var()
logger.debug(f"face detected with blurriness {variance}")
if variance < 60: # image is very blurry
return 0.96
elif variance < 70: # image moderately blurry
return 0.98
elif variance < 80: # image is slightly blurry
return 0.99
if variance < 120: # image is very blurry
return 0.06
elif variance < 160: # image moderately blurry
return 0.04
elif variance < 200: # image is slightly blurry
return 0.02
elif variance < 250: # image is mostly clear
return 0.01
else:
return 1.0
return 0.0
def similarity_to_confidence(
@@ -234,8 +237,7 @@ class FaceNetRecognizer(FaceRecognizer):
# face recognition is best run on grayscale images
# get blur factor before aligning face
blur_factor = self.get_blur_factor(face_image)
logger.debug(f"face detected with blurriness {blur_factor}")
blur_reduction = self.get_blur_confidence_reduction(face_image)
# align face and run recognition
img = self.align_face(face_image, face_image.shape[1], face_image.shape[0])
@@ -258,7 +260,7 @@ class FaceNetRecognizer(FaceRecognizer):
score = confidence
label = name
return label, round(score * blur_factor, 2)
return label, round(score - blur_reduction, 2)
class ArcFaceRecognizer(FaceRecognizer):
@@ -344,9 +346,8 @@ class ArcFaceRecognizer(FaceRecognizer):
# face recognition is best run on grayscale images
# get blur factor before aligning face
blur_factor = self.get_blur_factor(face_image)
logger.debug(f"face detected with blurriness {blur_factor}")
# get blur reduction before aligning face
blur_reduction = self.get_blur_confidence_reduction(face_image)
# align face and run recognition
img = self.align_face(face_image, face_image.shape[1], face_image.shape[0])
@@ -367,4 +368,4 @@ class ArcFaceRecognizer(FaceRecognizer):
score = confidence
label = name
return label, round(score * blur_factor, 2)
return label, round(score - blur_reduction, 2)

View File

@@ -167,6 +167,8 @@ class LicensePlateProcessingMixin:
outputs = self.model_runner.recognition_model(norm_images)
except Exception as e:
logger.warning(f"Error running LPR recognition model: {e}")
return [], []
return self.ctc_decoder(outputs)
def _process_license_plate(
@@ -1498,18 +1500,24 @@ class LicensePlateProcessingMixin:
# Determine subLabel based on known plates, use regex matching
# Default to the detected plate, use label name if there's a match
sub_label = next(
(
label
for label, plates in self.lpr_config.known_plates.items()
if any(
re.match(f"^{plate}$", top_plate)
or distance(plate, top_plate) <= self.lpr_config.match_distance
for plate in plates
)
),
None,
)
try:
sub_label = next(
(
label
for label, plates in self.lpr_config.known_plates.items()
if any(
re.match(f"^{plate}$", top_plate)
or distance(plate, top_plate) <= self.lpr_config.match_distance
for plate in plates
)
),
None,
)
except re.error:
logger.error(
f"{camera}: Invalid regex in known plates configuration: {self.lpr_config.known_plates}"
)
sub_label = None
# If it's a known plate, publish to sub_label
if sub_label is not None:
@@ -1570,10 +1578,13 @@ class LicensePlateProcessingMixin:
def handle_request(self, topic, request_data) -> dict[str, Any] | None:
return
def expire_object(self, object_id: str, camera: str):
def lpr_expire(self, object_id: str, camera: str):
if object_id in self.detected_license_plates:
self.detected_license_plates.pop(object_id)
if object_id in self.camera_current_cars.get(camera, []):
self.camera_current_cars[camera].remove(object_id)
class CTCDecoder:
"""

View File

@@ -41,10 +41,13 @@ class BirdRealTimeProcessor(RealTimeProcessorApi):
self.detected_birds: dict[str, float] = {}
self.labelmap: dict[int, str] = {}
GITHUB_RAW_ENDPOINT = os.environ.get(
"GITHUB_RAW_ENDPOINT", "https://raw.githubusercontent.com"
)
download_path = os.path.join(MODEL_CACHE_DIR, "bird")
self.model_files = {
"bird.tflite": "https://raw.githubusercontent.com/google-coral/test_data/master/mobilenet_v2_1.0_224_inat_bird_quant.tflite",
"birdmap.txt": "https://raw.githubusercontent.com/google-coral/test_data/master/inat_bird_labels.txt",
"bird.tflite": f"{GITHUB_RAW_ENDPOINT}/google-coral/test_data/master/mobilenet_v2_1.0_224_inat_bird_quant.tflite",
"birdmap.txt": f"{GITHUB_RAW_ENDPOINT}/google-coral/test_data/master/inat_bird_labels.txt",
}
if not all(
@@ -97,6 +100,9 @@ class BirdRealTimeProcessor(RealTimeProcessorApi):
line = f.readline()
def process_frame(self, obj_data, frame):
if not self.interpreter:
return
if obj_data["label"] != "bird":
return
@@ -106,7 +112,13 @@ class BirdRealTimeProcessor(RealTimeProcessorApi):
obj_data["box"][1],
obj_data["box"][2],
obj_data["box"][3],
224,
int(
max(
obj_data["box"][1] - obj_data["box"][0],
obj_data["box"][3] - obj_data["box"][2],
)
* 1.1
),
1.0,
)

View File

@@ -6,6 +6,7 @@ import json
import logging
import os
import shutil
from pathlib import Path
from typing import Any, Optional
import cv2
@@ -59,10 +60,12 @@ class FaceRealTimeProcessor(RealTimeProcessorApi):
self.faces_per_second = EventsPerSecond()
self.inference_speed = InferenceSpeed(self.metrics.face_rec_speed)
GITHUB_ENDPOINT = os.environ.get("GITHUB_ENDPOINT", "https://github.com")
download_path = os.path.join(MODEL_CACHE_DIR, "facedet")
self.model_files = {
"facedet.onnx": "https://github.com/NickM-27/facenet-onnx/releases/download/v1.0/facedet.onnx",
"landmarkdet.yaml": "https://github.com/NickM-27/facenet-onnx/releases/download/v1.0/landmarkdet.yaml",
"facedet.onnx": f"{GITHUB_ENDPOINT}/NickM-27/facenet-onnx/releases/download/v1.0/facedet.onnx",
"landmarkdet.yaml": f"{GITHUB_ENDPOINT}/NickM-27/facenet-onnx/releases/download/v1.0/landmarkdet.yaml",
}
if not all(
@@ -293,10 +296,11 @@ class FaceRealTimeProcessor(RealTimeProcessorApi):
if camera not in self.camera_current_people:
self.camera_current_people[camera] = []
self.camera_current_people[camera].append(id)
self.person_face_history[id].append(
(sub_label, score, face_frame.shape[0] * face_frame.shape[1])
)
self.camera_current_people[camera].append(id)
(weighted_sub_label, weighted_score) = self.weighted_average(
self.person_face_history[id]
)
@@ -439,18 +443,6 @@ class FaceRealTimeProcessor(RealTimeProcessorApi):
if object_id in self.camera_current_people.get(camera, []):
self.camera_current_people[camera].remove(object_id)
if len(self.camera_current_people[camera]) == 0:
self.requestor.send_data(
"tracked_object_update",
json.dumps(
{
"type": TrackedObjectUpdateTypesEnum.face,
"name": None,
"camera": camera,
}
),
)
def weighted_average(
self, results_list: list[tuple[str, float, int]], max_weight: int = 4000
):
@@ -467,17 +459,22 @@ class FaceRealTimeProcessor(RealTimeProcessorApi):
if not results_list:
return None, 0.0
weighted_scores = {}
total_weights = {}
counts: dict[str, int] = {}
weighted_scores: dict[str, int] = {}
total_weights: dict[str, int] = {}
for name, score, face_area in results_list:
if name == "unknown":
continue
if name not in weighted_scores:
counts[name] = 0
weighted_scores[name] = 0.0
total_weights[name] = 0.0
# increase count
counts[name] += 1
# Capped weight based on face area
weight = min(face_area, max_weight)
@@ -490,6 +487,16 @@ class FaceRealTimeProcessor(RealTimeProcessorApi):
return None, 0.0
best_name = max(weighted_scores, key=weighted_scores.get)
# If the number of faces for this person < min_faces, we are not confident it is a correct result
if counts[best_name] < self.face_config.min_faces:
return None, 0.0
# If the best name has the same number of results as another name, we are not confident it is a correct result
for name, count in counts.items():
if name != best_name and counts[best_name] == count:
return None, 0.0
weighted_average = weighted_scores[best_name] / total_weights[best_name]
return best_name, weighted_average
@@ -523,4 +530,4 @@ class FaceRealTimeProcessor(RealTimeProcessorApi):
# delete oldest face image if maximum is reached
if len(files) > self.config.face_recognition.save_attempts:
os.unlink(os.path.join(folder, files[-1]))
Path(os.path.join(folder, files[-1])).unlink(missing_ok=True)

View File

@@ -1,6 +1,5 @@
"""Handle processing images for face detection and recognition."""
import json
import logging
from typing import Any
@@ -15,7 +14,6 @@ from frigate.data_processing.common.license_plate.mixin import (
from frigate.data_processing.common.license_plate.model import (
LicensePlateModelRunner,
)
from frigate.types import TrackedObjectUpdateTypesEnum
from ..types import DataProcessorMetrics
from .api import RealTimeProcessorApi
@@ -55,21 +53,5 @@ class LicensePlateRealTimeProcessor(LicensePlateProcessingMixin, RealTimeProcess
return
def expire_object(self, object_id: str, camera: str):
if object_id in self.detected_license_plates:
self.detected_license_plates.pop(object_id)
if object_id in self.camera_current_cars.get(camera, []):
self.camera_current_cars[camera].remove(object_id)
if len(self.camera_current_cars[camera]) == 0:
self.requestor.send_data(
"tracked_object_update",
json.dumps(
{
"type": TrackedObjectUpdateTypesEnum.lpr,
"name": None,
"plate": None,
"camera": camera,
}
),
)
"""Expire lpr objects."""
self.lpr_expire(object_id, camera)

View File

@@ -158,6 +158,13 @@ class ModelConfig(BaseModel):
self.input_pixel_format = model_info["pixelFormat"]
self.model_type = model_info["type"]
if model_info.get("inputDataType"):
self.input_dtype = model_info["inputDataType"]
# RKNN always uses NHWC
if detector == "rknn":
self.input_tensor = InputTensorEnum.nhwc
# generate list of attribute labels
self.attributes_map = {
**model_info.get("attributes", DEFAULT_ATTRIBUTE_LABEL_MAP),

View File

@@ -345,11 +345,17 @@ class HailoDetector(DetectionApi):
request_id = self.input_store.put(tensor_input)
try:
_, infer_results = self.response_store.get(request_id, timeout=10.0)
_, infer_results = self.response_store.get(request_id, timeout=1.0)
except TimeoutError:
logger.error(
f"Timeout waiting for inference results for request {request_id}"
)
if not self.inference_thread.is_alive():
raise RuntimeError(
"HailoRT inference thread has stopped, restart required."
)
return np.zeros((20, 6), dtype=np.float32)
if isinstance(infer_results, list) and len(infer_results) == 1:

View File

@@ -3,11 +3,9 @@ import os
import numpy as np
import openvino as ov
import openvino.properties as props
from pydantic import Field
from typing_extensions import Literal
from frigate.const import MODEL_CACHE_DIR
from frigate.detectors.detection_api import DetectionApi
from frigate.detectors.detector_config import BaseDetectorConfig, ModelTypeEnum
from frigate.util.model import (
@@ -49,10 +47,6 @@ class OvDetector(DetectionApi):
logger.error(f"OpenVino model file {detector_config.model.path} not found.")
raise FileNotFoundError
os.makedirs(os.path.join(MODEL_CACHE_DIR, "openvino"), exist_ok=True)
self.ov_core.set_property(
{props.cache_dir: os.path.join(MODEL_CACHE_DIR, "openvino")}
)
self.interpreter = self.ov_core.compile_model(
model=detector_config.model.path, device_name=detector_config.device
)
@@ -65,7 +59,6 @@ class OvDetector(DetectionApi):
)
self.model_invalid = True
# Ensure the SSD model has the right input and output shapes
if self.ov_model_type == ModelTypeEnum.ssd:
model_inputs = self.interpreter.inputs
model_outputs = self.interpreter.outputs
@@ -81,12 +74,6 @@ class OvDetector(DetectionApi):
)
self.model_invalid = True
if model_inputs[0].get_shape() != ov.Shape([1, self.w, self.h, 3]):
logger.error(
f"SSD model input doesn't match. Found {model_inputs[0].get_shape()}."
)
self.model_invalid = True
output_shape = model_outputs[0].get_shape()
if output_shape[0] != 1 or output_shape[1] != 1 or output_shape[3] != 7:
logger.error(f"SSD model output doesn't match. Found {output_shape}.")
@@ -106,13 +93,6 @@ class OvDetector(DetectionApi):
f"YoloNAS models must be exported in flat format and only have 1 output. Found {len(model_outputs)}."
)
self.model_invalid = True
if model_inputs[0].get_shape() != ov.Shape([1, 3, self.w, self.h]):
logger.error(
f"YoloNAS model input doesn't match. Found {model_inputs[0].get_shape()}, but expected {[1, 3, self.w, self.h]}."
)
self.model_invalid = True
output_shape = model_outputs[0].partial_shape
if output_shape[-1] != 7:
logger.error(

View File

@@ -119,7 +119,7 @@ class Rknn(DetectionApi):
model_props["model_type"] = model_type
if model_matched:
model_props["filename"] = model_path + f"-{soc}-v2.3.2-1.rknn"
model_props["filename"] = model_path + f"-{soc}-v2.3.2-2.rknn"
model_props["path"] = model_cache_dir + model_props["filename"]
@@ -139,27 +139,12 @@ class Rknn(DetectionApi):
if not os.path.isdir(model_cache_dir):
os.mkdir(model_cache_dir)
GITHUB_ENDPOINT = os.environ.get("GITHUB_ENDPOINT", "https://github.com")
urllib.request.urlretrieve(
f"https://github.com/MarcA711/rknn-models/releases/download/v2.3.2/{filename}",
f"{GITHUB_ENDPOINT}/MarcA711/rknn-models/releases/download/v2.3.2-2/{filename}",
model_cache_dir + filename,
)
def check_config(self, config):
if (config.model.width != 320) or (config.model.height != 320):
raise Exception(
"Make sure to set the model width and height to 320 in your config."
)
if config.model.input_pixel_format != "bgr":
raise Exception(
'Make sure to set the model input_pixel_format to "bgr" in your config.'
)
if config.model.input_tensor != "nhwc":
raise Exception(
'Make sure to set the model input_tensor to "nhwc" in your config.'
)
def post_process_yolonas(self, output: list[np.ndarray]):
"""
@param output: output of inference

View File

@@ -1,5 +1,6 @@
import ctypes
import logging
import platform
import numpy as np
@@ -219,6 +220,14 @@ class TensorRtDetector(DetectionApi):
]
def __init__(self, detector_config: TensorRTDetectorConfig):
if platform.machine() == "x86_64":
logger.error(
"TensorRT detector is no longer supported on amd64 system. Please use ONNX detector instead, see https://docs.frigate.video/configuration/object_detectors#onnx for more information."
)
raise ImportError(
"TensorRT detector is no longer supported on amd64 system. Please use ONNX detector instead, see https://docs.frigate.video/configuration/object_detectors#onnx for more information."
)
assert TRT_SUPPORT, (
f"TensorRT libraries not found, {DETECTOR_KEY} detector not present"
)

View File

@@ -5,12 +5,13 @@ import json
import logging
import multiprocessing as mp
import os
import re
import signal
import threading
from json.decoder import JSONDecodeError
from types import FrameType
from typing import Any, Optional, Union
import regex
from pathvalidate import ValidationError, sanitize_filename
from setproctitle import setproctitle
@@ -73,13 +74,21 @@ class EmbeddingsContext:
self.requestor = EmbeddingsRequestor()
# load stats from disk
stats_file = os.path.join(CONFIG_DIR, ".search_stats.json")
try:
with open(os.path.join(CONFIG_DIR, ".search_stats.json"), "r") as f:
with open(stats_file, "r") as f:
data = json.loads(f.read())
self.thumb_stats.from_dict(data["thumb_stats"])
self.desc_stats.from_dict(data["desc_stats"])
except FileNotFoundError:
pass
except JSONDecodeError:
logger.warning("Failed to decode semantic search stats, clearing file")
try:
with open(stats_file, "w") as f:
f.write("")
except OSError as e:
logger.error(f"Failed to clear corrupted stats file: {e}")
def stop(self):
"""Write the stats to disk as JSON on exit."""
@@ -243,7 +252,7 @@ class EmbeddingsContext:
)
def rename_face(self, old_name: str, new_name: str) -> None:
valid_name_pattern = r"^[a-zA-Z0-9\s_-]{1,50}$"
valid_name_pattern = r"^[\p{L}\p{N}\s'_-]{1,50}$"
try:
sanitized_old_name = sanitize_filename(old_name, replacement_text="_")
@@ -251,9 +260,9 @@ class EmbeddingsContext:
except ValidationError as e:
raise ValueError(f"Invalid face name: {str(e)}")
if not re.match(valid_name_pattern, old_name):
if not regex.match(valid_name_pattern, old_name):
raise ValueError(f"Invalid old face name: {old_name}")
if not re.match(valid_name_pattern, new_name):
if not regex.match(valid_name_pattern, new_name):
raise ValueError(f"Invalid new face name: {new_name}")
if sanitized_old_name != old_name:
raise ValueError(f"Old face name contains invalid characters: {old_name}")

View File

@@ -1,12 +1,14 @@
"""SQLite-vec embeddings database."""
import datetime
import io
import logging
import os
import threading
import time
from numpy import ndarray
from PIL import Image
from playhouse.shortcuts import model_to_dict
from frigate.comms.inter_process import InterProcessRequestor
@@ -199,14 +201,31 @@ class Embeddings:
@param: upsert If embedding should be upserted into vec DB
"""
start = datetime.datetime.now().timestamp()
ids = list(event_thumbs.keys())
embeddings = self.vision_embedding(list(event_thumbs.values()))
valid_ids = []
valid_thumbs = []
for eid, thumb in event_thumbs.items():
try:
img = Image.open(io.BytesIO(thumb))
img.verify() # Will raise if corrupt
valid_ids.append(eid)
valid_thumbs.append(thumb)
except Exception as e:
logger.warning(
f"Embeddings reindexing: Skipping corrupt thumbnail for event {eid}: {e}"
)
if not valid_thumbs:
logger.warning(
"Embeddings reindexing: No valid thumbnails to embed in this batch."
)
return []
embeddings = self.vision_embedding(valid_thumbs)
if upsert:
items = []
for i in range(len(ids)):
items.append(ids[i])
for i in range(len(valid_ids)):
items.append(valid_ids[i])
items.append(serialize(embeddings[i]))
self.image_eps.update()
@@ -214,12 +233,12 @@ class Embeddings:
"""
INSERT OR REPLACE INTO vec_thumbnails(id, thumbnail_embedding)
VALUES {}
""".format(", ".join(["(?, ?)"] * len(ids))),
""".format(", ".join(["(?, ?)"] * len(valid_ids))),
items,
)
duration = datetime.datetime.now().timestamp() - start
self.text_inference_speed.update(duration / len(ids))
self.text_inference_speed.update(duration / len(valid_ids))
return embeddings
@@ -315,27 +334,24 @@ class Embeddings:
.paginate(current_page, batch_size)
)
while len(events) > 0:
while events:
event: Event
batch_thumbs = {}
batch_descs = {}
for event in events:
thumbnail = get_event_thumbnail_bytes(event)
if thumbnail is None:
continue
batch_thumbs[event.id] = thumbnail
totals["thumbnails"] += 1
totals["processed_objects"] += 1
if description := event.data.get("description", "").strip():
batch_descs[event.id] = description
totals["descriptions"] += 1
totals["processed_objects"] += 1
if thumbnail := get_event_thumbnail_bytes(event):
batch_thumbs[event.id] = thumbnail
totals["thumbnails"] += 1
# run batch embedding
self.batch_embed_thumbnail(batch_thumbs)
if batch_thumbs:
self.batch_embed_thumbnail(batch_thumbs)
if batch_descs:
self.batch_embed_description(batch_descs)

View File

@@ -24,11 +24,12 @@ FACENET_INPUT_SIZE = 160
class FaceNetEmbedding(BaseEmbedding):
def __init__(self):
GITHUB_ENDPOINT = os.environ.get("GITHUB_ENDPOINT", "https://github.com")
super().__init__(
model_name="facedet",
model_file="facenet.tflite",
download_urls={
"facenet.tflite": "https://github.com/NickM-27/facenet-onnx/releases/download/v1.0/facenet.tflite",
"facenet.tflite": f"{GITHUB_ENDPOINT}/NickM-27/facenet-onnx/releases/download/v1.0/facenet.tflite",
},
)
self.download_path = os.path.join(MODEL_CACHE_DIR, self.model_name)
@@ -110,11 +111,12 @@ class FaceNetEmbedding(BaseEmbedding):
class ArcfaceEmbedding(BaseEmbedding):
def __init__(self):
GITHUB_ENDPOINT = os.environ.get("GITHUB_ENDPOINT", "https://github.com")
super().__init__(
model_name="facedet",
model_file="arcface.onnx",
download_urls={
"arcface.onnx": "https://github.com/NickM-27/facenet-onnx/releases/download/v1.0/arcface.onnx",
"arcface.onnx": f"{GITHUB_ENDPOINT}/NickM-27/facenet-onnx/releases/download/v1.0/arcface.onnx",
},
)
self.download_path = os.path.join(MODEL_CACHE_DIR, self.model_name)

View File

@@ -34,11 +34,12 @@ class PaddleOCRDetection(BaseEmbedding):
model_file = (
"detection-large.onnx" if model_size == "large" else "detection-small.onnx"
)
GITHUB_ENDPOINT = os.environ.get("GITHUB_ENDPOINT", "https://github.com")
super().__init__(
model_name="paddleocr-onnx",
model_file=model_file,
download_urls={
model_file: f"https://github.com/hawkeye217/paddleocr-onnx/raw/refs/heads/master/models/{model_file}"
model_file: f"{GITHUB_ENDPOINT}/hawkeye217/paddleocr-onnx/raw/refs/heads/master/models/{model_file}"
},
)
self.requestor = requestor
@@ -94,11 +95,12 @@ class PaddleOCRClassification(BaseEmbedding):
requestor: InterProcessRequestor,
device: str = "AUTO",
):
GITHUB_ENDPOINT = os.environ.get("GITHUB_ENDPOINT", "https://github.com")
super().__init__(
model_name="paddleocr-onnx",
model_file="classification.onnx",
download_urls={
"classification.onnx": "https://github.com/hawkeye217/paddleocr-onnx/raw/refs/heads/master/models/classification.onnx"
"classification.onnx": f"{GITHUB_ENDPOINT}/hawkeye217/paddleocr-onnx/raw/refs/heads/master/models/classification.onnx"
},
)
self.requestor = requestor
@@ -154,11 +156,12 @@ class PaddleOCRRecognition(BaseEmbedding):
requestor: InterProcessRequestor,
device: str = "AUTO",
):
GITHUB_ENDPOINT = os.environ.get("GITHUB_ENDPOINT", "https://github.com")
super().__init__(
model_name="paddleocr-onnx",
model_file="recognition.onnx",
download_urls={
"recognition.onnx": "https://github.com/hawkeye217/paddleocr-onnx/raw/refs/heads/master/models/recognition.onnx"
"recognition.onnx": f"{GITHUB_ENDPOINT}/hawkeye217/paddleocr-onnx/raw/refs/heads/master/models/recognition.onnx"
},
)
self.requestor = requestor
@@ -214,11 +217,12 @@ class LicensePlateDetector(BaseEmbedding):
requestor: InterProcessRequestor,
device: str = "AUTO",
):
GITHUB_ENDPOINT = os.environ.get("GITHUB_ENDPOINT", "https://github.com")
super().__init__(
model_name="yolov9_license_plate",
model_file="yolov9-256-license-plates.onnx",
download_urls={
"yolov9-256-license-plates.onnx": "https://github.com/hawkeye217/yolov9-license-plates/raw/refs/heads/master/models/yolov9-256-license-plates.onnx"
"yolov9-256-license-plates.onnx": f"{GITHUB_ENDPOINT}/hawkeye217/yolov9-license-plates/raw/refs/heads/master/models/yolov9-256-license-plates.onnx"
},
)

Some files were not shown because too many files have changed in this diff Show More