Compare commits

..
34 Commits
Author SHA1 Message Date
dependabot[bot]andGitHub 2fc9ba02db Merge 4980a1018a into 455b8687e8 2026-07-06 17:47:50 +02:00
455b8687e8 Tweaks (#23638)
CI / AMD64 Build (push) Waiting to run
CI / ARM Build (push) Waiting to run
CI / Jetson Jetpack 6 (push) Waiting to run
CI / AMD64 Extra Build (push) Blocked by required conditions
CI / ARM Extra Build (push) Blocked by required conditions
CI / Synaptics Build (push) Blocked by required conditions
CI / Assemble and push default build (push) Blocked by required conditions
* docs tweaks

* show reolink warning when using probe path in camera wizard

* note ffmpeg 8 default

* update links

* add faq about false positives

* tweak plus language

* Recommend OpenVINO uses YOLOv9 by default

* add mse/rtc live view faq

---------

Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
2026-07-06 09:28:12 -06:00
Sysoev AlekseyandGitHub 279dcf9bca docs: add Frigate Notify Alert to third party extensions (#23634) 2026-07-06 07:01:09 -06:00
4e65cc1019 Translated using Weblate (Norwegian Bokmål)
CI / AMD64 Build (push) Waiting to run
CI / ARM Build (push) Waiting to run
CI / Jetson Jetpack 6 (push) Waiting to run
CI / AMD64 Extra Build (push) Blocked by required conditions
CI / ARM Extra Build (push) Blocked by required conditions
CI / Assemble and push default build (push) Blocked by required conditions
CI / Synaptics Build (push) Blocked by required conditions
Currently translated at 100.0% (62 of 62 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 100.0% (54 of 54 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 100.0% (23 of 23 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 100.0% (808 of 808 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 100.0% (474 of 474 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 100.0% (188 of 188 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 100.0% (100 of 100 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 100.0% (26 of 26 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 100.0% (109 of 109 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% (1287 of 1287 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 100.0% (239 of 239 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-player/nb_NO/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-cameras/nb_NO/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-global/nb_NO/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-validation/nb_NO/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-chat/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-motionsearch/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/Config - Cameras
Translation: Frigate NVR/Config - Global
Translation: Frigate NVR/Config - Validation
Translation: Frigate NVR/common
Translation: Frigate NVR/components-camera
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/components-player
Translation: Frigate NVR/views-chat
Translation: Frigate NVR/views-live
Translation: Frigate NVR/views-motionSearch
Translation: Frigate NVR/views-settings
Translation: Frigate NVR/views-system
2026-07-05 21:08:46 -05:00
c4b007686f Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (1287 of 1287 strings)

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 100.0% (808 of 808 strings)

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 100.0% (474 of 474 strings)

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 100.0% (1287 of 1287 strings)

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 100.0% (109 of 109 strings)

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 99.7% (1282 of 1285 strings)

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 100.0% (473 of 473 strings)

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 100.0% (809 of 809 strings)

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 100.0% (1277 of 1277 strings)

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 100.0% (475 of 475 strings)

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 100.0% (49 of 49 strings)

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 100.0% (188 of 188 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% (1276 of 1276 strings)

Co-authored-by: GuoQing Liu <842607283@qq.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Yechi Yang <yechiyang93@gmail.com>
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/config-cameras/zh_Hans/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-global/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/Config - Cameras
Translation: Frigate NVR/Config - Global
Translation: Frigate NVR/components-camera
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/views-search
Translation: Frigate NVR/views-settings
Translation: Frigate NVR/views-system
2026-07-05 21:08:46 -05:00
75ca66679a Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (473 of 473 strings)

Translated using Weblate (Chinese (Traditional Han script))

Currently translated at 100.0% (109 of 109 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% (54 of 54 strings)

Translated using Weblate (Chinese (Traditional Han script))

Currently translated at 100.0% (23 of 23 strings)

Translated using Weblate (Chinese (Traditional Han script))

Currently translated at 100.0% (807 of 807 strings)

Translated using Weblate (Chinese (Traditional Han script))

Currently translated at 100.0% (473 of 473 strings)

Translated using Weblate (Chinese (Traditional Han script))

Currently translated at 100.0% (129 of 129 strings)

Translated using Weblate (Chinese (Traditional Han script))

Currently translated at 100.0% (188 of 188 strings)

Translated using Weblate (Chinese (Traditional Han script))

Currently translated at 100.0% (1287 of 1287 strings)

Translated using Weblate (Chinese (Traditional Han script))

Currently translated at 100.0% (100 of 100 strings)

Translated using Weblate (Chinese (Traditional Han script))

Currently translated at 100.0% (145 of 145 strings)

Translated using Weblate (Chinese (Traditional Han script))

Currently translated at 100.0% (74 of 74 strings)

Translated using Weblate (Chinese (Traditional Han script))

Currently translated at 100.0% (108 of 108 strings)

Translated using Weblate (Chinese (Traditional Han script))

Currently translated at 100.0% (239 of 239 strings)

Translated using Weblate (Chinese (Traditional Han script))

Currently translated at 100.0% (239 of 239 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Jamie HUANG <114514020@live.asia.edu.tw>
Co-authored-by: 莊凱鈞 <kcchuang88@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/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/config-cameras/zh_Hant/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-global/zh_Hant/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-validation/zh_Hant/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-chat/zh_Hant/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-classificationmodel/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-live/zh_Hant/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-motionsearch/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/Config - Cameras
Translation: Frigate NVR/Config - Global
Translation: Frigate NVR/Config - Validation
Translation: Frigate NVR/common
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/components-filter
Translation: Frigate NVR/views-chat
Translation: Frigate NVR/views-classificationmodel
Translation: Frigate NVR/views-explore
Translation: Frigate NVR/views-live
Translation: Frigate NVR/views-motionSearch
Translation: Frigate NVR/views-settings
Translation: Frigate NVR/views-system
2026-07-05 21:08:46 -05:00
9f52372cfd Translated using Weblate (Slovak)
Currently translated at 67.3% (68 of 101 strings)

Translated using Weblate (Slovak)

Currently translated at 0.9% (8 of 809 strings)

Translated using Weblate (Slovak)

Currently translated at 97.9% (234 of 239 strings)

Translated using Weblate (Slovak)

Currently translated at 98.0% (49 of 50 strings)

Translated using Weblate (Slovak)

Currently translated at 49.4% (631 of 1277 strings)

Translated using Weblate (Slovak)

Currently translated at 91.4% (118 of 129 strings)

Translated using Weblate (Slovak)

Currently translated at 1.6% (8 of 475 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Pavol Krnáč <palokrnac@gmail.com>
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/config-cameras/sk/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-global/sk/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-classificationmodel/sk/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/sk/
Translation: Frigate NVR/Config - Cameras
Translation: Frigate NVR/Config - Global
Translation: Frigate NVR/common
Translation: Frigate NVR/components-camera
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/views-classificationmodel
Translation: Frigate NVR/views-settings
2026-07-05 21:08:46 -05:00
1c610a7271 Translated using Weblate (Serbian)
Currently translated at 51.1% (65 of 127 strings)

Translated using Weblate (Serbian)

Currently translated at 100.0% (501 of 501 strings)

Translated using Weblate (Serbian)

Currently translated at 46.7% (51 of 109 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/components-dialog/sr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/objects/sr/
Translation: Frigate NVR/audio
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/objects
2026-07-05 21:08:46 -05:00
075e5196a7 Translated using Weblate (Swedish)
Currently translated at 96.3% (105 of 109 strings)

Translated using Weblate (Swedish)

Currently translated at 2.7% (13 of 475 strings)

Translated using Weblate (Swedish)

Currently translated at 0.6% (5 of 809 strings)

Translated using Weblate (Swedish)

Currently translated at 50.7% (648 of 1277 strings)

Translated using Weblate (Swedish)

Currently translated at 0.1% (1 of 809 strings)

Translated using Weblate (Swedish)

Currently translated at 100.0% (50 of 50 strings)

Translated using Weblate (Swedish)

Currently translated at 0.6% (3 of 475 strings)

Translated using Weblate (Swedish)

Currently translated at 94.4% (137 of 145 strings)

Translated using Weblate (Swedish)

Currently translated at 100.0% (26 of 26 strings)

Translated using Weblate (Swedish)

Currently translated at 100.0% (101 of 101 strings)

Translated using Weblate (Swedish)

Currently translated at 100.0% (239 of 239 strings)

Translated using Weblate (Swedish)

Currently translated at 100.0% (239 of 239 strings)

Co-authored-by: Christian Bengtsson <bnccnb@gmail.com>
Co-authored-by: Coffe <effocs@gmail.com>
Co-authored-by: Fredrik Tuomas <fredrik.tuomas@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Kristian Johansson <knmjohansson@gmail.com>
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-dialog/sv/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-player/sv/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-cameras/sv/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-global/sv/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/sv/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/sv/
Translation: Frigate NVR/Config - Cameras
Translation: Frigate NVR/Config - Global
Translation: Frigate NVR/common
Translation: Frigate NVR/components-camera
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/components-player
Translation: Frigate NVR/views-explore
Translation: Frigate NVR/views-settings
2026-07-05 21:08:46 -05:00
3c3acbe8f8 Translated using Weblate (French)
Currently translated at 89.9% (98 of 109 strings)

Translated using Weblate (French)

Currently translated at 100.0% (239 of 239 strings)

Translated using Weblate (French)

Currently translated at 100.0% (188 of 188 strings)

Translated using Weblate (French)

Currently translated at 100.0% (188 of 188 strings)

Translated using Weblate (French)

Currently translated at 100.0% (188 of 188 strings)

Translated using Weblate (French)

Currently translated at 56.4% (35 of 62 strings)

Co-authored-by: Antoine de Champlain <mon.nom.tony@gmail.com>
Co-authored-by: Fräntz Miccoli <frantz.miccoli@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: LeBuzzy <bwinster2@outlook.com>
Co-authored-by: NicoA08 <nicolasantunes08@gmail.com>
Co-authored-by: shdw <weblate@assez.biz>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/fr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/fr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-motionsearch/fr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/fr/
Translation: Frigate NVR/common
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/views-motionSearch
Translation: Frigate NVR/views-system
2026-07-05 21:08:46 -05:00
da20b134d2 Translated using Weblate (Spanish)
Currently translated at 100.0% (473 of 473 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (108 of 108 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (1285 of 1285 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (188 of 188 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (809 of 809 strings)

Translated using Weblate (Spanish)

Currently translated at 99.4% (187 of 188 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (1277 of 1277 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (475 of 475 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Libre <6n0n1m0s@proton.me>
Co-authored-by: jjavin <javiernovoa@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/es/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-cameras/es/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-global/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/Config - Cameras
Translation: Frigate NVR/Config - Global
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/views-settings
Translation: Frigate NVR/views-system
2026-07-05 21:08:46 -05:00
87f9c6240a Translated using Weblate (Dutch)
Currently translated at 91.0% (92 of 101 strings)

Translated using Weblate (Dutch)

Currently translated at 100.0% (239 of 239 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: laurensthedeveloper <laurensg100@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/nl/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/nl/
Translation: Frigate NVR/common
Translation: Frigate NVR/components-dialog
2026-07-05 21:08:46 -05:00
2819e76491 Translated using Weblate (Indonesian)
Currently translated at 64.8% (70 of 108 strings)

Translated using Weblate (Indonesian)

Currently translated at 100.0% (50 of 50 strings)

Translated using Weblate (Indonesian)

Currently translated at 57.4% (58 of 101 strings)

Translated using Weblate (Indonesian)

Currently translated at 43.5% (44 of 101 strings)

Translated using Weblate (Indonesian)

Currently translated at 94.0% (47 of 50 strings)

Translated using Weblate (Indonesian)

Currently translated at 42.5% (43 of 101 strings)

Translated using Weblate (Indonesian)

Currently translated at 100.0% (239 of 239 strings)

Translated using Weblate (Indonesian)

Currently translated at 90.0% (45 of 50 strings)

Translated using Weblate (Indonesian)

Currently translated at 90.0% (45 of 50 strings)

Co-authored-by: Alberto-Audrix <alberto.suiwidjaya6@gmail.com>
Co-authored-by: Diazt Muhammad Firmansyah <diaztmuhammadfirmansyah@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Naufal F <fadhlurrahmannf0812@gmail.com>
Co-authored-by: Yeni Setiawan <yenisetiawan@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/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/
Translation: Frigate NVR/common
Translation: Frigate NVR/components-camera
Translation: Frigate NVR/components-dialog
2026-07-05 21:08:46 -05:00
c5f77b3e20 Translated using Weblate (Arabic)
Currently translated at 19.6% (25 of 127 strings)

Translated using Weblate (Arabic)

Currently translated at 30.7% (154 of 501 strings)

Co-authored-by: Ahmed Marzouq <ahmed.marzouq.co@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/audio/ar/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/objects/ar/
Translation: Frigate NVR/audio
Translation: Frigate NVR/objects
2026-07-05 21:08:46 -05:00
723bfa9308 Translated using Weblate (Italian)
Currently translated at 74.2% (601 of 809 strings)

Translated using Weblate (Italian)

Currently translated at 99.9% (1276 of 1277 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (145 of 145 strings)

Translated using Weblate (Italian)

Currently translated at 99.5% (473 of 475 strings)

Translated using Weblate (Italian)

Currently translated at 73.0% (591 of 809 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (1276 of 1276 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (475 of 475 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (100 of 100 strings)

Translated using Weblate (Italian)

Currently translated at 67.7% (548 of 809 strings)

Translated using Weblate (Italian)

Currently translated at 55.7% (451 of 809 strings)

Translated using Weblate (Italian)

Currently translated at 76.0% (361 of 475 strings)

Co-authored-by: Edoardo Sorrenti <ed.sorrenti@gmail.com>
Co-authored-by: Filippo-riccardo Franzin (filippo franzin) <filric01@gmail.com>
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/config-cameras/it/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-global/it/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/it/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-live/it/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/it/
Translation: Frigate NVR/Config - Cameras
Translation: Frigate NVR/Config - Global
Translation: Frigate NVR/views-explore
Translation: Frigate NVR/views-live
Translation: Frigate NVR/views-settings
2026-07-05 21:08:46 -05:00
645601d83e Translated using Weblate (Polish)
Currently translated at 10.4% (84 of 807 strings)

Translated using Weblate (Polish)

Currently translated at 33.8% (160 of 473 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (108 of 108 strings)

Translated using Weblate (Polish)

Currently translated at 31.3% (149 of 475 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (101 of 101 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (239 of 239 strings)

Translated using Weblate (Polish)

Currently translated at 98.4% (127 of 129 strings)

Translated using Weblate (Polish)

Currently translated at 9.1% (74 of 809 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Kamil Cybułka <kamil.cybulka@gmail.com>
Co-authored-by: Paweł Kapeluszny <cyberitsec@proton.me>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/pl/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/pl/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-cameras/pl/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-global/pl/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-classificationmodel/pl/
Translation: Frigate NVR/Config - Cameras
Translation: Frigate NVR/Config - Global
Translation: Frigate NVR/common
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/views-classificationmodel
2026-07-05 21:08:46 -05:00
ca1637ba5a Translated using Weblate (Hebrew)
Currently translated at 90.7% (217 of 239 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Raziel Zaarur <razielzaarur1@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/he/
Translation: Frigate NVR/common
2026-07-05 21:08:46 -05:00
79fcf40d96 Translated using Weblate (Hungarian)
Currently translated at 31.4% (17 of 54 strings)

Translated using Weblate (Hungarian)

Currently translated at 86.8% (435 of 501 strings)

Translated using Weblate (Hungarian)

Currently translated at 72.8% (137 of 188 strings)

Translated using Weblate (Hungarian)

Currently translated at 85.6% (429 of 501 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Laszlo Bana <banalac@yahoo.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/audio/hu/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-chat/hu/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/hu/
Translation: Frigate NVR/audio
Translation: Frigate NVR/views-chat
Translation: Frigate NVR/views-system
2026-07-05 21:08:46 -05:00
5e17aa685b Translated using Weblate (Portuguese)
Currently translated at 50.4% (55 of 109 strings)

Translated using Weblate (Portuguese)

Currently translated at 100.0% (50 of 50 strings)

Translated using Weblate (Portuguese)

Currently translated at 100.0% (239 of 239 strings)

Translated using Weblate (Portuguese)

Currently translated at 33.1% (427 of 1287 strings)

Translated using Weblate (Portuguese)

Currently translated at 99.5% (238 of 239 strings)

Translated using Weblate (Portuguese)

Currently translated at 99.4% (498 of 501 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: João Nuno <joaomnuno@gmail.com>
Co-authored-by: ssantos <ssantos@web.de>
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/views-settings/pt/
Translation: Frigate NVR/audio
Translation: Frigate NVR/common
Translation: Frigate NVR/components-camera
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/views-settings
2026-07-05 21:08:46 -05:00
f5d6ca2772 Translated using Weblate (Catalan)
Currently translated at 100.0% (109 of 109 strings)

Translated using Weblate (Catalan)

Currently translated at 100.0% (1287 of 1287 strings)

Translated using Weblate (Catalan)

Currently translated at 100.0% (108 of 108 strings)

Translated using Weblate (Catalan)

Currently translated at 100.0% (1285 of 1285 strings)

Translated using Weblate (Catalan)

Currently translated at 100.0% (473 of 473 strings)

Translated using Weblate (Catalan)

Currently translated at 100.0% (1277 of 1277 strings)

Translated using Weblate (Catalan)

Currently translated at 100.0% (188 of 188 strings)

Translated using Weblate (Catalan)

Currently translated at 100.0% (809 of 809 strings)

Translated using Weblate (Catalan)

Currently translated at 100.0% (475 of 475 strings)

Translated using Weblate (Catalan)

Currently translated at 100.0% (1277 of 1277 strings)

Co-authored-by: Eduardo Pastor Fernández <123eduardoneko123@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/ca/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-cameras/ca/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-global/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/Config - Cameras
Translation: Frigate NVR/Config - Global
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/views-settings
Translation: Frigate NVR/views-system
2026-07-05 21:08:46 -05:00
39856aaa2d Translated using Weblate (Ukrainian)
Currently translated at 81.3% (153 of 188 strings)

Translated using Weblate (Ukrainian)

Currently translated at 6.7% (32 of 473 strings)

Translated using Weblate (Ukrainian)

Currently translated at 2.7% (22 of 807 strings)

Translated using Weblate (Ukrainian)

Currently translated at 80.8% (152 of 188 strings)

Translated using Weblate (Ukrainian)

Currently translated at 6.3% (30 of 473 strings)

Translated using Weblate (Ukrainian)

Currently translated at 2.6% (21 of 807 strings)

Translated using Weblate (Ukrainian)

Currently translated at 6.1% (29 of 475 strings)

Translated using Weblate (Ukrainian)

Currently translated at 2.4% (20 of 809 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (501 of 501 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (501 of 501 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (501 of 501 strings)

Translated using Weblate (Ukrainian)

Currently translated at 1.2% (10 of 809 strings)

Translated using Weblate (Ukrainian)

Currently translated at 4.0% (19 of 475 strings)

Translated using Weblate (Ukrainian)

Currently translated at 0.7% (6 of 809 strings)

Translated using Weblate (Ukrainian)

Currently translated at 3.1% (15 of 475 strings)

Translated using Weblate (Ukrainian)

Currently translated at 0.4% (4 of 809 strings)

Translated using Weblate (Ukrainian)

Currently translated at 2.5% (12 of 475 strings)

Translated using Weblate (Ukrainian)

Currently translated at 1.6% (8 of 475 strings)

Translated using Weblate (Ukrainian)

Currently translated at 96.1% (25 of 26 strings)

Translated using Weblate (Ukrainian)

Currently translated at 0.1% (1 of 809 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (239 of 239 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (50 of 50 strings)

Co-authored-by: A T <andrey.timchenko@gmail.com>
Co-authored-by: Den <denis.ua22@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Vitaliy Kreminskiy <vkrmk13@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-player/uk/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-cameras/uk/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-global/uk/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/uk/
Translation: Frigate NVR/Config - Cameras
Translation: Frigate NVR/Config - Global
Translation: Frigate NVR/audio
Translation: Frigate NVR/common
Translation: Frigate NVR/components-camera
Translation: Frigate NVR/components-player
Translation: Frigate NVR/views-system
2026-07-05 21:08:46 -05:00
3ae70f1808 Translated using Weblate (Bulgarian)
Currently translated at 11.6% (7 of 60 strings)

Translated using Weblate (Bulgarian)

Currently translated at 50.0% (43 of 86 strings)

Translated using Weblate (Bulgarian)

Currently translated at 20.0% (29 of 145 strings)

Translated using Weblate (Bulgarian)

Currently translated at 100.0% (26 of 26 strings)

Translated using Weblate (Bulgarian)

Currently translated at 5.6% (27 of 475 strings)

Translated using Weblate (Bulgarian)

Currently translated at 7.0% (57 of 809 strings)

Translated using Weblate (Bulgarian)

Currently translated at 34.0% (34 of 100 strings)

Translated using Weblate (Bulgarian)

Currently translated at 3.1% (4 of 129 strings)

Translated using Weblate (Bulgarian)

Currently translated at 78.4% (393 of 501 strings)

Translated using Weblate (Bulgarian)

Currently translated at 15.6% (10 of 64 strings)

Translated using Weblate (Bulgarian)

Currently translated at 74.8% (375 of 501 strings)

Translated using Weblate (Bulgarian)

Currently translated at 20.2% (15 of 74 strings)

Translated using Weblate (Bulgarian)

Currently translated at 36.8% (88 of 239 strings)

Translated using Weblate (Bulgarian)

Currently translated at 36.8% (88 of 239 strings)

Translated using Weblate (Bulgarian)

Currently translated at 33.0% (33 of 100 strings)

Translated using Weblate (Bulgarian)

Currently translated at 0.2% (1 of 475 strings)

Translated using Weblate (Bulgarian)

Currently translated at 21.2% (27 of 127 strings)

Translated using Weblate (Bulgarian)

Currently translated at 2.3% (3 of 129 strings)

Translated using Weblate (Bulgarian)

Currently translated at 1.1% (9 of 809 strings)

Co-authored-by: Dobromir Kirov <kirov0407@gmail.com>
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-filter/bg/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-player/bg/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-cameras/bg/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-global/bg/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/objects/bg/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-classificationmodel/bg/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-events/bg/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/bg/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-exports/bg/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/bg/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-live/bg/
Translation: Frigate NVR/Config - Cameras
Translation: Frigate NVR/Config - Global
Translation: Frigate NVR/audio
Translation: Frigate NVR/common
Translation: Frigate NVR/components-filter
Translation: Frigate NVR/components-player
Translation: Frigate NVR/objects
Translation: Frigate NVR/views-classificationmodel
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
2026-07-05 21:08:46 -05:00
a9e4cd061c Translated using Weblate (Romanian)
Currently translated at 100.0% (473 of 473 strings)

Translated using Weblate (Romanian)

Currently translated at 100.0% (1285 of 1285 strings)

Translated using Weblate (Romanian)

Currently translated at 100.0% (188 of 188 strings)

Translated using Weblate (Romanian)

Currently translated at 100.0% (809 of 809 strings)

Translated using Weblate (Romanian)

Currently translated at 100.0% (475 of 475 strings)

Translated using Weblate (Romanian)

Currently translated at 100.0% (1277 of 1277 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/config-cameras/ro/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-global/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/Config - Cameras
Translation: Frigate NVR/Config - Global
Translation: Frigate NVR/views-settings
Translation: Frigate NVR/views-system
2026-07-05 21:08:46 -05:00
f59025681d Translated using Weblate (Russian)
Currently translated at 77.0% (84 of 109 strings)

Translated using Weblate (Russian)

Currently translated at 73.1% (79 of 108 strings)

Translated using Weblate (Russian)

Currently translated at 54.9% (706 of 1285 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (239 of 239 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (50 of 50 strings)

Translated using Weblate (Russian)

Currently translated at 92.4% (221 of 239 strings)

Co-authored-by: Artem Vladimirov <artyomka71@mail.ru>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Vladimir Bely <vlwwwwww@gmail.com>
Co-authored-by: Артем <artem_ibatullin@mail.ru>
Co-authored-by: Дмитрий Власкин <vdvlaskin@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-dialog/ru/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/ru/
Translation: Frigate NVR/common
Translation: Frigate NVR/components-camera
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/views-settings
2026-07-05 21:08:46 -05:00
126cbd9e5e Translated using Weblate (Greek)
Currently translated at 14.3% (72 of 501 strings)

Translated using Weblate (Greek)

Currently translated at 49.7% (119 of 239 strings)

Co-authored-by: George Rovolis <georgios@rovolis.co.uk>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/audio/el/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/el/
Translation: Frigate NVR/audio
Translation: Frigate NVR/common
2026-07-05 21:08:46 -05:00
f85387570b Translated using Weblate (Danish)
Currently translated at 1.0% (13 of 1287 strings)

Translated using Weblate (Danish)

Currently translated at 28.4% (31 of 109 strings)

Translated using Weblate (Danish)

Currently translated at 100.0% (50 of 50 strings)

Translated using Weblate (Danish)

Currently translated at 100.0% (239 of 239 strings)

Translated using Weblate (Danish)

Currently translated at 41.3% (207 of 501 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: nicoleise <niceggert@hotmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/audio/da/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/da/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-camera/da/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/da/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/da/
Translation: Frigate NVR/audio
Translation: Frigate NVR/common
Translation: Frigate NVR/components-camera
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/views-settings
2026-07-05 21:08:46 -05:00
b0cecd534b Translated using Weblate (German)
Currently translated at 100.0% (1287 of 1287 strings)

Translated using Weblate (German)

Currently translated at 100.0% (108 of 108 strings)

Translated using Weblate (German)

Currently translated at 100.0% (239 of 239 strings)

Translated using Weblate (German)

Currently translated at 100.0% (239 of 239 strings)

Translated using Weblate (German)

Currently translated at 100.0% (473 of 473 strings)

Translated using Weblate (German)

Currently translated at 100.0% (127 of 127 strings)

Translated using Weblate (German)

Currently translated at 100.0% (501 of 501 strings)

Translated using Weblate (German)

Currently translated at 100.0% (1285 of 1285 strings)

Translated using Weblate (German)

Currently translated at 100.0% (188 of 188 strings)

Translated using Weblate (German)

Currently translated at 100.0% (807 of 807 strings)

Translated using Weblate (German)

Currently translated at 100.0% (475 of 475 strings)

Translated using Weblate (German)

Currently translated at 100.0% (50 of 50 strings)

Translated using Weblate (German)

Currently translated at 100.0% (809 of 809 strings)

Translated using Weblate (German)

Currently translated at 100.0% (62 of 62 strings)

Translated using Weblate (German)

Currently translated at 100.0% (1276 of 1276 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Nuendo-DE <tim.huehner@gmx.de>
Co-authored-by: Sebastian Sie <sebastian.neuplanitz@googlemail.com>
Co-authored-by: laurensthedeveloper <laurensg100@gmail.com>
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-dialog/de/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-cameras/de/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-global/de/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/objects/de/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-motionsearch/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/Config - Cameras
Translation: Frigate NVR/Config - Global
Translation: Frigate NVR/audio
Translation: Frigate NVR/common
Translation: Frigate NVR/components-camera
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/objects
Translation: Frigate NVR/views-motionSearch
Translation: Frigate NVR/views-settings
Translation: Frigate NVR/views-system
2026-07-05 21:08:46 -05:00
7726d2ec97 Translated using Weblate (Portuguese (Brazil))
Currently translated at 28.8% (13 of 45 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 32.7% (265 of 808 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 56.3% (267 of 474 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 39.5% (509 of 1287 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 98.1% (107 of 109 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 90.7% (49 of 54 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (23 of 23 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (25 of 25 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 11.4% (92 of 807 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 17.7% (84 of 473 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 52.7% (68 of 129 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (100 of 100 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (60 of 60 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (26 of 26 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 95.4% (104 of 109 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% (239 of 239 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 99.8% (500 of 501 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Ricardo RFPP <ricardo.inteli@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-player/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-cameras/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-global/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-groups/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-validation/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-chat/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-classificationmodel/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-replay/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/pt_BR/
Translation: Frigate NVR/Config - Cameras
Translation: Frigate NVR/Config - Global
Translation: Frigate NVR/Config - Groups
Translation: Frigate NVR/Config - Validation
Translation: Frigate NVR/audio
Translation: Frigate NVR/common
Translation: Frigate NVR/components-camera
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/components-player
Translation: Frigate NVR/views-chat
Translation: Frigate NVR/views-classificationmodel
Translation: Frigate NVR/views-facelibrary
Translation: Frigate NVR/views-live
Translation: Frigate NVR/views-replay
Translation: Frigate NVR/views-settings
2026-07-05 21:08:46 -05:00
9662bf094f Translated using Weblate (Turkish)
Currently translated at 3.2% (26 of 807 strings)

Translated using Weblate (Turkish)

Currently translated at 6.1% (29 of 473 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (26 of 26 strings)

Translated using Weblate (Turkish)

Currently translated at 98.1% (106 of 108 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (50 of 50 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (239 of 239 strings)

Translated using Weblate (Turkish)

Currently translated at 73.4% (138 of 188 strings)

Translated using Weblate (Turkish)

Currently translated at 6.4% (4 of 62 strings)

Translated using Weblate (Turkish)

Currently translated at 98.0% (49 of 50 strings)

Translated using Weblate (Turkish)

Currently translated at 90.0% (91 of 101 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Nazım Sarp Tekbaş <sarptekbas07@gmail.com>
Co-authored-by: Selim Kundakçıoğlu <selimkundakcioglu@gmail.com>
Co-authored-by: Turhan Munis <turhan.munis@gmail.com>
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-player/tr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-cameras/tr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-global/tr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-motionsearch/tr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/tr/
Translation: Frigate NVR/Config - Cameras
Translation: Frigate NVR/Config - Global
Translation: Frigate NVR/common
Translation: Frigate NVR/components-camera
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/components-player
Translation: Frigate NVR/views-motionSearch
Translation: Frigate NVR/views-system
2026-07-05 21:08:46 -05:00
Josh HawkinsandGitHub a26487c4f0 Register per-camera notifications MQTT callbacks (#23637)
CI / AMD64 Build (push) Waiting to run
CI / ARM Build (push) Waiting to run
CI / Jetson Jetpack 6 (push) Waiting to run
CI / ARM Extra Build (push) Blocked by required conditions
CI / Synaptics Build (push) Blocked by required conditions
CI / Assemble and push default build (push) Blocked by required conditions
CI / AMD64 Extra Build (push) Blocked by required conditions
* fix per-camera notification MQTT topics never being registered

register notifications/set and notifications/suspend callbacks for each camera, and gate the global notifications topics on per-camera config as well as global (matching WebPushClient creation in app.py). Unregistered topics were silently dropped by paho since only registered callbacks receive messages.

* add tests
2026-07-05 17:24:39 -05:00
Josh HawkinsandGitHub 1c745e0847 fix config corruption when deleting the last commented mask or zone (#23627)
CI / AMD64 Build (push) Waiting to run
CI / ARM Build (push) Waiting to run
CI / Jetson Jetpack 6 (push) Waiting to run
CI / ARM Extra Build (push) Blocked by required conditions
CI / Synaptics Build (push) Blocked by required conditions
CI / Assemble and push default build (push) Blocked by required conditions
CI / AMD64 Extra Build (push) Blocked by required conditions
Deleting the last entry of a mapping or sequence via config/set orphaned ruamel's comment tokens, which were then emitted above a flow-style {} / [] at column 0, which is unparseable yaml that failed validation and silently rolled the change back. The fix is to clear the emptied collection's stale comment metadata (and the parent's entry for it) so the dump stays valid. Non-empty collections are left untouched so sibling comments are preserved. This covers both emptied maps and emptied lists.
2026-07-04 17:10:32 -06:00
Josh HawkinsandGitHub 729ee86043 Miscellaneous fixes (#23619)
CI / AMD64 Build (push) Waiting to run
CI / ARM Build (push) Waiting to run
CI / AMD64 Extra Build (push) Blocked by required conditions
CI / ARM Extra Build (push) Blocked by required conditions
CI / Synaptics Build (push) Blocked by required conditions
CI / Assemble and push default build (push) Blocked by required conditions
CI / Jetson Jetpack 6 (push) Waiting to run
* fix stale active object indicators on the live dashboard

The camera_activity/<camera> snapshot cache is only written when a client sends onConnect, and object "end" events only update the local state of mounted useCameraActivity hooks, never the cache. As a result, a hook that seeded from a stale cache or missed an "end" event while disconnected showed objects that had already left, with no path to correct itself short of a full page reload.

This change will re-request the snapshot on hook mount (collapsed to one onConnect per task across camera cards), and always re-notify camera_activity topics so hooks reconcile against their own local state instead of relying on snapshot-vs-snapshot comparison, and clear the payload dedup cache on reconnect and resync so byte-identical snapshots still apply.

* docs tweaks

* fix mqtt log message

* use consistent values for lpr debug frame filenames

with millisecond resolution

* apply object events through a functional updater to prevent lost updates

The events effect derived a new objects list from the value captured at render time and wrote the whole list back. When events arrived close
together, a run derived from a stale list erased a concurrent run's removal; the resurrected object then had no remaining "end" event to clear it, and the add branch could mint a duplicate entry that no splice could ever remove, leaving the live dashboard showing active objects the backend had already cleared, until a page reload.

The fix is to apply each event inside setObjects so it operates on the true current list exactly once. Unchanged results return the same reference so React bails out of re-rendering, and the label rewrite is hoisted so added objects get the sub_label/verified label directly instead of relying on the effect re-running against its own state update.
2026-07-04 00:25:22 -06:00
Blake BlackshearandGitHub c007661a71 Enhancements (#23611)
CI / AMD64 Build (push) Has been cancelled
CI / ARM Build (push) Has been cancelled
CI / Jetson Jetpack 6 (push) Has been cancelled
CI / AMD64 Extra Build (push) Has been cancelled
CI / ARM Extra Build (push) Has been cancelled
CI / Synaptics Build (push) Has been cancelled
CI / Assemble and push default build (push) Has been cancelled
* better default handling if no proxy chain is present

* add note about SameSite for jwt cookie
2026-07-02 07:05:00 -05:00
9b02c7318d Miscellaneous fixes (#23610)
CI / Synaptics Build (push) Blocked by required conditions
CI / Assemble and push default build (push) Blocked by required conditions
CI / AMD64 Build (push) Waiting to run
CI / ARM Build (push) Waiting to run
CI / Jetson Jetpack 6 (push) Waiting to run
CI / AMD64 Extra Build (push) Blocked by required conditions
CI / ARM Extra Build (push) Blocked by required conditions
* Handle back seeking going to previous clip

* scope /recordings/unavailable query to the caller's allowed cameras

* listen for config updates in activity manager

* don't set search after awaited request

Intentionally do NOT setSearch() to mark the open event submitted. This runs after the awaited request, by which point the user may have closed the dialog; re-setting the parent's selected event would resurrect it and the force-open effect would reopen it (see #23599). The local "submitted" state covers the open card, and mutate() updates the events cache so the grid and any future open reflect the result.

* fix ruff

#23201 removed pathlib import but for some reason it's just now causing ruff to fail

---------

Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
2026-07-01 15:03:34 -05:00
204 changed files with 5834 additions and 748 deletions
@@ -3,6 +3,7 @@
import json
import os
import sys
from pathlib import Path
from typing import Any
from ruamel.yaml import YAML
+9 -9
View File
@@ -44,22 +44,22 @@
"openvino": {
"title": "OpenVINO",
"models": [
{
"key": "ssd",
"label": "SSDLite MobileNet v2",
"recommended": true,
"download": "An OpenVINO model is provided in the container at `/openvino-model/ssdlite_mobilenet_v2.xml` and is used by this detector type by default. The model comes from Intel's Open Model Zoo [SSDLite MobileNet V2](https://github.com/openvinotoolkit/open_model_zoo/tree/master/models/public/ssdlite_mobilenet_v2) and is converted to an FP16 precision IR model.",
"ui": "Navigate to **Settings > System > Detectors and model** and select **OpenVINO** from the detector type dropdown and click **Add**, then set device to `GPU` (or `NPU`). Then on the same page, in the **Custom Model** tab, configure:\n\n| Field | Value |\n| ---------------------------------------- | ------------------------------------------ |\n| **Object detection model input width** | `300` |\n| **Object detection model input height** | `300` |\n| **Model Input Tensor Shape** | `nhwc` |\n| **Model Input Pixel Color Format** | `bgr` |\n| **Custom object detector model path** | `/openvino-model/ssdlite_mobilenet_v2.xml` |\n| **Label map for custom object detector** | `/openvino-model/coco_91cl_bkgr.txt` |",
"yaml": "detectors:\n ov:\n type: openvino\n device: GPU # Or NPU\n\nmodel:\n width: 300\n height: 300\n input_tensor: nhwc\n input_pixel_format: bgr\n path: /openvino-model/ssdlite_mobilenet_v2.xml\n labelmap_path: /openvino-model/coco_91cl_bkgr.txt"
},
{
"key": "yolov9",
"label": "YOLOv9",
"recommended": false,
"recommended": true,
"download": "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`).\n\n```sh\ndocker build . --build-arg MODEL_SIZE=t --build-arg IMG_SIZE=320 --output . -f- <<'EOF'\nFROM python:3.11 AS build\nRUN apt-get update && apt-get install --no-install-recommends -y cmake libgl1 && rm -rf /var/lib/apt/lists/*\nCOPY --from=ghcr.io/astral-sh/uv:0.10.4 /uv /bin/\nWORKDIR /yolov9\nADD https://github.com/WongKinYiu/yolov9.git .\nRUN uv pip install --system -r requirements.txt\nRUN uv pip install --system onnx==1.18.0 onnxruntime onnx-simplifier==0.4.* onnxscript\nARG MODEL_SIZE\nARG IMG_SIZE\nADD https://github.com/WongKinYiu/yolov9/releases/download/v0.1/yolov9-${MODEL_SIZE}-converted.pt yolov9-${MODEL_SIZE}.pt\nRUN 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\nRUN python3 export.py --weights ./yolov9-${MODEL_SIZE}.pt --imgsz ${IMG_SIZE} --simplify --include onnx\nFROM scratch\nARG MODEL_SIZE\nARG IMG_SIZE\nCOPY --from=build /yolov9/yolov9-${MODEL_SIZE}.onnx /yolov9-${MODEL_SIZE}-${IMG_SIZE}.onnx\nEOF\n```",
"ui": "Navigate to **Settings > System > Detectors and model** and select **OpenVINO** from the detector type dropdown and click **Add**, then set device to `GPU` (or `NPU`). Then on the same page, in the **Custom Model** tab, configure:\n\n| Field | Value |\n| ---------------------------------------- | -------------------------------------------------------- |\n| **Object Detection Model Type** | `yolo-generic` |\n| **Object detection model input width** | `320` (should match the imgsize set during model export) |\n| **Object detection model input height** | `320` (should match the imgsize set during model export) |\n| **Model Input Tensor Shape** | `nchw` |\n| **Model Input D Type** | `float` |\n| **Custom object detector model path** | `/config/model_cache/yolo.onnx` |\n| **Label map for custom object detector** | `/labelmap/coco-80.txt` |",
"yaml": "detectors:\n ov:\n type: openvino\n device: GPU # or NPU\n\nmodel:\n model_type: yolo-generic\n width: 320 # <--- should match the imgsize set during model export\n height: 320 # <--- should match the imgsize set during model export\n input_tensor: nchw\n input_dtype: float\n path: /config/model_cache/yolo.onnx\n labelmap_path: /labelmap/coco-80.txt"
},
{
"key": "ssd",
"label": "SSDLite MobileNet v2",
"recommended": false,
"download": "An OpenVINO model is provided in the container at `/openvino-model/ssdlite_mobilenet_v2.xml` and is used by this detector type by default. The model comes from Intel's Open Model Zoo [SSDLite MobileNet V2](https://github.com/openvinotoolkit/open_model_zoo/tree/master/models/public/ssdlite_mobilenet_v2) and is converted to an FP16 precision IR model.",
"ui": "Navigate to **Settings > System > Detectors and model** and select **OpenVINO** from the detector type dropdown and click **Add**, then set device to `GPU` (or `NPU`). Then on the same page, in the **Custom Model** tab, configure:\n\n| Field | Value |\n| ---------------------------------------- | ------------------------------------------ |\n| **Object detection model input width** | `300` |\n| **Object detection model input height** | `300` |\n| **Model Input Tensor Shape** | `nhwc` |\n| **Model Input Pixel Color Format** | `bgr` |\n| **Custom object detector model path** | `/openvino-model/ssdlite_mobilenet_v2.xml` |\n| **Label map for custom object detector** | `/openvino-model/coco_91cl_bkgr.txt` |",
"yaml": "detectors:\n ov:\n type: openvino\n device: GPU # Or NPU\n\nmodel:\n width: 300\n height: 300\n input_tensor: nhwc\n input_pixel_format: bgr\n path: /openvino-model/ssdlite_mobilenet_v2.xml\n labelmap_path: /openvino-model/coco_91cl_bkgr.txt"
},
{
"key": "yolo-legacy",
"label": "YOLO (v3, v4, v7)",
+1 -1
View File
@@ -78,7 +78,7 @@ cameras:
### Configuring Minimum Volume
The audio detector uses volume levels in the same way that motion in a camera feed is used for object detection. This means that Frigate will not run audio detection unless the audio volume is above the configured level in order to reduce resource usage. Audio levels can vary widely between camera models so it is important to run tests to see what volume levels are. The Debug view in the Frigate UI has an Audio tab for cameras that have the `audio` role assigned where a graph and the current levels are is displayed. The `min_volume` parameter should be set to the minimum the `RMS` level required to run audio detection.
The audio detector uses volume levels in the same way that motion in a camera feed is used for object detection. This means that Frigate will not run audio detection unless the audio volume is above the configured level in order to reduce resource usage. Audio levels can vary widely between camera models so it is important to run tests to see what volume levels are. The [Debug view](/usage/live#the-single-camera-view) in the Frigate UI has an Audio tab for cameras that have the `audio` role assigned where a graph and the current levels are is displayed. The `min_volume` parameter should be set to the minimum the `RMS` level required to run audio detection.
:::tip
+1 -1
View File
@@ -141,7 +141,7 @@ Changing the secret will invalidate current tokens.
## Proxy configuration
Frigate can be configured to leverage features of common upstream authentication proxies such as Authelia, Authentik, oauth2_proxy, or traefik-forward-auth.
Frigate can be configured to leverage features of common upstream authentication proxies such as Authelia, Authentik, oauth2_proxy, or traefik-forward-auth. Frigate does not implement OIDC, SAML, or LDAP natively; as an NVR focused on recording and object detection, it relies on robust, battle-tested proxies to handle those protocols and passes the authenticated user and role through via headers (see below).
If you are leveraging the authentication of an upstream proxy, you likely want to disable Frigate's authentication as there is no correspondence between users in Frigate's database and users authenticated via the proxy. Optionally, if communication between the reverse proxy and Frigate is over an untrusted network, you should set an `auth_secret` in the `proxy` config and configure the proxy to send the secret value as a header named `X-Proxy-Secret`. Assuming this is an untrusted network, you will also want to [configure a real TLS certificate](tls.md) to ensure the traffic can't simply be sniffed to steal the secret.
+1 -1
View File
@@ -161,7 +161,7 @@ Every PTZ camera is different, so autotracking may not perform ideally in every
The object tracker in Frigate estimates the motion of the PTZ so that tracked objects are preserved when the camera moves. In most cases 5 fps is sufficient, but if you plan to track faster moving objects, you may want to increase this slightly. Higher frame rates (> 10fps) will only slow down Frigate and the motion estimator and may lead to dropped frames, especially if you are using experimental zooming.
A fast [detector](object_detectors.md) is recommended. CPU detectors will not perform well or won't work at all. You can watch Frigate's debug viewer for your camera to see a thicker colored box around the object currently being autotracked.
A fast [detector](object_detectors.md) is recommended. CPU detectors will not perform well or won't work at all. You can watch Frigate's [debug viewer](/usage/live#the-single-camera-view) for your camera to see a thicker colored box around the object currently being autotracked.
![Autotracking Debug View](/img/autotracking-debug.gif)
+2 -2
View File
@@ -126,12 +126,12 @@ birdseye:
### Sorting cameras in the Birdseye view
It is possible to override the order of cameras that are being shown in the Birdseye view. The order is set at the camera level.
It is possible to override the order of cameras that are being shown in the Birdseye view. The order is set at the camera level (when using YAML).
<ConfigTabs>
<TabItem value="ui">
Navigate to <NavPath path="Settings > Camera configuration > Birdseye" /> for each camera and set the **Position** field to control the display order.
Navigate to <NavPath path="Settings > System > Birdseye" /> and in the **Camera order** field, use the drag handle next to each camera name to control the display order.
</TabItem>
<TabItem value="yaml">
+24 -7
View File
@@ -3,6 +3,8 @@ id: camera_specific
title: Camera Specific Configurations
---
import NavPath from "@site/src/components/NavPath";
:::note
This page makes use of presets of FFmpeg args. For more information on presets, see the [FFmpeg Presets](/configuration/ffmpeg_presets) page.
@@ -148,11 +150,11 @@ WEB Digest Algorithm - MD5
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 | |
| 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 (Frigate's default) |
| 6MP or higher | Older (ex: RLC-8##) | rtsp | |
Frigate works much better with newer reolink cameras that are setup with the below options:
@@ -161,6 +163,21 @@ If available, recommended settings are:
- `On, fluency first` this sets the camera to CBR (constant bit rate)
- `Interframe Space 1x` this sets the iframe interval to the same as the frame rate
#### Setup via the Add Camera Wizard
The Add Camera Wizard is the recommended way to add a standard Reolink camera. Before starting, make sure HTTP is enabled in the camera's advanced network settings — the wizard uses the camera's HTTP API to determine its resolution and choose the recommended stream type from the table above.
1. Click **Add Camera** in <NavPath path="Settings > Global configuration > Camera management" />.
2. Choose **Manual selection** as the stream detection method and select **Reolink** as the camera brand.
3. The wizard queries the camera and automatically uses an http-flv stream for cameras 5MP and lower, or an RTSP stream for higher resolution cameras.
4. In the validation step, enable **Use stream compatibility mode** for http-flv streams when the wizard recommends it.
If you use the **Probe camera** method instead, the discovered stream URLs will be RTSP. For Reolink cameras where http-flv is recommended, the wizard will show a warning in the validation step.
The wizard covers standard single-camera setups. For two way talk, cameras connected through a Reolink NVR, or audio transcoding for WebRTC live view, configure the camera manually as shown below.
#### Manual configuration
According to [this discussion](https://github.com/blakeblackshear/frigate/issues/3235#issuecomment-1135876973), the http video streams seem to be the most reliable for Reolink.
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.
@@ -225,11 +242,12 @@ cameras:
roles:
- detect
```
</details>
### Unifi Protect Cameras
:::note
:::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.
@@ -269,7 +287,6 @@ Some community members have found better performance on Wyze cameras by using an
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.
+1 -1
View File
@@ -194,7 +194,7 @@ Camera groups let you organize cameras together with a shared name and icon, mak
<ConfigTabs>
<TabItem value="ui">
On the Live dashboard, press the **+** icon in the main navigation to add a new camera group. Configure the group name, select which cameras to include, choose an icon, and set the display order.
On the Live dashboard, press the **pencil icon** in the main navigation to add a new camera group. Configure the group name, select which cameras to include, choose an icon, and set the display order.
</TabItem>
<TabItem value="yaml">
+1 -1
View File
@@ -206,7 +206,7 @@ Start with the [Usage](#usage) section and re-read the [Model Requirements](#mod
1. Ensure `person` is being _detected_. A `person` will automatically be scanned by Frigate for a face. Any detected faces will appear in the Recent Recognitions 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`.
- Watch the [debug view](/usage/live#the-single-camera-view) 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:
+39 -39
View File
@@ -7,27 +7,27 @@ import ConfigTabs from "@site/src/components/ConfigTabs";
import TabItem from "@theme/TabItem";
import NavPath from "@site/src/components/NavPath";
Some presets of FFmpeg args are provided by default to make the configuration easier. All presets can be seen in [this file](https://github.com/blakeblackshear/frigate/blob/master/frigate/ffmpeg_presets.py).
Frigate ships with a set of FFmpeg presets to keep your configuration short and readable. Each preset expands to a longer list of FFmpeg arguments at runtime. You can see exactly what every preset expands to in [this file](https://github.com/blakeblackshear/frigate/blob/master/frigate/ffmpeg_presets.py).
### Hwaccel Presets
In the config file you reference a preset by its name (for example, `preset-vaapi`). In the UI, the same preset is shown with a friendly label (for example, **VAAPI (Intel/AMD GPU)**). Both refer to the same thing — the tables below list the config name alongside the label you'll see in the UI.
It is highly recommended to use hwaccel presets in the config. These presets not only replace the longer args, but they also give Frigate hints of what hardware is available and allows Frigate to make other optimizations using the GPU such as when encoding the birdseye restream or when scaling a stream that has a size different than the native stream size.
### Hwaccel (Hardware Acceleration) Presets
See [the hwaccel docs](/configuration/hardware_acceleration_video.md) for more info on how to setup hwaccel for your GPU / iGPU.
Hardware acceleration arguments tell FFmpeg to decode your camera's video stream on a GPU or integrated graphics chip instead of the CPU, which dramatically lowers CPU usage. Using a preset is highly recommended. Beyond replacing a long list of arguments, each preset also tells Frigate what hardware is available so it can offload additional work to the GPU — for example, encoding the Birdseye restream or scaling a stream whose resolution differs from the camera's native size.
| Preset | Usage | Other Notes |
| --------------------- | ------------------------------ | ----------------------------------------------------- |
| preset-rpi-64-h264 | 64 bit Rpi with h264 stream | |
| preset-rpi-64-h265 | 64 bit Rpi with h265 stream | |
| preset-vaapi | Intel & AMD VAAPI | Check hwaccel docs to ensure correct driver is chosen |
| preset-intel-qsv-h264 | Intel QSV with h264 stream | If issues occur recommend using vaapi preset instead |
| preset-intel-qsv-h265 | Intel QSV with h265 stream | If issues occur recommend using vaapi preset instead |
| preset-nvidia | Nvidia GPU | |
| preset-jetson-h264 | Nvidia Jetson with h264 stream | |
| preset-jetson-h265 | Nvidia Jetson with h265 stream | |
| preset-rkmpp | Rockchip MPP | Use image with \*-rk suffix and privileged mode |
See [the hardware acceleration docs](/configuration/hardware_acceleration_video.md) for details on setting up hardware acceleration for your GPU / iGPU, then select the preset that matches your hardware.
Select the appropriate hwaccel preset for your hardware.
| Preset (YAML config) | UI Label | Usage | Notes |
| --------------------- | ----------------------- | --------------------------------- | --------------------------------------------------------------- |
| preset-rpi-64-h264 | Raspberry Pi (H.264) | 64-bit Raspberry Pi, H.264 stream | |
| preset-rpi-64-h265 | Raspberry Pi (H.265) | 64-bit Raspberry Pi, H.265 stream | |
| preset-vaapi | VAAPI (Intel/AMD GPU) | Intel or AMD GPU via VAAPI | Check the hwaccel docs to ensure the correct driver is selected |
| preset-intel-qsv-h264 | Intel QuickSync (H.264) | Intel QuickSync, H.264 stream | If you have issues, use the VAAPI preset instead |
| preset-intel-qsv-h265 | Intel QuickSync (H.265) | Intel QuickSync, H.265 stream | If you have issues, use the VAAPI preset instead |
| preset-nvidia | NVIDIA GPU | NVIDIA GPU | |
| preset-jetson-h264 | NVIDIA Jetson (H.264) | NVIDIA Jetson, H.264 stream | |
| preset-jetson-h265 | NVIDIA Jetson (H.265) | NVIDIA Jetson, H.265 stream | |
| preset-rkmpp | Rockchip RKMPP | Rockchip MPP | Use an image with the `-rk` suffix and run in privileged mode |
<ConfigTabs>
<TabItem value="ui">
@@ -53,25 +53,25 @@ cameras:
### Input Args Presets
Input args presets help make the config more readable and handle use cases for different types of streams to ensure maximum compatibility.
Input arguments are passed to FFmpeg before your camera source and control how Frigate connects to and reads the stream — the transport protocol, timeouts, reconnection behavior, and how the stream is probed. The right input args ensure a reliable connection and maximum compatibility for each type of stream.
See [the camera specific docs](/configuration/camera_specific.md) for more info on non-standard cameras and recommendations for using them in Frigate.
See [the camera-specific docs](/configuration/camera_specific.md) for more on non-standard cameras and recommendations for using them in Frigate.
| Preset | Usage | Other Notes |
| -------------------------------- | ------------------------- | ------------------------------------------------------------------------------------------------ |
| preset-http-jpeg-generic | HTTP Live Jpeg | Recommend restreaming live jpeg instead |
| preset-http-mjpeg-generic | HTTP Mjpeg Stream | Recommend restreaming mjpeg stream instead |
| preset-http-reolink | Reolink HTTP-FLV Stream | Only for reolink http, not when restreaming as rtsp |
| preset-rtmp-generic | RTMP Stream | |
| preset-rtsp-generic | RTSP Stream | This is the default when nothing is specified |
| preset-rtsp-restream | RTSP Stream from restream | Use for rtsp restream as source for frigate |
| preset-rtsp-restream-low-latency | RTSP Stream from restream | Use for rtsp restream as source for frigate to lower latency, may cause issues with some cameras |
| preset-rtsp-udp | RTSP Stream via UDP | Use when camera is UDP only |
| preset-rtsp-blue-iris | Blue Iris RTSP Stream | Use when consuming a stream from Blue Iris |
| Preset (config) | UI Label | Usage | Notes |
| -------------------------------- | ----------------------------------------- | --------------------------- | ------------------------------------------------------------------------------- |
| preset-http-jpeg-generic | HTTP JPEG (Generic) | HTTP live JPEG | Restreaming the live JPEG is recommended instead |
| preset-http-mjpeg-generic | HTTP MJPEG (Generic) | HTTP MJPEG stream | Restreaming the MJPEG stream is recommended instead |
| preset-http-reolink | HTTP - Reolink Cameras | Reolink HTTP-FLV stream | Only for Reolink HTTP, not when restreaming as RTSP |
| preset-rtmp-generic | RTMP (Generic) | RTMP stream | |
| preset-rtsp-generic | RTSP (Generic) | RTSP stream | The default when no input args are specified |
| preset-rtsp-restream | RTSP - Restream from go2rtc | RTSP stream from a restream | Use when a go2rtc restream is the source for Frigate |
| preset-rtsp-restream-low-latency | RTSP - Restream from go2rtc (Low Latency) | RTSP stream from a restream | Lowers latency for a go2rtc restream source; may cause issues with some cameras |
| preset-rtsp-udp | RTSP - UDP | RTSP stream over UDP | Use when the camera only supports UDP |
| preset-rtsp-blue-iris | RTSP - Blue Iris | Blue Iris RTSP stream | Use when consuming a stream from Blue Iris |
:::warning
It is important to be mindful of input args when using restream because you can have a mix of protocols. `http` and `rtmp` presets cannot be used with `rtsp` streams. For example, when using a reolink cam with the rtsp restream as a source for record the preset-http-reolink will cause a crash. In this case presets will need to be set at the stream level. See the example below.
Be mindful of input arguments when restreaming, because you can end up with a mix of protocols. The `http` and `rtmp` presets cannot be used with `rtsp` streams. For example, using a Reolink camera with an RTSP restream as the recording source while `preset-http-reolink` is applied will cause a crash. In cases like this, set the preset at the stream level instead. See the example below.
:::
@@ -96,13 +96,13 @@ cameras:
### Output Args Presets
Output args presets help make the config more readable and handle use cases for different types of streams to ensure consistent recordings.
Output arguments are passed to FFmpeg after your camera source and control how recordings are written — which codecs are used and whether audio and video are copied as-is or re-encoded. The right output args ensure consistent, playable recordings for each type of stream.
| Preset | Usage | Other Notes |
| -------------------------------- | --------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| preset-record-generic | Record WITHOUT audio | If your camera doesn't have audio, or if you don't 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 |
| Preset (config) | UI Label | Usage | Notes |
| -------------------------------- | ------------------------------- | ----------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| preset-record-generic | Record (Generic, no audio) | Record without audio | Use this if your camera has no audio, or if you don't want to record audio |
| preset-record-generic-audio-copy | Record (Generic + Copy Audio) | Record with the original audio | Use this to keep the camera's audio in recordings without re-encoding |
| preset-record-generic-audio-aac | Record (Generic + Audio to AAC) | Record with audio transcoded to AAC | The default when no output args are specified. Transcodes audio to AAC. If the source is already AAC, use `preset-record-generic-audio-copy` to avoid re-encoding |
| preset-record-mjpeg | Record - MJPEG Cameras | Record an MJPEG stream | Restreaming the MJPEG stream is recommended instead |
| preset-record-jpeg | Record - JPEG Cameras | Record a live JPEG | Restreaming the live JPEG is recommended instead |
| preset-record-ubiquiti | Record - Ubiquiti Cameras | Record a Ubiquiti stream with audio | Handles Ubiquiti's non-standard audio format |
+7 -8
View File
@@ -27,13 +27,12 @@ Running Generative AI models on CPU is not recommended, as high inference times
You must use a vision-capable model with Frigate. The following models are recommended for local deployment:
| Model | Notes |
| ------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `qwen3-vl` | Strong visual and situational understanding, enhanced ability to identify smaller objects and interactions with object. |
| `qwen3.5` | Strong situational understanding, but missing DeepStack from qwen3-vl leading to worse performance for identifying objects in people's hand and other small details. |
| `gemma4` | Strong situational understanding, sometimes resorts to more vague terms like 'interacts' instead of assigning a specific action. |
| `Intern3.5VL` | Relatively fast with good vision comprehension |
| `gemma3` | Slower model with good vision and temporal understanding |
| Model | Notes |
| ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `qwen3-vl` | Strong visual and situational understanding, enhanced ability to identify smaller objects and interactions with object. |
| `qwen3.5` | Strong situational understanding, but missing DeepStack from qwen3-vl leading to worse performance for identifying objects in people's hand and other small details. |
| `qwen3.6` | Strong situational understanding, similar to qwen3-vl |
| `gemma4` | Strong situational understanding, sometimes resorts to more vague terms like 'interacts' instead of assigning a specific action. |
:::info
@@ -294,7 +293,7 @@ Other HTTP options are available, see the [python-genai documentation](https://g
### 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.
OpenAI does not have a free tier for their API.
#### Supported Models
@@ -17,8 +17,6 @@ Some types of hardware acceleration are detected and used automatically, but you
- Check the logs: A message will either say that hardware acceleration was automatically detected, or there will be a warning that no hardware acceleration was automatically detected
- If hardware acceleration is specified in the config, verification can be done by ensuring the logs are free from errors. There is no CPU fallback for hardware acceleration.
:::info
Frigate supports presets for optimal hardware accelerated video decoding:
**AMD**
@@ -49,14 +47,10 @@ Frigate supports presets for optimal hardware accelerated video decoding:
Depending on your system, these presets may not be compatible, and you may need to use manual hwaccel args to take advantage of your hardware. More information on hardware accelerated decoding for ffmpeg can be found here: https://trac.ffmpeg.org/wiki/HWAccelIntro
:::
## Intel-based CPUs
Frigate can utilize most Intel integrated GPUs and Arc GPUs to accelerate video decoding.
:::info
**Recommended hwaccel Preset**
| CPU Generation | Intel Driver | Recommended Preset | Notes |
@@ -68,8 +62,6 @@ Frigate can utilize most Intel integrated GPUs and Arc GPUs to accelerate video
| Intel Arc A-series | iHD / Xe | preset-intel-qsv-\* | |
| Intel Arc B-series | iHD / Xe | preset-intel-qsv-\* | Requires host kernel 6.12+ |
:::
:::note
The default driver is `iHD`. You may need to change the driver to `i965` by adding the following environment variable `LIBVA_DRIVER_NAME=i965` to your docker-compose file or [in the `config.yml` for HA App users](advanced/system.md#environment_vars).
@@ -680,6 +680,7 @@ lpr:
- You may need to adjust your `detection_threshold` if your plates are not being detected.
4. Ensure the characters on detected plates are being _recognized_.
- Check the **Plate recognition** inference time in Enrichment metrics (<NavPath path="System metrics > Enrichments" />). High inference times (> 100ms) could lead to poor recognition results, especially for dedicated LPR cameras where the plate crosses the frame quickly.
- 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).
+4
View File
@@ -434,3 +434,7 @@ When your browser runs into problems playing back your camera streams, it will l
```
The same applies to your `record` stream: if its aspect ratio differs from your `detect` stream, your recordings will appear in a different shape than the live view. For consistent framing across live view and recordings, use the same aspect ratio for all of a camera's streams (the resolution can still differ).
9. **Why does Frigate prefer MSE over WebRTC for live view?**
Frigate prefers MSE because it delivers a better out-of-the-box experience than WebRTC on nearly every axis that matters for a security camera system. MSE is an open standard optimized and supported by all modern browsers, works without any extra configuration (WebRTC requires port forwarding and candidate setup, and lacks H.265 support in some browsers), and requires no internet access for NAT traversal. More importantly, MSE runs over TCP, so every frame arrives and is decoded in order, so nothing is ever silently skipped. WebRTC optimizes for latency over UDP by discarding late or incomplete frames, which works against you on cellular or spotty Wi-Fi: you can end up with frozen video, visual corruption, or gaps in the feed without ever knowing you missed something. Frigate's enhanced MSE player has adaptive speed playback and has been tuned for latency and connection robustness that meets or exceeds WebRTC, so you get near-real-time playback with a guarantee that when the video plays, every frame is actually there - which, for an NVR whose whole purpose is letting you see what happened, matters more than shaving fractions of a second off a latency number. That's why Frigate defaults to MSE and reserves WebRTC for cases that require it, like two-way talk.
+11 -11
View File
@@ -7,11 +7,11 @@ import ConfigTabs from "@site/src/components/ConfigTabs";
import TabItem from "@theme/TabItem";
import NavPath from "@site/src/components/NavPath";
Frigate has two kinds of masks: motion masks and object filter masks. Both are narrow tools for fine-tuning, **not for hiding an area from Frigate**. Masks should be used sparingly; in most cases where users reach for one, a [zone](zones.md) with `required_zones` is the right tool instead. See [Which tool do I need?](#which-tool-do-i-need) and [Common mistakes](#common-mistakes) below if you're new to Frigate's mask behavior.
Frigate has two kinds of masks: motion masks and object filter masks. Both are narrow tools for fine-tuning, **not for hiding an area from Frigate**. Masks should be used sparingly; in most cases where users reach for one, a [zone](zones.md) with [`required_zones`](zones.md#restricting-alerts-and-detections-to-specific-zones) is the right tool instead. See [Which tool do I need?](#which-tool-do-i-need) and [Common mistakes](#common-mistakes) below if you're new to Frigate's mask behavior.
## Motion masks
Motion masks are used to prevent unwanted types of motion from triggering detection. Try watching the Debug feed (Settings --> Debug) with `Motion Boxes` enabled to see what may be regularly detected as motion. For example, you want to mask out your timestamp, the sky, rooftops, etc. Keep in mind that this mask only prevents motion from being detected and does not prevent objects from being detected if object detection was started due to motion in unmasked areas. Motion is also used during object tracking to refine the object detection area in the next frame. _Over-masking will make it more difficult for objects to be tracked._
Motion masks are used to prevent unwanted types of motion from triggering detection. Try watching the [Debug view](/usage/live#the-single-camera-view) with `Motion Boxes` enabled to see what may be regularly detected as motion. For example, you want to mask out your timestamp, the sky, rooftops, etc. Keep in mind that this mask only prevents motion from being detected and does not prevent objects from being detected if object detection was started due to motion in unmasked areas. Motion is also used during object tracking to refine the object detection area in the next frame. _Over-masking will make it more difficult for objects to be tracked._
See [further clarification](#further-clarification) below on why you may not want to use a motion mask.
@@ -25,12 +25,12 @@ Object filter masks can be used to filter out stubborn false positives in fixed
## Which tool do I need?
| What you're trying to do | Recommended tool | How it works |
| ------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Don't get alerts or recordings for activity in an area (e.g., the sidewalk in front of your house) | A [zone](zones.md) combined with `review.alerts.required_zones` (and/or `review.detections.required_zones`) | Frigate keeps detecting and tracking activity in the area, but a review item is only created once the bottom-center of an object's bounding box enters a required zone. |
| Stop a stubborn false positive at a specific fixed spot (e.g., a tree base that keeps being detected as a person) | An **object filter mask** for that object type | Any detection of that object type whose bounding-box bottom-center lands inside the mask is treated as a false positive and discarded. |
| Ignore motion in an area that obviously isn't an object of interest (e.g., the camera timestamp, sky, flags, treetops swaying) | A **motion mask** | Motion inside the mask is ignored when deciding whether to run object detection. Objects can still be detected in a motion masked area if motion elsewhere in the frame triggers detection. |
| Stop tracking an object type altogether on this camera (e.g., you never care about cats) | Remove the object from the camera's [`objects.track`](objects.md) list | Frigate skips this object type entirely on this camera, regardless of where it appears. |
| What you're trying to do | Recommended tool | How it works |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Only get alerts/detections for activity in the areas you care about, ignoring activity elsewhere (e.g., alert when someone enters your yard, but not when they walk past on the sidewalk) | A [zone](zones.md) combined with [`required_zones`](zones.md#restricting-alerts-and-detections-to-specific-zones) | Frigate keeps detecting and tracking activity everywhere in the frame, but a review item is only created once the bottom-center of an object's bounding box enters a required zone. |
| Stop a stubborn false positive at a specific fixed spot (e.g., a tree base that keeps being detected as a person) | An **object filter mask** for that object type | Any detection of that object type whose bounding-box bottom-center lands inside the mask is treated as a false positive and discarded. |
| Ignore motion in an area that obviously isn't an object of interest (e.g., the camera timestamp, sky, flags, treetops swaying) | A **motion mask** | Motion inside the mask is ignored when deciding whether to run object detection. Objects can still be detected in a motion masked area if motion elsewhere in the frame triggers detection. |
| Stop tracking an object type altogether on this camera (e.g., you never care about cats) | Remove the object from the camera's [`objects.track`](objects.md) list | Frigate skips this object type entirely on this camera, regardless of where it appears. |
## Using the mask creator
@@ -139,10 +139,10 @@ That may be the case for you. Frigate will definitely work harder tracking peopl
## Common mistakes
**"I added a motion mask to ignore my driveway/sidewalk."**
A motion mask doesn't hide an area from Frigate. Objects can still be detected and tracked inside a masked area. The mask only stops motion _in that area_ from triggering object detection. If you want activity on the sidewalk to never produce a review item, define a [zone](zones.md) over the area you DO care about (your stoop, your driveway) and add it to `review.alerts.required_zones`. Frigate will still see people on the sidewalk, but it won't create an alert until they cross into the zone.
A motion mask doesn't hide an area from Frigate. Objects can still be detected and tracked inside a masked area. The mask only stops motion _in that area_ from triggering object detection. If you want activity on the sidewalk to never produce a review item, define a [zone](zones.md) over the area you DO care about (your stoop, your driveway) and add it to [`required_zones`](zones.md#restricting-alerts-and-detections-to-specific-zones). Frigate will still see people on the sidewalk, but it won't create an alert until they cross into the zone.
**"I added an object filter mask because I don't care about cars in my yard."**
Object filter masks are for stubborn false positives at fixed locations, not for filtering whole areas or whole object types. If you only want alerts when a car enters the driveway, use a [zone](zones.md) with `required_zones`. If you don't care about a whole object type on this camera, remove it from [`objects.track`](objects.md).
Object filter masks are for stubborn false positives at fixed locations, not for filtering whole areas or whole object types. If you only want alerts when a car enters the driveway, use a [zone](zones.md) with [`required_zones`](zones.md#restricting-alerts-and-detections-to-specific-zones). If you don't care about a whole object type on this camera, remove it from [`objects.track`](objects.md).
**"I masked everything except a thin strip on my stoop."**
Heavy masking hurts tracking. Frigate uses motion near a tracked object's previous bounding box to decide where to look in the next frame; with most of the frame masked, an object walking from an unmasked area into a masked one effectively disappears and gets picked up as a "new" object when it reappears. For example: someone walks down your sidewalk, stops under a tree (masked area) to tie their shoe, then continues. Frigate sees that as two separate people and can create two separate review items. Because Frigate needs several consecutive frames above the confidence threshold to commit to a detection, each re-appearance can also delay or miss alerts. Use `required_zones` for "only alert me about this spot" and leave the surrounding area unmasked so tracking stays intact.
Heavy masking hurts tracking. Frigate uses motion near a tracked object's previous bounding box to decide where to look in the next frame; with most of the frame masked, an object walking from an unmasked area into a masked one effectively disappears and gets picked up as a "new" object when it reappears. For example: someone walks down your sidewalk, stops under a tree (masked area) to tie their shoe, then continues. Frigate sees that as two separate people and can create two separate review items. Because Frigate needs several consecutive frames above the confidence threshold to commit to a detection, each re-appearance can also delay or miss alerts. Use [`required_zones`](zones.md#restricting-alerts-and-detections-to-specific-zones) for "only alert me about this spot" and leave the surrounding area unmasked so tracking stays intact.
+1 -1
View File
@@ -11,7 +11,7 @@ import NavPath from "@site/src/components/NavPath";
Frigate uses motion detection as a first line check to see if there is anything happening in the frame worth checking with object detection.
Once motion is detected, it tries to group up nearby areas of motion together in hopes of identifying a rectangle in the image that will capture the area worth inspecting. These are the red "motion boxes" you see in the debug viewer.
Once motion is detected, it tries to group up nearby areas of motion together in hopes of identifying a rectangle in the image that will capture the area worth inspecting. These are the red "motion boxes" you see in the [debug viewer](/usage/live#the-single-camera-view).
## The Goal
+3 -3
View File
@@ -7,7 +7,7 @@ import ConfigTabs from "@site/src/components/ConfigTabs";
import TabItem from "@theme/TabItem";
import NavPath from "@site/src/components/NavPath";
There are several types of object filters that can be used to reduce false positive rates.
There are several types of object filters that can be used to reduce [false positive](/frigate/glossary#false-positive) rates.
## Object Scores
@@ -144,8 +144,8 @@ cameras:
### Zones
[Required zones](/configuration/zones.md) can be a great tool to reduce false positives that may be detected in the sky or other areas that are not of interest. The required zones will only create tracked objects for objects that enter the zone.
[Required zones](/configuration/zones.md#restricting-alerts-and-detections-to-specific-zones) can be a great tool to reduce false positives that may be detected in the sky or other areas that are not of interest. The required zones will only create tracked objects for objects that enter the zone.
### Object Masks
[Object Filter Masks](/configuration/masks) are a last resort but can be useful when false positives are in the relatively same place but can not be filtered due to their size or shape. Object filter masks can be configured in <NavPath path="Settings > Camera configuration > Masks / Zones" />.
[Object Filter Masks](/configuration/masks#object-filter-masks) are a last resort but can be useful when false positives are in the relatively same place but can not be filtered due to their size or shape. Object filter masks can be configured in <NavPath path="Settings > Camera configuration > Masks / Zones" />.
+6
View File
@@ -235,3 +235,9 @@ When you delete a base zone or mask in the Frigate UI, any profile overrides for
### Why are some settings missing when I configure a profile override?
Fields that require a Frigate restart to take effect cannot be overridden by profiles, since profiles are applied at runtime without restarting. Those fields are hidden when editing a profile override and can only be changed on the base configuration.
### Can I schedule profiles to be enabled or disabled at certain times?
Not within Frigate itself. Frigate is an NVR, not an automation platform, so it intentionally does not include a scheduler for activating profiles. Instead, activate profiles from an automation platform that already handles time- and event-based triggers well, such as [Home Assistant](https://www.home-assistant.io/) or [Node-RED](https://nodered.org/). These integrate with Frigate and give you far more robust and flexible scheduling than a built-in scheduler could.
If you prefer something lightweight, a simple script driven by a cron job that toggles profiles on a schedule works too.
+1 -1
View File
@@ -23,7 +23,7 @@ In 0.14 and later, all of that is bundled into a single review item which starts
## Alerts and Detections
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 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.
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 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](/configuration/zones#restricting-alerts-and-detections-to-specific-zones) for them.
:::note
+6 -6
View File
@@ -18,7 +18,7 @@ Zones cannot have the same name as a camera. If desired, a single zone can inclu
Zones can be toggled on or off without removing them from the configuration. Disabled zones are completely ignored at runtime - objects will not be tracked for zone presence, and zones will not appear in the debug view. This is useful for temporarily disabling a zone during certain seasons or times of day without modifying the configuration.
During testing, enable the Zones option for the Debug view of your camera (Settings --> Debug) so you can adjust as needed. The zone line will increase in thickness when any object enters the zone.
During testing, enable the Zones option for the [Debug view](/usage/live#the-single-camera-view) of your camera so you can adjust as needed. The zone line will increase in thickness when any object enters the zone.
## Creating a Zone
@@ -61,7 +61,7 @@ Navigate to <NavPath path="Settings > Camera configuration > Review" />.
| Field | Description |
| ---------------------------------- | ----------------------------------------------------------------------------------------- |
| **Alerts config > Required zones** | Zones that an object must enter to be considered an alert; leave empty to allow any zone. |
| **Alerts config > Required zones** | Set to `entire_yard` so an object must enter that zone to be considered an alert; leave empty to allow alerts anywhere in the frame. |
</TabItem>
<TabItem value="yaml">
@@ -82,7 +82,7 @@ cameras:
</TabItem>
</ConfigTabs>
You may also want to filter detections to only be created when an object enters a secondary area of interest. For example, to trigger alerts when an object enters the inner area of the yard but detections when an object enters the edge of the yard:
You may also want to filter detections to only be created when an object enters a secondary area of interest. For example, to trigger alerts when an object enters the inner area of the yard (an `inner_yard` zone) but detections when an object enters the edge of the yard (an `edge_yard` zone):
<ConfigTabs>
<TabItem value="ui">
@@ -91,8 +91,8 @@ Navigate to <NavPath path="Settings > Camera configuration > Review" />.
| Field | Description |
| -------------------------------------- | -------------------------------------------------------------------------------------------- |
| **Alerts config > Required zones** | Zones that an object must enter to be considered an alert; leave empty to allow any zone. |
| **Detections config > Required zones** | Zones that an object must enter to be considered a detection; leave empty to allow any zone. |
| **Alerts config > Required zones** | Set to `inner_yard` so an object must enter that zone to be considered an alert; leave empty to allow alerts anywhere in the frame. |
| **Detections config > Required zones** | Set to `edge_yard` so an object must enter that zone to be considered a detection; leave empty to allow detections anywhere in the frame. |
</TabItem>
<TabItem value="yaml">
@@ -121,7 +121,7 @@ cameras:
### Restricting snapshots to specific zones
To only save snapshots when an object enters a specific zone:
To only save snapshots when an object enters a specific zone, for example an `entire_yard` zone:
<ConfigTabs>
<TabItem value="ui">
+1 -1
View File
@@ -31,7 +31,7 @@ Larger resolutions **do** improve performance if the objects are very small in t
:::warning
Most users who raise `detect.fps` above the default don't need to. Increasing it consumes more CPU/GPU (detection load scales directly with the frame rate) while providing **no benefit to tracking** once objects are already being followed smoothly. Leave it at **5** unless you have a specific scene that fails the test below, and confirm any change actually helps in the debug view.
Most users who raise `detect.fps` above the default don't need to. Increasing it consumes more CPU/GPU (detection load scales directly with the frame rate) while providing **no benefit to tracking** once objects are already being followed smoothly. Leave it at **5** unless you have a specific scene that fails the test below, and confirm any change actually helps in the [debug view](/usage/live#the-single-camera-view).
:::
+1 -1
View File
@@ -15,7 +15,7 @@ A property detected on an [object](#object) that exists alongside its [label](#l
## Bounding Box
A box returned by the object detection [model](#model) that outlines a detected [object](#object) in the frame. In the Debug view, bounding boxes are colored by object [label](#label).
A box returned by the object detection [model](#model) that outlines a detected [object](#object) in the frame. In the [Debug view](/usage/live#the-single-camera-view), bounding boxes are colored by object [label](#label).
### Bounding Box Colors
+1 -1
View File
@@ -305,7 +305,7 @@ Restart Frigate and you should start seeing detections for `person`. If you want
### Step 5: Setup motion masks
Now that you have optimized your configuration for decoding the video stream, you will want to check to see where to implement motion masks. Click on the camera from the main dashboard, then select the gear icon in the top right, enable Debug View, and finally enable the switch for Motion Boxes. Watch for areas that continuously trigger unwanted motion to be detected. Common areas to mask include camera timestamps and trees that frequently blow in the wind. The goal is to avoid wasting object detection cycles looking at these areas.
Now that you have optimized your configuration for decoding the video stream, you will want to check to see where to implement motion masks. Click on the camera from the main dashboard, then select the gear icon in the top right, enable the [Debug view](/usage/live#the-single-camera-view), and finally enable the switch for Motion Boxes. Watch for areas that continuously trigger unwanted motion to be detected. Common areas to mask include camera timestamps and trees that frequently blow in the wind. The goal is to avoid wasting object detection cycles looking at these areas.
Use the mask editor to draw polygon masks directly on the camera feed. Navigate to <NavPath path="Settings > Camera configuration > Masks / Zones" /> and set up a motion mask over the area. More information about masks can be found [here](../configuration/masks.md).
@@ -31,6 +31,10 @@ 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 Notify Alert](https://github.com/Sysoev86/frigate-notify-alert)
[Frigate Notify Alert](https://github.com/Sysoev86/frigate-notify-alert) sends Frigate events to Telegram as a photo + video media group. It supports multiple camera groups (each notifying its own chat), optional zone filtering (notify only when an object enters a chosen zone), and in-chat buttons to pause notifications for a set time. Works with standalone Frigate over MQTT; Home Assistant not required.
## [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.
+4 -3
View File
@@ -44,7 +44,7 @@ Choosing the right detector for your hardware is the single most important facto
### Understanding Detector Performance
Frigate uses motion detection as a first-line check before running expensive object detection, as explained in the [motion detection documentation](../configuration/motion_detection). When motion is detected, Frigate creates a "region" (the green boxes in the debug viewer) and sends it to the detector. The detector's inference speed determines how many detections per second your system can handle.
Frigate uses motion detection as a first-line check before running expensive object detection, as explained in the [motion detection documentation](../configuration/motion_detection). When motion is detected, Frigate creates a "region" (the green boxes in the [debug viewer](/usage/live#the-single-camera-view)) and sends it to the detector. The detector's inference speed determines how many detections per second your system can handle.
**Calculating Detector Capacity:** Your detector has a finite capacity measured in detections per second. With an inference speed of 10ms, your detector can handle approximately 100 detections per second (1000ms / 10ms = 100).If your cameras collectively require more than this capacity, you'll experience delays, missed detections, or the system will fall behind.
@@ -58,7 +58,6 @@ When a single detector cannot keep up with your camera count, some detector type
For detailed instructions on configuring multiple detectors, see the [Object Detectors documentation](../configuration/object_detectors).
**When to add a second detector:**
- Skipped FPS is consistently > 0 even during normal activity
@@ -70,4 +69,6 @@ The model you use significantly impacts detector performance. Frigate provides d
**Model Size Trade-offs:**
- Smaller models (320x320): Faster inference, Frigate is specifically optimized for a 320x320 size model.
- Larger models (640x640): Slower inference, can sometimes have higher accuracy on very large objects that take up a majority of the frame.
- Larger models (640x640): Slower inference, can sometimes have higher accuracy on very large objects that take up a majority of the frame.
For more detail on picking the right size, see [Choosing a model size](../configuration/object_detectors.md#choosing-a-model-size).
+1 -1
View File
@@ -109,7 +109,7 @@ cameras:
2. Add the temporary camera to `config/config.yml` (example above). Use a unique name such as `test` or `replay_camera` so it's easy to remove later.
- If you're debugging a specific camera, copy the settings from that camera (frame rate, model/enrichment settings, zones, etc.) into the temporary camera so the replay closely matches the original environment. Leave `record` and `snapshots` disabled unless you are specifically debugging recording or snapshot behavior.
3. Restart Frigate.
4. Observe the Debug view in the UI and logs as the clip is replayed. Watch detections, zones, or any feature you're looking to debug, and note any errors in the logs to reproduce the issue.
4. Observe the [Debug view](/usage/live#the-single-camera-view) in the UI and logs as the clip is replayed. Watch detections, zones, or any feature you're looking to debug, and note any errors in the logs to reproduce the issue.
5. Iterate on camera or enrichment settings (model, fps, zones, filters) and re-check the replay until the behavior is resolved.
6. Remove the temporary camera from your config after debugging to avoid spurious telemetry or recordings.
+18 -5
View File
@@ -49,9 +49,9 @@ This almost always means that the width/height defined for your camera are not c
These messages in the logs are expected in certain situations. Frigate checks the integrity of the recordings before storing. Occasionally these cached files will be invalid and cleaned up automatically.
### "On connect called"
### "MQTT connected" repeats in the logs
If you see repeated "On connect called" messages in your logs, check for another instance of Frigate. This happens when multiple Frigate containers are trying to connect to MQTT with the same `client_id`.
If you see repeated "MQTT connected" messages in your logs, check for another instance of Frigate. This happens when multiple Frigate containers are trying to connect to MQTT with the same `client_id`.
### Error: Database Is Locked
@@ -125,11 +125,11 @@ cameras:
height: 720
```
### Why does Frigate keep creating new events for my parked car?
### Why does Frigate keep creating new tracked objects for my parked car?
Stationary tracking is designed to _prevent_ this — a parked car should stay one tracked object and not generate new events. If you're getting repeated events for the same car, it's likely that Frigate is losing the tracked object and re-detecting it as a new one.
Stationary tracking is designed to _prevent_ this — a parked car should remain a single tracked object rather than generating new ones. If you're repeatedly getting new tracked objects for the same car, it's likely that Frigate is losing the object and re-detecting it as a new one.
Open one of the events in Explore → **Tracking Details**. If the detection scores are low (< 70% or so), the model isn't confident the parked car is a car. This is common with the free [COCO-trained](https://cocodataset.org/#explore) object detection models on steep/top-down angles, partially occluded cars, foliage, or low-light footage. When detections fall below `min_score` for too many frames the tracker loses the object, and the next confident frame creates a brand new one.
Open one of the tracked objects in Explore → **Tracking Details**. If the detection scores are low (< 70% or so), the model isn't confident the parked car is a car. This is common with the free [COCO-trained](https://cocodataset.org/#explore) object detection models on steep/top-down angles, partially occluded cars, foliage, or low-light footage. When detections fall below `min_score` for too many frames the tracker loses the object, and the next confident frame creates a brand new one.
What helps:
@@ -140,3 +140,16 @@ What helps:
- **Filter impossible locations** with [object filter masks](../configuration/masks.md#object-filter-masks) if cars are being detected on rooftops, treetops, etc.
See [Object Filters](../configuration/object_filters.md) for more on tuning `min_score` and `threshold` — note that raising them too high will make this exact problem worse.
### How do I correct Frigate when it detects something as the wrong object?
Frigate's object detection relies on a machine learning [model](../frigate/glossary.md#model), and the free [COCO-trained](https://cocodataset.org/#explore) models that ship with Frigate can misidentify objects in scenes they weren't trained on. There are two ways to handle this, depending on whether you want to _teach_ the model or just _suppress_ the bad result.
**Train or fine-tune a model with your own images.** The most durable fix is to improve the model itself. The biggest gains usually come from fine-tuning a model on images from your own cameras so it learns your specific scene. Some tools are freely available, and [Frigate+](https://frigate.video/plus) is a paid option that does this - models are trained on security-camera footage and can be fine-tuned on images you submit from your own setup. When Frigate mislabels something, open the tracked object in Explore, select the **Snapshot** tab, and use **Submit to Frigate+** to send the example with the correct label (or mark it as a [false positive](../frigate/glossary.md#false-positive)). Once you've submitted examples and [requested a model](../plus/first_model.md), the retrained model will be more accurate for your cameras. See [Submitting examples to Frigate+](../integrations/plus.md#submit-examples) for the full workflow.
**Suppress the misidentification with filters.** You can use filters to stop a specific false positive from being tracked:
- Tune `min_score` / `threshold`, or add `min_area` / `max_area` / `min_ratio` / `max_ratio` filters — see [Object Filters](../configuration/object_filters.md).
- If the false positive is always in the same fixed spot (like a statue or mailbox that reads as a person), add an [object filter mask](../configuration/masks.md#object-filter-masks) over that location.
Filters and masks only hide the incorrect result - they don't teach Frigate what the object actually is. For that, fine-tune your own model or use Frigate+.
+44 -1
View File
@@ -10,4 +10,47 @@ title: GPU Errors
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.
- 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.
## Intel/AMD GPU
### Hardware acceleration is not being used
For VAAPI or QSV to work, the GPU's render device must be passed through to the Frigate container. Intel and AMD GPUs expose this as a render node under `/dev/dri`, usually `/dev/dri/renderD128`. If it is not passed through, hardware acceleration is unavailable — ffmpeg fails to initialize it (for example `Failed to open the drm device` or `No VA display found for device`) and GPU usage stays at zero while CPU usage remains high.
Pass the render device through when starting the container. With `docker compose`:
```yaml
services:
frigate:
devices:
- /dev/dri/renderD128:/dev/dri/renderD128 # Intel / AMD GPU, update for your hardware
```
Or with `docker run`, add `--device /dev/dri/renderD128`. See the [installation docs](/frigate/installation) for a complete example.
If it still isn't working after passing the device through:
- **Confirm the render node exists and is the correct one.** Run `ls /dev/dri` on the host — you should see one or more `renderD12X` entries. Systems with more than one GPU (an Intel iGPU plus a discrete GPU) can expose both `/dev/dri/renderD128` and `/dev/dri/renderD129`, and the numbering is not guaranteed. Pass through the correct node, or map the entire directory (`/dev/dri:/dev/dri`, or `--device /dev/dri`) so all render nodes are available.
- **Check device permissions.** The Frigate process must be able to access the render node. This is usually automatic when the container runs as root (the default), but nested setups such as an unprivileged Proxmox/LXC container often require making the device accessible on the host (for example, a world-readable render node) or running the container privileged. Note that running Frigate inside an LXC is not officially supported — see the [installation docs](/frigate/installation#proxmox) for details.
### Failed to download frame: -5
When using VAAPI or QSV hardware acceleration, ffmpeg may crash and restart periodically with a signature like this in the `ffmpeg.<camera>.detect` log:
```
[AVHWFramesContext @ 0x...] Failed to sync surface ... (operation failed).
[hwdownload @ 0x...] Failed to download frame: -5.
[vf#0:0 @ 0x...] Error while filtering: Input/output error
[vf#0:0 @ 0x...] Task finished with error code: -5 (Input/output error)
[frigate.video] <camera>: Unable to read frames from ffmpeg process.
```
This is a hardware frame synchronization failure between ffmpeg and the GPU driver, not a Frigate bug. It comes from how a specific camera stream interacts with the GPU's decode and scaling path, so it is highly dependent on your hardware, driver, and stream. Frigate's automatic hardware acceleration detection is a best-guess effort, so the fix is usually to tune the configuration for your specific hardware and camera. The solutions below are ordered from most to least likely to help:
- **Switch between the VAAPI and QSV presets.** On Intel Gen 12 and newer iGPUs, `preset-intel-qsv-h264` / `preset-intel-qsv-h265` is often more stable than the auto-detected `preset-vaapi`. See the [hardware acceleration docs](/configuration/hardware_acceleration_video.md#intel-based-cpus) for the recommended preset for your Intel generation.
- **Try a different VAAPI driver.** The default driver is `iHD`. On older Intel CPUs, `LIBVA_DRIVER_NAME=i965` can be more stable; on AMD GPUs use `LIBVA_DRIVER_NAME=radeonsi`. See [the hardware acceleration docs](/configuration/hardware_acceleration_video.md#intel-based-cpus) for how to set the driver.
- **Use a codec that decodes more reliably.** H.265/HEVC streams may trigger this error far more often than H.264 depending on your CPU generation. If your camera exposes a separate sub-stream, assign an H.264 stream to the `detect` role. Cameras that output full-range YUV (for example some Hikvision models) are especially prone to it.
- **Match the detect resolution to the stream resolution.** When the `detect` resolution differs from the stream, Frigate inserts a GPU scaling filter (`scale_vaapi`), which is where these surface-sync failures can often originate. Set the `detect` `width` and `height` to match the exact resolution of the stream assigned the `detect` role.
- **Match the detect `fps` to the camera stream.** Aggressively dropping frames (for example `detect` `fps: 1` on a stream that runs at 15 fps) can cause timing mismatches in the GPU's frame buffer. Lower the sub-stream's frame rate on the camera itself instead of dropping most frames in Frigate.
- **Fall back to software decoding.** If none of the above resolve it, remove the preset for that camera (`hwaccel_args: []`). Hardware decoding is only an optimization — on a capable CPU, software-decoding a low-resolution sub-stream is inexpensive and gives a stable detect pipeline.
+16 -8
View File
@@ -254,7 +254,14 @@ rateLimiter = RateLimiter()
def get_remote_addr(request: Request):
route = list(reversed(request.headers.get("x-forwarded-for").split(",")))
# fall back to the direct TCP peer when no proxy chain is present
direct_addr = request.client.host if request.client else None
forwarded_for = request.headers.get("x-forwarded-for")
if not forwarded_for:
return direct_addr or "127.0.0.1"
route = list(reversed(forwarded_for.split(",")))
logger.debug(f"IP Route: {[r for r in route]}")
trusted_proxies = []
for proxy in request.app.frigate_config.auth.trusted_proxies:
@@ -291,13 +298,8 @@ def get_remote_addr(request: Request):
logger.debug(f"First untrusted IP: {str(ip)}")
return str(ip)
# if there wasn't anything in the route, just return the default
remote_addr = None
if hasattr(request, "remote_addr"):
remote_addr = request.remote_addr
return remote_addr or "127.0.0.1"
# every hop in the route was trusted, so fall back to the direct peer
return direct_addr or "127.0.0.1"
def _cleanup_first_load_seen() -> None:
@@ -416,6 +418,12 @@ def create_encoded_jwt(user, role, expiration, secret):
def set_jwt_cookie(response: Response, cookie_name, encoded_jwt, expiration, secure):
# TODO: ideally this would set secure as well, but that requires TLS
# SameSite is intentionally left unset (browsers default to Lax). Setting
# SameSite=Lax/Strict would stop the cookie from being sent in cross-origin
# iframes, breaking embedded views such as the Home Assistant Frigate card.
# CSRF is instead mitigated by requiring a custom X-CSRF-TOKEN header, which
# cross-origin pages cannot set without a CORS preflight that Frigate never
# grants (see check_csrf in api/fastapi_app.py).
response.set_cookie(
key=cookie_name,
value=encoded_jwt,
+9 -11
View File
@@ -269,12 +269,12 @@ async def no_recordings(
cameras = params.cameras
if cameras != "all":
requested = set(unquote(cameras).split(","))
filtered = requested.intersection(allowed_cameras)
if not filtered:
return JSONResponse(content=[])
cameras = ",".join(filtered)
camera_list = list(requested.intersection(allowed_cameras))
else:
cameras = allowed_cameras
camera_list = list(allowed_cameras)
if not camera_list:
return JSONResponse(content=[])
before = params.before or datetime.datetime.now().timestamp()
after = (
@@ -283,12 +283,10 @@ async def no_recordings(
)
scale = params.scale
clauses = [(Recordings.end_time >= after) & (Recordings.start_time <= before)]
if cameras != "all":
camera_list = cameras.split(",")
clauses.append((Recordings.camera << camera_list))
else:
camera_list = allowed_cameras
clauses = [
(Recordings.end_time >= after) & (Recordings.start_time <= before),
(Recordings.camera << camera_list),
]
# Get recording start times
data: list[Recordings] = (
+45
View File
@@ -13,6 +13,10 @@ from frigate.comms.event_metadata_updater import (
EventMetadataTypeEnum,
)
from frigate.config import CameraConfig, FrigateConfig
from frigate.config.camera.updater import (
CameraConfigUpdateEnum,
CameraConfigUpdateSubscriber,
)
logger = logging.getLogger(__name__)
@@ -29,6 +33,11 @@ class CameraActivityManager:
self.zone_all_object_counts: dict[str, Counter] = {}
self.zone_active_object_counts: dict[str, Counter] = {}
self.all_zone_labels: dict[str, set[str]] = {}
self.config_subscriber = CameraConfigUpdateSubscriber(
config,
config.cameras,
[CameraConfigUpdateEnum.zones, CameraConfigUpdateEnum.objects],
)
for camera_config in config.cameras.values():
if not camera_config.enabled_in_config:
@@ -56,7 +65,40 @@ class CameraActivityManager:
else camera_config.objects.track
)
def __rebuild_zone_labels(self) -> None:
"""Rebuild zone label tracking after a runtime zones/objects change."""
new_zone_labels: dict[str, set[str]] = {}
for camera_config in self.config.cameras.values():
if not camera_config.enabled_in_config or camera_config.name is None:
continue
for zone, zone_config in camera_config.zones.items():
new_zone_labels.setdefault(zone, set()).update(
zone_config.objects
if zone_config.objects
else camera_config.objects.track
)
# drop counters for zones that no longer exist
for zone in list(self.zone_all_object_counts.keys()):
if zone not in new_zone_labels:
self.zone_all_object_counts.pop(zone, None)
self.zone_active_object_counts.pop(zone, None)
# ensure counters exist for new zones so the first count is published
for zone in new_zone_labels:
self.zone_all_object_counts.setdefault(zone, Counter())
self.zone_active_object_counts.setdefault(zone, Counter())
self.all_zone_labels = new_zone_labels
def update_activity(self, new_activity: dict[str, dict[str, Any]]) -> None:
updated_topics = self.config_subscriber.check_for_updates()
if "zones" in updated_topics or "objects" in updated_topics:
self.__rebuild_zone_labels()
all_objects: list[dict[str, Any]] = []
for camera in new_activity.keys():
@@ -161,6 +203,9 @@ class CameraActivityManager:
self.publish(f"{camera}/all", sum(list(all_objects.values())))
self.publish(f"{camera}/all/active", sum(list(active_objects.values())))
def stop(self) -> None:
self.config_subscriber.stop()
class AudioActivityManager:
def __init__(
+2
View File
@@ -397,6 +397,8 @@ class Dispatcher:
comm.publish(topic, payload, retain)
def stop(self) -> None:
self.camera_activity.stop()
for comm in self.comms:
comm.stop()
+21 -2
View File
@@ -41,6 +41,18 @@ class MqttClient(Communicator):
self.publish("available", "stopped", retain=True)
self.client.disconnect()
def _notifications_enabled_in_config(self) -> bool:
"""Whether notifications are configured globally or on any camera.
Notifications can be enabled per camera with the global config left
disabled, so the global topics must consider both (matching how
app.py decides to create the WebPushClient).
"""
return self.config.notifications.enabled_in_config or any(
cam.enabled and cam.notifications.enabled_in_config
for cam in self.config.cameras.values()
)
def _set_initial_topics(self) -> None:
"""Set initial state topics."""
for camera_name, camera in self.config.cameras.items():
@@ -157,7 +169,7 @@ class MqttClient(Communicator):
retain=True,
)
if self.config.notifications.enabled_in_config:
if self._notifications_enabled_in_config():
self.publish(
"notifications/state",
"ON" if self.config.notifications.enabled else "OFF",
@@ -256,6 +268,7 @@ class MqttClient(Communicator):
"review_detections",
"object_descriptions",
"review_descriptions",
"notifications",
]
for name in self.config.cameras.keys():
@@ -265,6 +278,12 @@ class MqttClient(Communicator):
self.on_mqtt_command,
)
# notifications suspend doesn't follow the /set topic pattern
self.client.message_callback_add(
f"{self.mqtt_config.topic_prefix}/{name}/notifications/suspend",
self.on_mqtt_command,
)
if self.config.cameras[name].onvif.host:
self.client.message_callback_add(
f"{self.mqtt_config.topic_prefix}/{name}/ptz",
@@ -289,7 +308,7 @@ class MqttClient(Communicator):
self.on_mqtt_command,
)
if self.config.notifications.enabled_in_config:
if self._notifications_enabled_in_config():
self.client.message_callback_add(
f"{self.mqtt_config.topic_prefix}/notifications/set",
self.on_mqtt_command,
@@ -86,13 +86,15 @@ class LicensePlateProcessingMixin:
self.similarity_threshold = 0.8
self.cluster_threshold = 0.85
def _detect(self, image: np.ndarray) -> List[np.ndarray]:
def _detect(self, image: np.ndarray, debug_frame_id: int) -> List[np.ndarray]:
"""
Detect possible areas of text in the input image by first resizing and normalizing it,
running a detection model, and filtering out low-probability regions.
Args:
image (np.ndarray): The input image in which license plates will be detected.
debug_frame_id (int): Shared id used to name debug images so all artifacts
from a single LPR pass share the same filename suffix.
Returns:
List[np.ndarray]: A list of bounding box coordinates representing detected license plates.
@@ -106,9 +108,8 @@ class LicensePlateProcessingMixin:
normalized_image = self._normalize_image(resized_image)
if WRITE_DEBUG_IMAGES:
current_time = int(datetime.datetime.now().timestamp())
cv2.imwrite(
f"debug/frames/license_plate_resized_{current_time}.jpg",
f"debug/frames/license_plate_resized_{debug_frame_id}.jpg",
resized_image,
)
@@ -203,7 +204,7 @@ class LicensePlateProcessingMixin:
return self.ctc_decoder(outputs)
def _process_license_plate(
self, camera: str, id: str, image: np.ndarray
self, camera: str, id: str, image: np.ndarray, debug_frame_id: int
) -> Tuple[List[str], List[List[float]], List[int]]:
"""
Complete pipeline for detecting, classifying, and recognizing license plates in the input image.
@@ -214,6 +215,8 @@ class LicensePlateProcessingMixin:
camera (str): Camera identifier.
id (str): Event identifier.
image (np.ndarray): The input image in which to detect, classify, and recognize license plates.
debug_frame_id (int): Shared id used to name debug images so all artifacts
from a single LPR pass share the same filename suffix.
Returns:
Tuple[List[str], List[List[float]], List[int]]: Detected license plate texts, character-level confidence scores for each plate (flattened into a single list per plate), and areas of the plates.
@@ -227,7 +230,7 @@ class LicensePlateProcessingMixin:
logger.debug("Model runners not loaded")
return [], [], []
boxes = self._detect(image)
boxes = self._detect(image, debug_frame_id)
if len(boxes) == 0:
logger.debug(f"{camera}: No boxes found by OCR detector model")
return [], [], []
@@ -243,7 +246,6 @@ class LicensePlateProcessingMixin:
boxes, plate_width=plate_width, gap_fraction=0.1
)
current_time = int(datetime.datetime.now().timestamp())
if WRITE_DEBUG_IMAGES:
debug_image = image.copy()
for box in boxes:
@@ -259,7 +261,7 @@ class LicensePlateProcessingMixin:
)
cv2.imwrite(
f"debug/frames/license_plate_boxes_{current_time}.jpg", debug_image
f"debug/frames/license_plate_boxes_{debug_frame_id}.jpg", debug_image
)
boxes = self._sort_boxes(list(boxes))
@@ -322,7 +324,7 @@ class LicensePlateProcessingMixin:
if WRITE_DEBUG_IMAGES:
for i, img in enumerate(group_plate_images):
cv2.imwrite(
f"debug/frames/license_plate_cropped_{current_time}_{group_indices[i] + 1}.jpg",
f"debug/frames/license_plate_cropped_{debug_frame_id}_{group_indices[i] + 1}.jpg",
img,
)
@@ -335,7 +337,7 @@ class LicensePlateProcessingMixin:
cv2.imwrite(
os.path.join(
CLIPS_DIR,
f"lpr/{camera}/{id}/{current_time}_{group_indices[i] + 1}.jpg",
f"lpr/{camera}/{id}/{debug_frame_id}_{group_indices[i] + 1}.jpg",
),
img,
)
@@ -1199,6 +1201,7 @@ class LicensePlateProcessingMixin:
self.metrics.yolov9_lpr_pps.value = self.plates_det_second.eps()
camera = obj_data if dedicated_lpr else obj_data["camera"]
current_time = int(datetime.datetime.now().timestamp())
debug_frame_id = int(datetime.datetime.now().timestamp() * 1000)
if not self.config.cameras[camera].lpr.enabled:
return
@@ -1214,7 +1217,7 @@ class LicensePlateProcessingMixin:
if WRITE_DEBUG_IMAGES:
cv2.imwrite(
f"debug/frames/dedicated_lpr_masked_{current_time}.jpg",
f"debug/frames/dedicated_lpr_masked_{debug_frame_id}.jpg",
rgb,
)
@@ -1326,7 +1329,7 @@ class LicensePlateProcessingMixin:
if WRITE_DEBUG_IMAGES:
cv2.imwrite(
f"debug/frames/car_frame_{current_time}.jpg",
f"debug/frames/car_frame_{debug_frame_id}.jpg",
car,
)
@@ -1454,7 +1457,7 @@ class LicensePlateProcessingMixin:
if WRITE_DEBUG_IMAGES:
cv2.imwrite(
f"debug/frames/license_plate_frame_{current_time}.jpg",
f"debug/frames/license_plate_frame_{debug_frame_id}.jpg",
license_plate_frame,
)
@@ -1464,7 +1467,7 @@ class LicensePlateProcessingMixin:
# run detection, returns results sorted by confidence, best first
start = datetime.datetime.now().timestamp()
license_plates, confidences, areas = self._process_license_plate(
camera, id, license_plate_frame
camera, id, license_plate_frame, debug_frame_id
)
self.plates_rec_second.update()
self.plate_rec_speed.update(datetime.datetime.now().timestamp() - start)
+52
View File
@@ -475,3 +475,55 @@ class TestHttpMedia(BaseTestHttp):
assert response.status_code == 200
assert response.json() == []
def test_recordings_unavailable_cameras_all_scopes_to_allowed_cameras(self):
"""cameras=all must not error and must only consider allowed cameras.
allowed_cameras is mocked to ["front_door"]. A back_door recording that
would otherwise fill the gap must be ignored, and the request must not
500 the way it did when cameras was reassigned to a list.
"""
with AuthTestClient(self.app) as client:
# front_door has a 20s gap (1010-1030).
Recordings.insert(
id="front_a",
path="/media/recordings/front_a.mp4",
camera="front_door",
start_time=1000,
end_time=1010,
duration=10,
motion=0,
).execute()
Recordings.insert(
id="front_b",
path="/media/recordings/front_b.mp4",
camera="front_door",
start_time=1030,
end_time=1040,
duration=10,
motion=0,
).execute()
# back_door is not in allowed_cameras; its full-window coverage must
# not mask the front_door gap.
Recordings.insert(
id="back_a",
path="/media/recordings/back_a.mp4",
camera="back_door",
start_time=1000,
end_time=1040,
duration=40,
motion=0,
).execute()
response = client.get(
"/recordings/unavailable",
params={
"after": 1000,
"before": 1040,
"scale": 5,
"cameras": "all",
},
)
assert response.status_code == 200
assert response.json() == [{"start_time": 1010, "end_time": 1030}]
@@ -0,0 +1,100 @@
"""Tests for MQTT command topic callback registration."""
import unittest
from unittest.mock import MagicMock, patch
from frigate.comms.mqtt import MqttClient
def _make_camera_mock(
*,
enabled: bool = True,
notifications_enabled_in_config: bool = False,
) -> MagicMock:
"""Build a camera config mock with the fields _start() reads."""
camera = MagicMock()
camera.enabled = enabled
camera.notifications.enabled_in_config = notifications_enabled_in_config
camera.onvif.host = None
camera.motion.mask = {}
camera.objects.mask = {}
camera.zones = {}
return camera
def _registered_topics(
cameras: dict[str, MagicMock],
*,
global_notifications_enabled_in_config: bool = False,
) -> set[str]:
"""Start an MqttClient against a mocked paho client and collect the
topics registered via message_callback_add."""
config = MagicMock()
config.cameras = cameras
config.notifications.enabled_in_config = global_notifications_enabled_in_config
config.mqtt.topic_prefix = "frigate"
config.mqtt.client_id = "frigate"
config.mqtt.user = None
config.mqtt.tls_ca_certs = None
config.mqtt.tls_insecure = None
with patch("frigate.comms.mqtt.mqtt.Client") as client_cls:
mqtt_client = MqttClient(config)
mqtt_client.subscribe(MagicMock())
paho_client = client_cls.return_value
return {call.args[0] for call in paho_client.message_callback_add.call_args_list}
class TestMqttTopicRegistration(unittest.TestCase):
def test_camera_notification_topics_registered(self):
"""Per-camera notification set/suspend must be registered so paho
routes them to the dispatcher (unregistered topics drop silently)."""
topics = _registered_topics(
{"front_door": _make_camera_mock(notifications_enabled_in_config=True)}
)
self.assertIn("frigate/front_door/notifications/set", topics)
self.assertIn("frigate/front_door/notifications/suspend", topics)
def test_global_set_registered_with_camera_only_notifications(self):
"""The global topic must work when notifications are enabled only at
the camera level, matching the WebPushClient gating in app.py."""
topics = _registered_topics(
{"front_door": _make_camera_mock(notifications_enabled_in_config=True)},
global_notifications_enabled_in_config=False,
)
self.assertIn("frigate/notifications/set", topics)
def test_global_set_registered_with_global_notifications(self):
topics = _registered_topics(
{"front_door": _make_camera_mock()},
global_notifications_enabled_in_config=True,
)
self.assertIn("frigate/notifications/set", topics)
def test_global_set_not_registered_when_notifications_unconfigured(self):
topics = _registered_topics(
{"front_door": _make_camera_mock()},
global_notifications_enabled_in_config=False,
)
self.assertNotIn("frigate/notifications/set", topics)
def test_disabled_camera_does_not_enable_global_set(self):
topics = _registered_topics(
{
"front_door": _make_camera_mock(
enabled=False, notifications_enabled_in_config=True
)
},
global_notifications_enabled_in_config=False,
)
self.assertNotIn("frigate/notifications/set", topics)
if __name__ == "__main__":
unittest.main()
+183
View File
@@ -0,0 +1,183 @@
"""Test in-place yaml config updates."""
import os
import tempfile
import unittest
from ruamel.yaml import YAML
from frigate.util.builtin import update_yaml_file_bulk
class TestUpdateYaml(unittest.TestCase):
def setUp(self) -> None:
self.yaml = YAML()
fd, self.config_path = tempfile.mkstemp(suffix=".yml")
os.close(fd)
def tearDown(self) -> None:
os.unlink(self.config_path)
def _write(self, text: str) -> None:
with open(self.config_path, "w") as f:
f.write(text)
def _read(self) -> str:
with open(self.config_path) as f:
return f.read()
def _load(self):
with open(self.config_path) as f:
return self.yaml.load(f)
def test_delete_key(self):
"""Deleting a key removes it and leaves valid yaml."""
self._write(
"cameras:\n"
" cam1:\n"
" objects:\n"
" filters:\n"
" car:\n"
" mask: 0,0.45,0.245,0.45\n"
)
update_yaml_file_bulk(
self.config_path, {"cameras.cam1.objects.filters.car.mask": ""}
)
data = self._load()
assert "mask" not in data["cameras"]["cam1"]["objects"]["filters"]["car"]
def test_delete_commented_key_emptying_map(self):
"""Deleting the only key of a map whose key carries comments must not
emit unparseable yaml (orphaned comment tokens above a flow-style {})."""
self._write(
"cameras:\n"
" cam1:\n"
" objects:\n"
" filters:\n"
" car:\n"
" # cars parked across the street\n"
" # second comment line\n"
" mask: 0,0.45,0.245,0.45\n"
" motion:\n"
" mask: 0,0.449,0.686,0.395\n"
)
update_yaml_file_bulk(
self.config_path, {"cameras.cam1.objects.filters.car.mask": ""}
)
# must re-parse cleanly
data = self._load()
assert "mask" not in data["cameras"]["cam1"]["objects"]["filters"]["car"]
assert data["cameras"]["cam1"]["motion"]["mask"] == "0,0.449,0.686,0.395"
# the orphaned comments must be gone from the file, not just parseable
content = self._read()
assert "cars parked across the street" not in content
assert "second comment line" not in content
def test_delete_last_named_mask_emptying_map(self):
"""The path the current UI actually sends: a named object mask deleted
down to an empty `mask` map, with a comment inside that map."""
self._write(
"cameras:\n"
" cam1:\n"
" objects:\n"
" filters:\n"
" car:\n"
" mask:\n"
" # ignore the neighbor's driveway\n"
" driveway:\n"
" coordinates: 0,0.1,0.2,0.3\n"
)
update_yaml_file_bulk(
self.config_path,
{"cameras.cam1.objects.filters.car.mask.driveway": ""},
)
data = self._load()
assert data["cameras"]["cam1"]["objects"]["filters"]["car"]["mask"] == {}
assert "ignore the neighbor's driveway" not in self._read()
def test_delete_last_commented_list_item(self):
"""Deleting the last element of a commented sequence must not emit
an orphaned comment above a flow-style [] at column 0."""
self._write(
"cameras:\n"
" cam1:\n"
" motion:\n"
" mask:\n"
" # driveway motion mask\n"
" - 0,0.4,0.6,0.4\n"
)
update_yaml_file_bulk(self.config_path, {"cameras.cam1.motion.mask.0": ""})
data = self._load()
assert data["cameras"]["cam1"]["motion"]["mask"] == []
assert "driveway motion mask" not in self._read()
def test_delete_list_item_preserves_remaining(self):
"""Deleting one element of a sequence keeps the others and stays valid."""
self._write(
"cameras:\n"
" cam1:\n"
" motion:\n"
" mask:\n"
" - 0,0.4,0.6,0.4\n"
" - 0,0.1,0.2,0.3\n"
)
update_yaml_file_bulk(self.config_path, {"cameras.cam1.motion.mask.0": ""})
data = self._load()
assert data["cameras"]["cam1"]["motion"]["mask"] == ["0,0.1,0.2,0.3"]
def test_delete_key_preserves_siblings(self):
"""Deleting one key among several keeps the sibling entries and any
comments on keys preceding the deleted one."""
self._write(
"cameras:\n"
" cam1:\n"
" objects:\n"
" filters:\n"
" car:\n"
" # mask drawn around the parked suv\n"
" mask: 0,0.45,0.245,0.45\n"
" threshold: 0.8\n"
)
update_yaml_file_bulk(
self.config_path, {"cameras.cam1.objects.filters.car.threshold": ""}
)
data = self._load()
car = data["cameras"]["cam1"]["objects"]["filters"]["car"]
assert "threshold" not in car
assert car["mask"] == "0,0.45,0.245,0.45"
assert "# mask drawn around the parked suv" in self._read()
def test_delete_first_commented_key_keeps_map_valid(self):
"""Deleting a commented key from a map that still has other keys
leaves the remaining entries intact and the file parseable."""
self._write(
"cameras:\n"
" cam1:\n"
" objects:\n"
" filters:\n"
" car:\n"
" # comment on the deleted key\n"
" mask: 0,0.45,0.245,0.45\n"
" threshold: 0.8\n"
)
update_yaml_file_bulk(
self.config_path, {"cameras.cam1.objects.filters.car.mask": ""}
)
data = self._load()
car = data["cameras"]["cam1"]["objects"]["filters"]["car"]
assert "mask" not in car
assert car["threshold"] == 0.8
def test_update_value_preserves_comments(self):
"""Updating a value keeps surrounding comments intact."""
self._write(
"cameras:\n cam1:\n detect:\n # tuned for the pi\n fps: 4\n"
)
update_yaml_file_bulk(self.config_path, {"cameras.cam1.detect.fps": 5})
data = self._load()
assert data["cameras"]["cam1"]["detect"]["fps"] == 5
assert "# tuned for the pi" in self._read()
if __name__ == "__main__":
unittest.main(verbosity=2)
+25
View File
@@ -293,26 +293,51 @@ def update_yaml_file_bulk(file_path: str, updates: Dict[str, Any]):
logger.error(f"Unable to write to Frigate config file {file_path}: {e}")
def clear_orphaned_comments(collection, parent, parent_key) -> None:
"""Drop stale ruamel comment tokens after a deletion empties a collection.
When the last entry of a mapping or sequence is removed, any comments that
lived inside that collection's block are orphaned. ruamel then emits them
above a flow-style `{}`/`[]` dedented to column 0, which is unparseable and
corrupts the config. Clearing the emptied collection's own comment metadata
(and the parent's entry pointing at it) keeps the dump valid. Non-empty
collections are left untouched so comments on remaining siblings survive.
"""
if not hasattr(collection, "ca") or len(collection) != 0:
return
collection.ca.items.clear()
collection.ca.comment = None
if parent is not None and hasattr(parent, "ca"):
parent.ca.items.pop(parent_key, None)
def update_yaml(data, key_path, new_value):
temp = data
parent = None
parent_key = None
for key in key_path[:-1]:
if isinstance(key, tuple):
if key[0] not in temp:
temp[key[0]] = [{}] * max(1, key[1] + 1)
elif len(temp[key[0]]) <= key[1]:
temp[key[0]] += [{}] * (key[1] - len(temp[key[0]]) + 1)
parent, parent_key = temp[key[0]], key[1]
temp = temp[key[0]][key[1]]
else:
if key not in temp or temp[key] is None:
temp[key] = {}
parent, parent_key = temp, key
temp = temp[key]
last_key = key_path[-1]
if new_value == "":
if isinstance(last_key, tuple):
del temp[last_key[0]][last_key[1]]
clear_orphaned_comments(temp[last_key[0]], temp, last_key[0])
else:
del temp[last_key]
clear_orphaned_comments(temp, parent, parent_key)
else:
if isinstance(last_key, tuple):
if last_key[0] not in temp:
+13 -1
View File
@@ -149,5 +149,17 @@
"cluck": "قرقرة",
"cock_a_doodle_doo": "كوكو-كو-كوووووو",
"turkey": "ديك رومى",
"gobble": "كركرة"
"gobble": "كركرة",
"tearing": "يمزق",
"ping": "طنّة",
"clang": "صوت رنين",
"squeal": "يصرخ",
"creak": "صرير",
"sizzle": "صوت الأزيز",
"clicking": "النقر",
"clickety_clack": "طقطقة",
"rumble": "الحلبة",
"skateboard": "لوح تزلج",
"echo": "صدى الصوت",
"noise": "ازعاج"
}
+2 -1
View File
@@ -22,5 +22,6 @@
"mouse": "فأر",
"keyboard": "لوحة المفاتيح",
"goat": "معزة",
"sheep": "غنم"
"sheep": "غنم",
"skateboard": "لوح تزلج"
}
+37 -2
View File
@@ -355,8 +355,43 @@
"steam_whistle": "Парна свирка",
"mechanisms": "Механизми",
"clock": "Часовник",
"tick": "",
"tick": "Тик",
"tick-tock": "Тиктакане",
"gears": "Зъбни колела",
"sewing_machine": "Шиеща машина"
"sewing_machine": "Шиеща машина",
"sound_effect": "Звуков ефект",
"tubular_bells": "Тръбни камбани",
"mallet_percussion": "Ударни чукчета",
"marimba": "Маримба",
"glockenspiel": "Металлофон",
"steelpan": "Пан барабан",
"string_section": "Струнна група",
"jingle_bell": "Звънче",
"chime": "Звънече",
"wind_chime": "Вятърен звън",
"singing_bowl": "Пееща купа",
"ambient_music": "Амбиентна музика",
"new-age_music": "Музика от ново поколение",
"vocal_music": "Вокална музика",
"gurgling": "Бълбукане",
"light_engine": "Лек двигател",
"medium_engine": "Среден двигател",
"heavy_engine": "Тежък двигател",
"ratchet": "Тресчотка",
"hammer": "Ръчен чук",
"pulleys": "Макари",
"mechanical_fan": "Механичен вентилатор",
"air_conditioning": "Климатик",
"cash_register": "Каса",
"printer": "Принтер",
"camera": "Камера",
"tools": "Инструменти",
"artillery_fire": "Артилерийски огън",
"boom": "Гръм",
"glass": "Стъкло",
"crack": "Пукнатина",
"wood": "Дърво",
"silence": "Тишина",
"liquid": "Течност",
"splash": "Разливам"
}
+9 -5
View File
@@ -63,13 +63,17 @@
"untilRestart": "До рестарт",
"mo": "{{time}}мес",
"m": "{{time}}м",
"s": "{{time}}с"
"s": "{{time}}с",
"never": "Никога",
"formattedTimestampMonthDayYearHourMinute": {
"12hour": "d MMM yyyy, h:mm aaa"
}
},
"button": {
"apply": "Приложи",
"reset": "Нулиране",
"done": "Готово",
"disabled": "Деактивирано",
"disabled": "Изключено",
"save": "Запази",
"saving": "Запазване…",
"cancel": "Отказ",
@@ -80,7 +84,7 @@
"delete": "Изтриване",
"yes": "Да",
"download": "Изтегляне",
"enabled": "Активирано",
"enabled": "Включено",
"history": "История",
"back": "Назад",
"fullscreen": "Цял екран",
@@ -99,8 +103,8 @@
"export": "Експортиране",
"deleteNow": "Изтрии сега",
"next": "Следващ",
"disable": "Деактивирай",
"enable": "Активирай"
"disable": "Изключи",
"enable": "Включи"
},
"menu": {
"live": {
+6 -1
View File
@@ -30,5 +30,10 @@
"title": "Всички дати",
"short": "Дати"
}
}
},
"more": "Още филтри",
"reset": {
"label": "Рестартирай филтрите по подразбиране"
},
"timeRange": "Времеви диапазон"
}
+4 -2
View File
@@ -34,7 +34,8 @@
},
"submitFrigatePlus": {
"title": "Да се изпрати ли този кадър към Frigate+?",
"submit": "Изпрати"
"submit": "Изпрати",
"previewError": "Не можe да се зареди предварителен преглед на моментната снимка. Записът може да не е наличен в момента."
},
"noPreviewFound": "Не е намерен предварителен преглед",
"noRecordingsFoundForThisTime": "За това време не са намерени записи",
@@ -47,5 +48,6 @@
"error": {
"submitFrigatePlusFailed": "Неуспешно изпратен кадър към Frigate+"
}
}
},
"cameraOff": "Камерата е изключена"
}
+69 -1
View File
@@ -1 +1,69 @@
{}
{
"label": "Конфигурация на камерата",
"timestamp_style": {
"label": "Стил на времева щампа",
"format": {
"label": "Формат на времева щампа"
},
"color": {
"red": {
"label": "Червено",
"description": "Червен компонент (0-255) за времева щампа."
},
"green": {
"description": "Зелен компонент (0-255) за времева щампа.",
"label": "Зелено"
},
"blue": {
"description": "Син компонент (0-255) за времева щампа.",
"label": "Синьо"
},
"label": "Цвят на времева щампа",
"description": "RGB стойности за текста на времева щампа (всички стойности 0-255)."
},
"thickness": {
"description": "Дебелина на текстовата линия за времева щампа.",
"label": "Дебелина на времева щампа"
},
"effect": {
"label": "Ефект на времева щампа",
"description": "Визуален ефект на времева щампа (без, плътен, сянка)."
},
"position": {
"label": "Позиция на времева щампа",
"description": "Позиция за времева щампа на снимката (гл/гд/дл/дд)."
}
},
"audio_transcription": {
"label": "Аудио транскрипция",
"live_enabled": {
"label": "Транскрипция на живо"
}
},
"snapshots": {
"quality": {
"label": "Качество на моментната снимка"
},
"required_zones": {
"label": "Задължителни зони",
"description": "Зони в които обект трябва да влезе за да се запази моментна снимка."
},
"height": {
"label": "Височина на моментната снимка"
},
"retain": {
"default": {
"description": "Дни по подразбиране за задържане на моментните снимки."
}
}
},
"semantic_search": {
"label": "Семантично търсене",
"triggers": {
"label": "Спусък",
"friendly_name": {
"label": "Удобно име"
}
}
}
}
+143
View File
@@ -4,5 +4,148 @@
"session_length": {
"label": "Продължителност на сесията"
}
},
"version": {
"label": "Текуща версия на конфигурацията",
"description": "Версия на активната конфигурация. Помага за проследяване на промени от миграция или форматиране."
},
"safe_mode": {
"label": "Безопасен режим",
"description": "При избор, Frigate ще стартира в безопасен режим за отстраняване на неизправности."
},
"environment_vars": {
"label": "Променливи",
"description": "Параметри за стартиране на Frigate в Home Assistant OS. Non-HAOS потребителите трябва да използват Docker конфигурация."
},
"logger": {
"label": "Логове",
"default": {
"label": "Ниво на логовете"
}
},
"timestamp_style": {
"label": "Стил на времева щампа",
"format": {
"label": "Формат на времева щампа"
},
"color": {
"red": {
"label": "Червено",
"description": "Червен компонент (0-255) за времева щампа."
},
"green": {
"description": "Зелен компонент (0-255) за времева щампа.",
"label": "Зелено"
},
"blue": {
"description": "Син компонент (0-255) за времева щампа.",
"label": "Синьо"
},
"label": "Цвят на времева щампа",
"description": "RGB стойности за текста на времева щампа (всички стойности 0-255)."
},
"thickness": {
"description": "Дебелина на текстовата линия за времева щампа.",
"label": "Дебелина на времева щампа"
},
"effect": {
"label": "Ефект на времева щампа",
"description": "Визуален ефект на времева щампа (без, плътен, сянка)."
},
"position": {
"label": "Позиция на времева щампа",
"description": "Позиция за времева щампа на снимката (гл/гд/дл/дд)."
}
},
"audio_transcription": {
"label": "Аудио транскрипция",
"enabled": {
"label": "Включи аудио транскрипцията"
},
"language": {
"label": "Език на транскрипция"
},
"device": {
"label": "Устройство за транскрипция"
},
"model_size": {
"label": "Големина на модела"
},
"live_enabled": {
"label": "Транскрипция на живо"
}
},
"snapshots": {
"quality": {
"label": "Качество на моментната снимка"
},
"required_zones": {
"label": "Задължителни зони",
"description": "Зони в които обект трябва да влезе за да се запази моментна снимка."
},
"height": {
"label": "Височина на моментната снимка"
},
"retain": {
"default": {
"description": "Дни по подразбиране за задържане на моментните снимки."
}
}
},
"classification": {
"label": "Класификация на обекти",
"bird": {
"label": "Конфигурация за класификация на птици",
"enabled": {
"label": "Класификация на птици",
"description": "Клацификация на птици (Вкл./Изкл.)."
},
"threshold": {
"label": "Минимален резултат"
}
},
"custom": {
"label": "Потребителски класификационни модели",
"enabled": {
"label": "Включи модел",
"description": "Потребителски класификационнен модел (Вкл./Изкл.)."
},
"name": {
"label": "Име на модел"
},
"save_attempts": {
"label": "Опити за запазване"
},
"state_config": {
"motion": {
"label": "Изпълни при движение"
},
"interval": {
"label": "Интервал за класификация"
}
}
}
},
"semantic_search": {
"label": "Семантично търсене",
"enabled": {
"label": "Включи семантично търсене",
"description": "Семантично търсене (Вкл./Изкл.)."
},
"reindex": {
"label": "Реиндексирай при стартиране"
},
"model_size": {
"label": "Големина на модел"
},
"device": {
"label": "Устройство"
},
"triggers": {
"label": "Спусък",
"friendly_name": {
"label": "Удобно име"
}
}
}
}
+2 -1
View File
@@ -24,5 +24,6 @@
"hair_dryer": "Сешоар",
"toothbrush": "Четка за зъби",
"scissors": "Ножица",
"clock": "Часовник"
"clock": "Часовник",
"airplane": "Самолет"
}
@@ -2,5 +2,13 @@
"documentTitle": "Модели за класификация - Frigate",
"description": {
"invalidName": "Невалидно име. Имената могат да съдържат единствено: букви, числа, празни места, долни черти и тирета."
},
"details": {
"scoreInfo": "Резултатът представлява средната степен на увереност в класификацията при всички засечки на този обект."
},
"wizard": {
"step1": {
"classificationAttribute": "Атрибут"
}
}
}
+2 -1
View File
@@ -14,5 +14,6 @@
"detections": "Засичания",
"motion": {
"label": "Движение"
}
},
"camera": "Камера"
}
+60 -1
View File
@@ -5,10 +5,69 @@
"mismatch_one": "{{count}} недостъпен обект беше открит и включен в този елемент за преглед. Тези обекти или не са квалифицирани като предупреждение или откриване, или вече са били изчистени/изтрити.",
"mismatch_other": "{{count}} недостъпни обекта бяха открити и включени в този елемент за преглед. Тези обекти или не са квалифицирани като предупреждение или откриване, или вече са били изчистени/изтрити."
}
},
"editLPR": {
"title": "Редактиране на регистрационния номер"
},
"editAttributes": {
"title": "Редактиране на атрибутите"
},
"topScore": {
"label": "Най-силен резултат"
},
"estimatedSpeed": "Естимирана скорост",
"objects": "Обекти",
"camera": "Камера",
"zones": "Зони",
"timestamp": "Времева щампа",
"button": {
"findSimilar": "Намери подобни",
"regenerate": {
"title": "Регенерирай",
"label": "Регенерирай описанието на следените обекти"
}
},
"description": {
"label": "Описание",
"placeholder": "Описание на следените обекти"
}
},
"trackedObjectsCount_one": "{{count}} проследен обект ",
"trackedObjectsCount_other": "{{count}} проследени обекта ",
"documentTitle": "Разгледай - Фригейт",
"generativeAI": "Генеративен Изкъствен Интелект"
"generativeAI": "Генеративен Изкъствен Интелект",
"itemMenu": {
"downloadSnapshot": {
"aria": "Сваляне на моментна снимка/кадър"
},
"viewTrackingDetails": {
"label": "Виж детайли за следенето",
"aria": "Покажи детайли за следенето"
},
"findSimilar": {
"label": "Намери подобни"
},
"submitToPlus": {
"label": "Изпрати към Frigate+",
"aria": "Изпрати към Frigate Plus"
},
"viewInHistory": {
"label": "Виж в история",
"aria": "Виж в история"
},
"more": {
"aria": "Повече"
}
},
"dialog": {
"confirmDelete": {
"title": "Потвърди изтриване"
}
},
"aiAnalysis": {
"title": "AI Анализ"
},
"concerns": {
"label": "Притеснения"
}
}
+52 -1
View File
@@ -17,7 +17,58 @@
},
"toast": {
"error": {
"renameExportFailed": "Неуспешно преименуване на експорт: {{errorMessage}}"
"renameExportFailed": "Неуспешно преименуване на експорт: {{errorMessage}}",
"assignCaseFailed": "Неуспешно обновяване на възложен случай: {{errorMessage}}",
"caseSaveFailed": "Неуспешно запазен случай: {{errorMessage}}",
"caseDeleteFailed": "Неуспешно изтрит случай: {{errorMessage}}"
}
},
"deleteCase": {
"desc": "Сигурен ли сте, че искате да изтриете {{caseName}}?",
"label": "Изтрии случай"
},
"caseDialog": {
"nameLabel": "Име на случай",
"descriptionLabel": "Описание"
},
"toolbar": {
"editCase": "Редактирай случай",
"deleteCase": "Изтрии случай"
},
"caseCard": {
"emptyCase": "Все още няма експорти"
},
"jobCard": {
"defaultName": "{{camera}} експортиране",
"queued": "На опашката",
"running": "В ход",
"preparing": "Подготвяне",
"copying": "Копиране",
"encoding": "Енкодиране",
"encodingRetry": "Енкодиране (повторно)",
"finalizing": "Финализиране"
},
"caseView": {
"noDescription": "Без описание",
"createdAt": "Създаден {{value}}",
"exportCount_one": "1 експорт",
"exportCount_other": "{{count}} експорти",
"cameraCount_one": "1 камера",
"cameraCount_other": "{{count}} камери",
"showMore": "Покажи повече",
"showLess": "Покажи по-малко"
},
"bulkActions": {
"delete": "Изтрии",
"deleteNow": "Изтрии сега"
},
"bulkDelete": {
"title": "Изтрии експорти",
"desc_one": "Сигурни ли сте , че искате да изтриете {{count}} експорта?"
},
"bulkToast": {
"success": {
"delete": "Успешно изтрити експорти"
}
}
}
@@ -15,5 +15,8 @@
"addFace": "Добавете нова колекция във библиотеката за лица при качването на първата ви снимка.",
"placeholder": "Напишете име за тази колекция",
"invalidName": "Невалидно име. Имената могат да съдържат единствено: букви, числа, празни места, долни черти и тирета."
},
"details": {
"timestamp": "Времева щампа"
}
}
+19 -4
View File
@@ -16,7 +16,8 @@
"move": {
"clickMove": {
"enable": "Включи кликване за преместване",
"disable": "Изключи кликване за преместване"
"disable": "Изключи кликване за преместване",
"label": "Кликнете в центъра на кадъра за да центрирате камерата"
}
}
},
@@ -26,7 +27,8 @@
},
"recording": {
"enable": "Включи запис",
"disable": "Изключи запис"
"disable": "Изключи запис",
"disabledInConfig": "\"Записване\" трябва първо да се вкючи през настройките за тази камера."
},
"snapshots": {
"enable": "Включи моментни снимки",
@@ -38,7 +40,9 @@
},
"camera": {
"enable": "Включи камера",
"disable": "Изключи камера"
"disable": "Изключи камера",
"turnOn": "Включване на камера",
"turnOff": "Изключване на камера"
},
"detect": {
"enable": "Включи разпознаване",
@@ -65,5 +69,16 @@
"cameraEnabled": "Камерата е включена"
},
"documentTitle": "Наживо - Frigate",
"documentTitle.withCamera": "{{camera}} - На живо - Фригейт"
"documentTitle.withCamera": "{{camera}} - На живо - Фригейт",
"noCameras": {
"default": {
"buttonText": "Добави камера"
},
"group": {
"title": "Няма камери в групата",
"description": "Тази група няма добавени или включени камери.",
"buttonText": "Управление на групите"
}
},
"lowBandwidthMode": "Режим ограничена/бавна връзка"
}
+11 -1
View File
@@ -24,6 +24,9 @@
},
"state": {
"submitted": "Enviat"
},
"toast": {
"error": "No s'ha pogut enviar a Frigate+. Si us plau, comproveu la vostra connexió de xarxa i torneu-ho a provar."
}
}
},
@@ -107,7 +110,14 @@
"queueingButton": "S'estan posant a la cua les exportacions...",
"exportButton_one": "Exporta 1 càmera",
"exportButton_many": "Exporta {{count}} càmeres",
"exportButton_other": "Exporta {{count}} càmeres"
"exportButton_other": "Exporta {{count}} càmeres",
"searchOrSelectGroup": "Cerca, o selecciona un grup de càmeres...",
"selectAll": "Selecciona totes les càmeres",
"clearSelection": "Neteja la selecció",
"selectWithActivity": "Càmeres amb objectes rastrejats",
"selectGroup": "Selecciona un grup",
"noMatchingCameras": "No hi ha càmeres que coincideixin amb la cerca",
"selectedCount": "{{selected}} / {{total}} seleccionats"
},
"multi": {
"title_one": "Exporta {{count}} ressenyes",
+4 -4
View File
@@ -29,7 +29,7 @@
},
"listen": {
"label": "Tipus d'escoltes",
"description": "Llista de tipus d'esdeveniment d'àudio a detectar (per exemple: escorça, focarmalarma, crit, parla, crida)."
"description": "Llista de tipus d'esdeveniment d'àudio a detectar (per exemple: escorça, focarmalarma, parla, crida)."
},
"filters": {
"label": "Filtres d'àudio",
@@ -152,11 +152,11 @@
}
},
"ffmpeg": {
"label": "FFmpeg",
"description": "Paràmetres del FFmpeg que inclouen la ruta dels binaris, args, opcions de hwaccel i args de sortida per rol.",
"label": "Fluxos (FFmpeg)",
"description": "Les entrades de flux de càmera i les opcions del FFmpeg, incloent-hi el camí binari, els arguments, l'hwaccel i els arguments de sortida per rol.",
"path": {
"label": "Ruta FFmpeg",
"description": "Ruta al binari FFmpeg a usar o un àlies de versió («5.0» o «7.0»)."
"description": "Ruta al binari FFmpeg a usar o un àlies de versió («7.0» o «8.0»)."
},
"global_args": {
"label": "Arguments globals del FFmpeg",
+2 -2
View File
@@ -7,7 +7,7 @@
"description": "Paràmetres del FFmpeg que inclouen la ruta dels binaris, args, opcions de hwaccel i args de sortida per rol.",
"path": {
"label": "Ruta FFmpeg",
"description": "Ruta al binari FFmpeg a usar o un àlies de versió («5.0» o «7.0»)."
"description": "Ruta al binari FFmpeg a usar o un àlies de versió («7.0» o «8.0»)."
},
"global_args": {
"label": "Arguments globals del FFmpeg",
@@ -2018,7 +2018,7 @@
},
"listen": {
"label": "Tipus d'escoltes",
"description": "Llista de tipus d'esdeveniment d'àudio a detectar (per exemple: escorça, focarmalarma, crit, parla, crida)."
"description": "Llista de tipus d'esdeveniment d'àudio a detectar (per exemple: escorça, focarmalarma, parla, crida)."
},
"filters": {
"label": "Filtres d'àudio",
+19 -2
View File
@@ -68,7 +68,7 @@
"integrationObjectClassification": "Classificació de l'objecte",
"integrationAudioTranscription": "Transcripció d'àudio",
"cameraDetect": "Detecció d'objectes",
"cameraFfmpeg": "FFmpeg",
"cameraFfmpeg": "Fluxos (FFmpeg)",
"cameraRecording": "Enregistrament",
"cameraSnapshots": "Instantànies",
"cameraMotion": "Detecció de moviment",
@@ -1689,7 +1689,17 @@
}
},
"cameraInputs": {
"itemTitle": "Flux {{index}}"
"itemTitle": "Flux {{index}}",
"sourceMode": {
"restream": "Restream (go2rtc)",
"manual": "Camí d'entrada manual",
"go2rtcStreamLabel": "flux go2rtc",
"go2rtcStreamPlaceholder": "Selecciona un flux go2rtc",
"noGo2rtcStreams": "No s'ha configurat cap flux go2rtc",
"go2rtcStreamSearch": "Cerca fluxos...",
"availableStreams": "Fluxos disponibles",
"noMatchingStreams": "No hi ha fluxos coincidents"
}
},
"restartRequiredField": "Reinicia requerit",
"restartRequiredFooter": "S'ha canviat la configuració - es requereix reiniciar",
@@ -2084,6 +2094,13 @@
},
"onvif": {
"autotrackingNoZones": "Autotraquejar requereix al menys una zona. Defineix una zona per aquesta cámera a Mascares/Zones, després usa'l com a requerit a la part inferior."
},
"ffmpeg": {
"hwaccelManualNotRecommended": "No es recomanen arguments manuals d'acceleració de maquinari. Tret que existeixi un requisit específic, seleccioneu el predefinit que coincideixi amb el vostre maquinari."
},
"model": {
"optimizedFor320": "Frigate està optimitzada per a un model 320x320, que és la millor opció per a la majoria de configuracions. Un model 640x640 és més lent i només ajuda en escenaris específics.",
"inputDimensionsNotDetectResolution": "L'amplada i l'alçada del model d'entrada són les dimensions d'entrada del model de detecció d'objectes, no la resolució de detecció de la càmera. Haurien de coincidir amb les dimensions del model que esteu utilitzant - típicament una mida quadrada com 320x320 o 640x640."
}
},
"modelSize": {
+16 -1
View File
@@ -191,7 +191,22 @@
},
"audio": "Àudio:",
"cameraProbeInfo": "Informació del sondeig de la càmera {{camera}}",
"streamDataFromFFPROBE": "Les dades de la transmissió són obtingudes mitjançant <code>ffprobe</code>."
"streamDataFromFFPROBE": "Les dades de la transmissió són obtingudes mitjançant <code>ffprobe</code>.",
"keyframes": {
"title": "Anàlisi de fotogrames clau",
"analyzing": "S'estan analitzant els fotogrames clau... queden {{seconds}} segons",
"stillAnalyzing": "Encara s'estan analitzant els fotogrames clau...",
"recordStream": "Registre de flux:",
"keyframeCount": "Fotogrames clau observats:",
"observedDuration": "Durada observada:",
"gap": "Espai de fotogrames clau (mín / avg / max):",
"segmentLength": "Longitud del segment d'enregistrament:",
"ok": "Fotogrames clau cada ,{{seconds}}s, bons per enregistrar i reproduir.",
"warning": "Els fotogrames clau dispersos o variables (espai més llarg .{{seconds}}s), probablement un còdec intel·ligent (H.264+/H.265+), això no és recomanable.",
"error": "El buit dels fotogrames clau ( the{{seconds}}s) excedeix la longitud del segment d'enregistrament ({{segmentTime}}s). Alguns segments poden no tenir un fotograma clau, el qual trenca la reproducció. Desactiva el còdec intel·ligent/+ a la càmera o escurça el seu interval de fotogrames clau.",
"unknown": "No s'ha pogut determinar l'espaiat dels fotogrames clau.",
"recordDisabled": "L'enregistrament està desactivat per a aquesta càmera."
}
},
"title": "Càmeres",
"overview": "Visió general",
+13 -2
View File
@@ -180,7 +180,7 @@
"rats": "Rotter",
"patter": "Dråbelyd",
"insect": "Insekt",
"cricket": "Cricket",
"cricket": "Fårekylling",
"guitar": "Guitar",
"electric_guitar": "Elektrisk Guitar",
"bass_guitar": "Basguitar",
@@ -195,5 +195,16 @@
"rimshot": "Kantslag",
"drum_roll": "Trommehvirvel",
"bass_drum": "Stortromme",
"techno": "Techno"
"techno": "Techno",
"mosquito": "Myg",
"fly": "Flue",
"buzz": "Summen",
"frog": "Frø",
"croak": "Kvæk",
"snake": "Slange",
"rattle": "Klapren",
"whale_vocalization": "Hvallyde",
"music": "Musik",
"musical_instrument": "Musikinstrument",
"plucked_string_instrument": "Strengeinstrument"
}
+37 -13
View File
@@ -24,7 +24,7 @@
"am": "am",
"year_one": "{{time}} år",
"year_other": "{{time}} år",
"mo": "{{time}}må",
"mo": "{{time}}md.",
"month_one": "{{time}} måned",
"month_other": "{{time}} måneder",
"d": "{{time}}d",
@@ -121,18 +121,18 @@
"back": "Tilbage",
"history": "Historik",
"fullscreen": "Fuldskærm",
"exitFullscreen": "Afslut Fludskærm",
"pictureInPicture": "Billede i Billede",
"twoWayTalk": "2 vejs samtale",
"cameraAudio": "Kamera Lyd",
"on": "ON",
"off": "OFF",
"exitFullscreen": "Afslut Fuldskærm",
"pictureInPicture": "Billede i billede",
"twoWayTalk": "Samtale",
"cameraAudio": "Kameralyd",
"on": "Til",
"off": "Fra",
"edit": "Rediger",
"copyCoordinates": "Kopier koordinater",
"delete": "Slet",
"yes": "Ja",
"no": "Nej",
"download": "Download",
"download": "Hent",
"info": "Info",
"suspended": "Sat på pause",
"unsuspended": "Genoptag",
@@ -141,7 +141,19 @@
"export": "Eksporter",
"deleteNow": "Slet nu",
"next": "Næste",
"continue": "Fortsæt"
"continue": "Fortsæt",
"add": "Tilføj",
"applying": "Anvender…",
"undo": "Annuler",
"copiedToClipboard": "Kopieret til udklipsholder",
"modified": "Ændret",
"overridden": "Overskrevet",
"resetToGlobal": "Gendan til global",
"resetToDefault": "Gendan standard",
"saveAll": "Gem alle",
"savingAll": "Gemmer alle…",
"undoAll": "Fortryd alle",
"retry": "Prøv igen"
},
"menu": {
"system": "System",
@@ -194,7 +206,9 @@
"gl": "Galego (Galisisk)",
"id": "Bahasa Indonesia (Indonesisk)",
"ur": "اردو (Urdu)",
"hr": "Hrvatski (Kroatisk)"
"hr": "Hrvatski (Kroatisk)",
"zhHant": "繁體中文 (Traditionel Kinesisk)",
"bs": "Bosanski (Bosnisk)"
},
"appearance": "Udseende",
"darkMode": {
@@ -243,7 +257,11 @@
"logout": "Log ud",
"setPassword": "Vælg kodeord"
},
"classification": "Kategorisering"
"classification": "Kategorisering",
"profiles": "Profiler",
"actions": "Handlinger",
"features": "Funktioner",
"chat": "Chat"
},
"toast": {
"copyUrlToClipboard": "Kopieret URL til udklipsholder.",
@@ -252,13 +270,14 @@
"error": {
"title": "Ændringer kunne ikke gemmes: {{errorMessage}}",
"noMessage": "Kunne ikke gemme konfigurationsændringer"
}
},
"success": "Gemte ændringerne i konfigurationen."
}
},
"role": {
"title": "Rolle",
"admin": "Admin",
"viewer": "Viewer",
"viewer": "Seer",
"desc": "Admins har fuld adgang til Frigate UI. Viewers er begrænset til at se kameraer, gennemse items, og historik i UI."
},
"pagination": {
@@ -296,5 +315,10 @@
},
"information": {
"pixels": "{{area}}px"
},
"no_items": "Intet fundet",
"validation_errors": "Valideringsfejl",
"credentialField": {
"savedPlaceholder": "Gemt - efterlad blank for at bevare nuværende"
}
}
+7 -3
View File
@@ -31,7 +31,7 @@
"setting": {
"label": "Kamera Streaming Indstillinger",
"title": "{{cameraName}} Streaming Indstillinger",
"desc": "Skift de live streaming muligheder for denne kameragruppes dashboard. <em> Disse indstillinger er enheds- og browserspecifikke.</em>",
"desc": "Skift indstillingerne for direkte visning af denne kameragruppes dashboard. <em> Disse indstillinger er enheds- og browserspecifikke.</em>",
"audioIsAvailable": "Lyd er tilgængelig for denne stream",
"audioIsUnavailable": "Lyd er ikke tilgængelig for denne strøm",
"audio": {
@@ -67,7 +67,10 @@
"desc": "Aktivér kun denne mulighed, hvis kameraets live stream viser farve artefakter og har en diagonal linje på højre side af billedet."
}
}
}
},
"showAll": "Vis alle kameragrupper",
"showLess": "Vis mindre",
"editGroups": "Rediger kameragrupper"
},
"debug": {
"options": {
@@ -81,6 +84,7 @@
"zones": "Zoner",
"mask": "Maske",
"motion": "Bevægelse",
"regions": "Regioner"
"regions": "Regioner",
"paths": "Stier"
}
}
+39 -1
View File
@@ -1,6 +1,6 @@
{
"restart": {
"title": "Er du sikker på at du vil genstarte Frigate?",
"title": "Er du sikker på, at du vil genstarte Frigate?",
"button": "Genstart",
"restarting": {
"title": "Frigate genstarter",
@@ -21,8 +21,46 @@
"ask_a": "Er dette objekt et <code>{{label}}</code>?",
"ask_an": "Er dette objekt en <code>{{label}}</code>?",
"ask_full": "Er dette objekt en <code>{{untranslatedLabel}}</code> ({{translatedLabel}})?"
},
"state": {
"submitted": "Indsendt"
},
"toast": {
"error": "Fejl under indsendelse til Frigate+. Kontroller venligst din netværksforbindelse og prøv igen."
}
}
},
"video": {
"viewInHistory": "Se i historik"
}
},
"export": {
"time": {
"fromTimeline": "Vælg fra tidslinje",
"lastHour_one": "Sidste time",
"lastHour_other": "Sidste {{count}} timer",
"custom": "Tidsinterval",
"start": {
"title": "Starttidspunkt",
"label": "Vælg starttidspunkt"
},
"end": {
"title": "Sluttidspunkt",
"label": "Vælg sluttidspunkt"
}
},
"name": {
"placeholder": "Navngiv eksport"
},
"case": {
"newCaseOption": "Opret ny sag",
"newCaseNamePlaceholder": "Nyt sagsnavn",
"newCaseDescriptionPlaceholder": "Sagsbeskrivelse",
"label": "Sag",
"nonAdminHelp": "En ny sag oprettes til disse eksporter.",
"placeholder": "Vælg en sag"
},
"select": "Vælg",
"export": "Eksporter"
}
}
+2 -1
View File
@@ -14,6 +14,7 @@
"notifications": "Notifikations indstillinger - Frigate"
},
"menu": {
"ui": "Brugergrænseflade"
"ui": "Brugergrænseflade",
"profiles": "Profiler"
}
}
+2 -2
View File
@@ -23,7 +23,7 @@
"toothbrush": "Zahnbürste",
"bicycle": "Fahrrad",
"door": "Tür",
"keyboard": "Klaviatur",
"keyboard": "Klavier",
"bus": "Bus",
"horse": "Pferd",
"cat": "Katze",
@@ -123,7 +123,7 @@
"chicken": "Huhn",
"sitar": "Sitar",
"ukulele": "Ukulele",
"tapping": "Klopfen",
"tapping": "Tippen",
"flapping_wings": "Flügelschlagen",
"strum": "Herumklimpern",
"electronic_organ": "Elektrische Orgel",
+2 -2
View File
@@ -42,7 +42,7 @@
"untilRestart": "Bis zum Neustart",
"justNow": "Gerade",
"pm": "nachmittags",
"mo": "{{time}} Mon",
"mo": "{{time}} Mon.",
"formattedTimestamp": {
"12hour": "d. MMM, hh:mm:ss aaa",
"24hour": "dd. MMM, hh:mm:ss aaa"
@@ -193,7 +193,7 @@
"gl": "Galego (Galicisch)",
"id": "Bahasa Indonesia (Indonesisch)",
"hr": "Hrvatski (Kroatisch)",
"bs": "Bosnisch",
"bs": "Bosanski (Bosnisch)",
"zhHant": "Traditional Chinese"
},
"appearance": "Erscheinung",
+4 -1
View File
@@ -68,7 +68,10 @@
},
"label": "Kamera Gruppen",
"edit": "Kameragruppe bearbeiten",
"success": "Kameragruppe {{name}} wurde gespeichert."
"success": "Kameragruppe {{name}} wurde gespeichert.",
"showAll": "Alle Kameragruppen anzeigen",
"showLess": "Weniger anzeigen",
"editGroups": "Kameragruppen bearbeiten"
},
"debug": {
"options": {
+11 -4
View File
@@ -105,14 +105,21 @@
"cameraSelection": "Kameras",
"cameraSelectionHelp": "Kameras, die in diesem Zeitbereich Objekte verfolgen, sind vorausgewählt",
"checkingActivity": "Kameraaktivität wird überprüft...",
"noCameras": "keine kamaeras verfügbar",
"noCameras": "Keine Kameras verfügbar",
"detectionCount_one": "1 verfolgtes Objekt",
"detectionCount_other": "{{count}} verfolgtesObjekte",
"nameLabel": "Export Name",
"detectionCount_other": "{{count}} verfolgte Objekte",
"nameLabel": "Exportname",
"namePlaceholder": "Optionaler Basisname für diese Exporte",
"queueingButton": "Exporte werden in die Warteschlange gestellt...",
"exportButton_one": "Export 1 Kamera",
"exportButton_other": "xport {{count}} Kameras"
"exportButton_other": "xport {{count}} Kameras",
"searchOrSelectGroup": "Suchen, oder Kameragruppe auswählen...",
"selectAll": "Alle Kameras auswählen",
"clearSelection": "Auswahl löschen",
"selectWithActivity": "Kameras mit verfolgten Objekten",
"selectGroup": "Gruppe auswählen",
"noMatchingCameras": "Der Suche entsprechen keine Kameras",
"selectedCount": "{{selected}} / {{total}} ausgewählt"
},
"multi": {
"title_one": "1 Bewertung exportieren",
+8 -4
View File
@@ -20,7 +20,7 @@
"description": "Mindest-RMS-Lautstärkeschwelle, die für die Audioerkennung erforderlich ist; niedrigere Werte erhöhen die Empfindlichkeit (z. B. 200 hoch, 500 mittel, 1000 niedrig)."
},
"listen": {
"description": "Liste der zu erkennenden Audioereignisse (z.B: bellen, Feueralarm, schreien, sprechen, rufen).",
"description": "Liste der zu erkennenden Audioereignisse (z.B: bellen, Feueralarm, Gespräche, Rufen).",
"label": "Hörtypen"
},
"filters": {
@@ -204,11 +204,11 @@
"description": "Einstellungen zum Aktivieren und Verwalten von Benachrichtigungen für diese Kamera."
},
"ffmpeg": {
"label": "FFmpeg",
"description": "FFmpeg-Einstellungen, einschließlich Binärpfad, Argumente, hwaccel-Optionen und rollenspezifische Ausgabeargumente.",
"label": "Streams (FFmpeg)",
"description": "Kamera-Stream-Eingaben und FFmpeg-Optionen, einschließlich Binärpfad, Argumente, hwaccel und rollenspezifische Ausgabeargumente.",
"path": {
"label": "FFmpeg-Pfad",
"description": "Pfad zur zu verwendenden FFmpeg-Binärdatei oder ein Versionsalias („5.0” oder „7.0”)."
"description": "Pfad zur zu verwendenden FFmpeg-Binärdatei oder ein Versionsalias („7.0” oder „8.0”)."
},
"global_args": {
"label": "Globale Argumente von FFmpeg",
@@ -770,6 +770,10 @@
"dashboard": {
"label": "In der Benutzeroberfläche anzeigen",
"description": "Schalte ein, ob diese Kamera überall in der Benutzeroberfläche von „Frigate“ sichtbar ist. Wenn du diese Option deaktivierst, musst du die Konfiguration manuell bearbeiten, um diese Kamera wieder in der Benutzeroberfläche anzuzeigen."
},
"review": {
"label": "In der Überprüfung anzeigen",
"description": "Legen Sie fest, ob diese Kamera in der Übersicht angezeigt wird (auf der Übersichtsseite sowie im Kamerafilter, in der Bewegungsübersicht und in der Verlaufsansicht)."
}
},
"snapshots": {
+6 -2
View File
@@ -18,7 +18,7 @@
"description": "Mindest-RMS-Lautstärkeschwelle, die für die Audioerkennung erforderlich ist; niedrigere Werte erhöhen die Empfindlichkeit (z. B. 200 hoch, 500 mittel, 1000 niedrig)."
},
"listen": {
"description": "Liste der zu erkennenden Audioereignisse (z.B: bellen, Feueralarm, schreien, sprechen, rufen).",
"description": "Liste der zu erkennenden Audioereignisse (z.B: bellen, Feueralarm, Gespräche, Rufen).",
"label": "Hörtypen"
},
"filters": {
@@ -380,7 +380,7 @@
"description": "FFmpeg-Einstellungen, einschließlich Binärpfad, Argumente, hwaccel-Optionen und rollenspezifische Ausgabeargumente.",
"path": {
"label": "FFmpeg-Pfad",
"description": "Pfad zur zu verwendenden FFmpeg-Binärdatei oder ein Versionsalias („5.0” oder „7.0”)."
"description": "Pfad zur zu verwendenden FFmpeg-Binärdatei oder ein Versionsalias („7.0” oder „8.0”)."
},
"global_args": {
"label": "Globale Argumente von FFmpeg",
@@ -1934,6 +1934,10 @@
"dashboard": {
"label": "In der Benutzeroberfläche anzeigen",
"description": "Schalte ein, ob diese Kamera überall in der Benutzeroberfläche von „Frigate“ sichtbar ist. Wenn du diese Option deaktivierst, musst du die Konfiguration manuell bearbeiten, um diese Kamera wieder in der Benutzeroberfläche anzuzeigen."
},
"review": {
"label": "In der Überprüfung anzeigen",
"description": "Legen Sie fest, ob diese Kamera in der Übersicht angezeigt wird (auf der Übersichtsseite sowie im Kamerafilter, in der Bewegungsübersicht und in der Verlaufsansicht)."
}
}
}
+1 -1
View File
@@ -90,7 +90,7 @@
"laptop": "Laptop",
"mouse": "Maus",
"goat": "Ziege",
"keyboard": "Klaviatur",
"keyboard": "Klavier",
"cell_phone": "Handy",
"remote": "Fernbedienung",
"airplane": "Flugzeug",
@@ -46,7 +46,7 @@
"threshold": "Empfindlichkeitsschwelle",
"thresholdDesc": "Niedrigere Werte erkennen geringere Veränderungen (1–255)",
"minArea": "Mindestwechselbereich",
"minAreaDesc": "Mindestanteil der untersuchten Region, der sich ändern muss, damit die Veränderung als signifikant gilt",
"minAreaDesc": "Mindestgröße eines einzelnen sich bewegenden Bereichs, ausgedrückt als Prozentsatz des untersuchten Bereichs",
"frameSkip": "Bild überspringen",
"frameSkipDesc": "Verarbeite jeden N-ten Frame. Stelle diesen Wert auf die Bildrate deiner Kamera ein, um einen Frame pro Sekunde zu verarbeiten (z. B. 5 für eine Kamera mit 5 FPS, 30 für eine Kamera mit 30 FPS). Höhere Werte sorgen für eine schnellere Verarbeitung, können jedoch kurze Bewegungsabläufe übersehen.",
"maxResults": "Maximale Ergebnisse",
@@ -72,6 +72,9 @@
"framesDecoded": "Rahmen decodiert",
"wallTime": "Suchzeit",
"segmentErrors": "Segmentfehler",
"seconds": "{{seconds}}s"
}
"seconds": "{{seconds}}s",
"minutesSeconds": "{{minutes}}m {{seconds}}s",
"scanSummary": "{{segments}} Segmente · {{time}}"
},
"scanning": "Wird gescannt {{time}}"
}
+30 -5
View File
@@ -70,7 +70,7 @@
"integrationObjectClassification": "Objekt Klassifizierung",
"integrationAudioTranscription": "Audio-Transkription",
"cameraDetect": "Objekterkennung",
"cameraFfmpeg": "FFmpeg",
"cameraFfmpeg": "Streams (FFmpeg)",
"cameraRecording": "Aufnahme",
"cameraSnapshots": "Momentaufnahme",
"cameraMotion": "Bewegungserkennung",
@@ -1376,12 +1376,16 @@
"details": {
"edit": "Kameradaten bearbeiten",
"title": "Kameradaten bearbeiten",
"description": "Aktualisieren Sie den Anzeigenamen und die externe URL, die für diese Kamera in der gesamten Frigate-Benutzeroberfläche verwendet werden.",
"description": "Aktualisieren Sie den Anzeigenamen, die externe URL und die Sichtbarkeit, die für diese Kamera in der gesamten Frigate-Benutzeroberfläche verwendet werden.",
"friendlyNameLabel": "Display Name",
"friendlyNameHelp": "Der in der Benutzeroberfläche von „Frigate“ für diese Kamera angezeigte Spitzname. Lassen Sie das Feld leer, um die Kamera-ID zu verwenden.",
"webuiUrlLabel": "URL der Web-Benutzeroberfläche",
"webuiUrlHelp": "URL, um die Web-Benutzeroberfläche der Kamera direkt aus der Debug-Ansicht aufzurufen. Lassen Sie das Feld leer, um den Link zu deaktivieren.",
"webuiUrlInvalid": "Es muss sich um eine gültige URL handeln (z. B. https://example.com)."
"webuiUrlInvalid": "Es muss sich um eine gültige URL handeln (z. B. https://example.com).",
"dashboardLabel": "Im Live-Dashboard anzeigen",
"dashboardHelp": "Diese Kamera im Live-Dashboard anzeigen.",
"reviewLabel": "In der Überprüfung anzeigen",
"reviewHelp": "Zeige diese Kamera in der Übersicht an, einschließlich des Kamerafilters, der Bewegungsübersicht und der Verlaufsansicht."
},
"label": "Kamerazustand",
"description": "Legen Sie den Betriebszustand für jede Kamera fest.<br /><br /><strong>Ein</strong>: Streams werden normal verarbeitet.<br /><strong>Aus</strong>: Die Verarbeitung wird vorübergehend angehalten. Diese Einstellung bleibt bei einem Neustart von Frigate nicht erhalten.<br /><strong>Deaktiviert</strong>: Die Verarbeitung wird beendet und die Änderung in Ihrer Konfiguration gespeichert. Um eine deaktivierte Kamera wieder zu aktivieren, ist ein Neustart erforderlich.<br /><br /><em>Hinweis: Die Deaktivierung hat keine Auswirkungen auf go2rtc-Restreams.</em><br /><br />Ziehen Sie den Griff, um die Reihenfolge der aktiven Kameras in der Benutzeroberfläche anzupassen, einschließlich des Live-Dashboards und der Dropdown-Menüs zur Kameraauswahl.",
@@ -1764,7 +1768,17 @@
}
},
"cameraInputs": {
"itemTitle": "Stream {{index}}"
"itemTitle": "Stream {{index}}",
"sourceMode": {
"restream": "Restream (go2rtc)",
"manual": "Pfad für die manuelle Eingabe",
"go2rtcStreamLabel": "go2rtc stream",
"go2rtcStreamPlaceholder": "Wählen Sie einen go2rtc-Stream aus",
"noGo2rtcStreams": "Es sind keine go2rtc-Streams konfiguriert",
"go2rtcStreamSearch": "Suche Streams...",
"availableStreams": "Verfügbare Streams",
"noMatchingStreams": "Keine passenden Streams"
}
},
"restartRequiredField": "Neustart erforderlich",
"restartRequiredFooter": "Konfiguration geändert – Neustart erforderlich",
@@ -2082,7 +2096,11 @@
"fpsGreaterThanFive": "Es wird nicht empfohlen, den Wert für die FPS-Erkennung auf mehr als 5 zu setzen. Höhere Werte können zu Leistungseinbußen führen und bieten keinerlei Vorteile.",
"disabled": "Die Objekterkennung ist deaktiviert. Momentaufnahmen, Überprüfungselemente und Erweiterungsfunktionen wie Gesichtserkennung, Kennzeichenerkennung und generative KI funktionieren nicht.",
"resolutionShouldBeMultipleOfFour": "Um optimale Ergebnisse zu erzielen, sollten Breite und Höhe ein Vielfaches von 4 sein. Andere gerade Werte können zu visuellen Artefakten oder leichten Verzerrungen im Erkennungsstrom führen.",
"aspectRatioMismatch": "Die von Ihnen eingegebene Breite und Höhe stimmen nicht mit dem Seitenverhältnis Ihrer aktuell erkannten Auflösung überein. Dies kann zu einem gestreckten oder verzerrten Bild führen."
"aspectRatioMismatch": "Die von Ihnen eingegebene Breite und Höhe stimmen nicht mit dem Seitenverhältnis Ihrer aktuell erkannten Auflösung überein. Dies kann zu einem gestreckten oder verzerrten Bild führen.",
"maxFramesSet": "Die Festlegung einer maximalen Bildrate überschreibt das Standardverhalten und deaktiviert die Verfolgung stationärer Objekte. Dies ist nur in sehr wenigen Fällen erforderlich; verwenden Sie diese Option daher mit Bedacht.",
"squareResolution": "Eine quadratische Erkennungsauflösung ist ungewöhnlich. Die Erkennungsbreite und -höhe sollten dem Seitenverhältnis Ihrer Kamera entsprechen (zum Beispiel 16:9) und nicht den Abmessungen des Objekterkennungsmodells. Ein nicht übereinstimmendes Seitenverhältnis kann das Bild verzerren und die Erkennungsgenauigkeit beeinträchtigen.",
"resolutionHigh": "Diese Erkennungsauflösung liegt über der empfohlenen Wert und kann zu einem erhöhten Ressourcenverbrauch führen, ohne die Erkennungsgenauigkeit zu verbessern. Für die meisten Kameras wird eine Erkennungsauflösung von maximal 1080p empfohlen.",
"globalResolutionMultipleCameras": "Bei der Konfiguration mehrerer Kameras wird eine globale Erkennungsauflösung festgelegt. Sofern nicht alle Kameras dieselbe Auflösung und dasselbe Seitenverhältnis aufweisen, sollten die Erkennungsbreite und -höhe für jede Kamera separat festgelegt werden, um dem nativen Seitenverhältnis der jeweiligen Kamera zu entsprechen."
},
"faceRecognition": {
"globalDisabled": "Die Gesichtserkennungserweiterung muss aktiviert sein, damit die Gesichtserkennungsfunktionen bei dieser Kamera funktionieren.",
@@ -2115,6 +2133,13 @@
},
"onvif": {
"autotrackingNoZones": "Für die automatische Verfolgung ist mindestens eine Zone erforderlich. Definieren Sie unter „Masken / Zonen“ eine Zone für diese Kamera und legen Sie diese anschließend unten als erforderliche Zone fest."
},
"ffmpeg": {
"hwaccelManualNotRecommended": "Explizite Definitionen der Hardware-beschleunigungs Variablen sind nicht empfohlen. Wähle die Voreinstellung die zu deiner Hardware passt, außer wenn spezifische Anforderungen eine andere Konfiguration erfordern."
},
"model": {
"optimizedFor320": "Frigate ist für ein 320x320-Modell optimiert, was für die meisten Konfigurationen die beste Wahl ist. Ein 640x640-Modell ist langsamer und bietet nur in bestimmten Szenarien Vorteile.",
"inputDimensionsNotDetectResolution": "Die Eingangsbreite und -höhe des Modells beziehen sich auf die Abmessungen des Objekterkennungsmodells und nicht auf die Erkennungsauflösung Ihrer Kamera. Sie sollten mit den Abmessungen des von Ihnen verwendeten Modells übereinstimmen – in der Regel quadratische Abmessungen wie 320×320 oder 640×640."
}
},
"birdseye": {
+16 -1
View File
@@ -173,7 +173,22 @@
"tips": {
"title": "Kamera-Untersuchsungsinfo"
},
"aspectRatio": "Seitenverhältnis"
"aspectRatio": "Seitenverhältnis",
"keyframes": {
"title": "Keyframe-Analyse",
"analyzing": "Keyframes werden analysiert... Noch {{seconds}} Sekunden",
"stillAnalyzing": "Keyframes werden noch analysiert...",
"recordStream": "Stream aufzeichnen:",
"keyframeCount": "Beobachtete Keyframes:",
"observedDuration": "Beobachtete Dauer:",
"gap": "Keyframe-Abstand (min. / durchschnittlich / max.):",
"segmentLength": "Länge des Aufzeichnungssegments:",
"ok": "Keyframes alle ~{{seconds}}s, gut geeignet für Aufzeichnung und Wiedergabe.",
"warning": "Seltene oder unregelmäßige Keyframes (längste Lücke ~{{seconds}}s), wahrscheinlich ein „Smart“-Codec (H.264+/H.265+); dies wird nicht empfohlen.",
"error": "Die Lücke zwischen den Keyframes (~{{seconds}}s) überschreitet die Länge des Aufzeichnungssegments ({{segmentTime}}s). Einige Segmente enthalten möglicherweise keinen Keyframe, was zu einer Unterbrechung der Wiedergabe führt. Deaktivieren Sie den Smart/+-Codec an der Kamera oder verkürzen Sie dessen Keyframe-Intervall.",
"unknown": "Der Abstand zwischen den Keyframes konnte nicht ermittelt werden.",
"recordDisabled": "Die Aufzeichnung ist für diese Kamera deaktiviert."
}
},
"overview": "Übersicht",
"label": {
+10 -1
View File
@@ -61,5 +61,14 @@
"yodeling": "Λαρυγγισμός",
"chant": "Ύμνος",
"mantra": "Μάντρα",
"synthetic_singing": "Συνθετικό Τραγούδι"
"synthetic_singing": "Συνθετικό Τραγούδι",
"rapping": "Χτύπημα",
"humming": "Μουρμουρητό",
"groan": "Aναστεναγμός",
"grunt": "Μούγκρισμα",
"gasp": "Ανάσα",
"pant": "Λαχάνιασμα",
"snort": "Ρουθούνισμα",
"cough": "Βήχας",
"throat_clearing": "Ξεροβήξιμο"
}
+7 -3
View File
@@ -109,7 +109,9 @@
"no": "Όχι",
"download": "Κατέβασμα",
"info": "Πληροφορίες",
"history": "Ιστορία"
"history": "Ιστορία",
"on": "Ενεργοποίηση",
"off": "Απενεργοποίηση"
},
"unit": {
"speed": {
@@ -117,7 +119,8 @@
"kph": "χλμ/ώρα"
},
"length": {
"meters": "μέτρα"
"meters": "μέτρα",
"feet": "πόδια"
},
"data": {
"kbps": "kB/s",
@@ -134,7 +137,8 @@
"show": "Εμφάνιση {{item}}",
"ID": "ID",
"none": "Κανένα",
"all": "Όλα"
"all": "Όλα",
"other": "άλλο"
},
"toast": {
"save": {
+8 -1
View File
@@ -119,7 +119,14 @@
"queueingButton": "Poniendo exportaciones en cola...",
"exportButton_one": "Exportar 1 cámara",
"exportButton_many": "Exportar {{count}} cámaras",
"exportButton_other": "Exportar {{count}} cámaras"
"exportButton_other": "Exportar {{count}} cámaras",
"searchOrSelectGroup": "Busca o selecciona un grupo de cámaras…",
"selectAll": "Seleccionar todas las cámaras",
"clearSelection": "Borrar selección",
"selectWithActivity": "Cámaras con objetos rastreados",
"selectGroup": "Seleccionar grupo",
"noMatchingCameras": "Ninguna cámara coincide con tu búsqueda",
"selectedCount": "{{selected}} / {{total}} seleccionadas"
},
"multi": {
"title_one": "Exportar 1 revisión",
+4 -4
View File
@@ -24,7 +24,7 @@
},
"listen": {
"label": "Tipos de escucha",
"description": "Lista de tipos de eventos de audio a detectar (por ejemplo: ladrido, alarma de incendios, grito, voz, alarido)."
"description": "Lista de tipos de eventos de audio a detectar (por ejemplo: ladrar, alarma de incendio, habla, gritar)."
},
"filters": {
"label": "Filtros de audio",
@@ -744,7 +744,7 @@
"label": "Tiempo de reintento de FFmpeg"
},
"path": {
"description": "Ruta al binario de FFmpeg que se va a utilizar o un alias de versión (\"5.0\" o \"7.0\").",
"description": "Ruta al binario de FFmpeg que se va a utilizar o un alias de versión (\"7.0\" o \"8.0\").",
"label": "Ruta de FFmpeg"
},
"output_args": {
@@ -759,8 +759,8 @@
"description": "Argumentos de salida predeterminados para los flujos con rol de grabación."
}
},
"description": "Configuración de FFmpeg, incluyendo la ruta del binario, argumentos, opciones de aceleración por hardware y argumentos de salida por rol.",
"label": "FFmpeg",
"description": "Entradas de flujo de la cámara y opciones de FFmpeg, incluida la ruta del binario, argumentos, aceleración por hardware y argumentos de salida por rol.",
"label": "Flujos (FFmpeg)",
"global_args": {
"label": "Argumentos globales de FFmpeg",
"description": "Argumentos globales pasados a los procesos de FFmpeg."
+2 -2
View File
@@ -39,7 +39,7 @@
},
"listen": {
"label": "Tipos de escucha",
"description": "Lista de tipos de eventos de audio a detectar (por ejemplo: ladrido, alarma de incendios, grito, voz, alarido)."
"description": "Lista de tipos de eventos de audio a detectar (por ejemplo: ladrar, alarma de incendio, habla, gritar)."
},
"filters": {
"label": "Filtros de audio",
@@ -1234,7 +1234,7 @@
"label": "Tiempo de reintento de FFmpeg"
},
"path": {
"description": "Ruta al binario de FFmpeg que se va a utilizar o un alias de versión (\"5.0\" o \"7.0\").",
"description": "Ruta al binario de FFmpeg que se va a utilizar o un alias de versión (\"7.0\" o \"8.0\").",
"label": "Ruta de FFmpeg"
},
"output_args": {
+15 -2
View File
@@ -72,7 +72,7 @@
"integrationObjectClassification": "Clasificación de objetos",
"integrationAudioTranscription": "Transcripción de audio",
"cameraDetect": "Detección de objetos",
"cameraFfmpeg": "FFmpeg",
"cameraFfmpeg": "Flujos (FFmpeg)",
"cameraRecording": "Grabación",
"cameraSnapshots": "Instantáneas",
"cameraMotion": "Detección de movimiento",
@@ -1720,7 +1720,17 @@
}
},
"cameraInputs": {
"itemTitle": "Flujo {{index}}"
"itemTitle": "Flujo {{index}}",
"sourceMode": {
"restream": "Retransmisión (go2rtc)",
"manual": "Ruta de entrada manual",
"go2rtcStreamLabel": "Flujo go2rtc",
"go2rtcStreamPlaceholder": "Selecciona un flujo go2rtc",
"noGo2rtcStreams": "No hay flujos go2rtc configurados",
"go2rtcStreamSearch": "Buscar flujos…",
"availableStreams": "Flujos disponibles",
"noMatchingStreams": "No hay flujos coincidentes"
}
},
"restartRequiredField": "Reinicio necesario",
"restartRequiredFooter": "Configuración modificada - reinicio necesario",
@@ -2020,6 +2030,9 @@
},
"onvif": {
"autotrackingNoZones": "El seguimiento automático requiere al menos una zona. Define una zona para esta cámara en Máscaras / Zonas y, a continuación, establécela como zona obligatoria a continuación."
},
"ffmpeg": {
"hwaccelManualNotRecommended": "No son remontados los argumentos de aceleración por hardware manual. A no ser que un requisito específico exista, seleccione la preselección que coincida con su hardware."
}
},
"resetToDefaultDescription": "Esto restablecerá todos los ajustes de esta sección a sus valores predeterminados. Esta acción no se puede deshacer.",
+40 -25
View File
@@ -81,16 +81,16 @@
"gpuInfo": {
"vainfoOutput": {
"title": "Salida de Vainfo",
"returnCode": "Código de Retorno: {{code}}",
"processOutput": "Salida del Proceso:",
"processError": "Error del Proceso:"
"returnCode": "Código de retorno: {{code}}",
"processOutput": "Salida del proceso:",
"processError": "Error del proceso:"
},
"nvidiaSMIOutput": {
"cudaComputerCapability": "Capacidad de Cómputo CUDA: {{cuda_compute}}",
"cudaComputerCapability": "Capacidad de cómputo CUDA: {{cuda_compute}}",
"title": "Salida de Nvidia SMI",
"driver": "Controlador: {{driver}}",
"name": "Nombre: {{name}}",
"vbios": "Información de VBios: {{vbios}}"
"vbios": "Informe de VBios: {{vbios}}"
},
"toast": {
"success": "Información de GPU copiada al portapapeles"
@@ -104,7 +104,7 @@
},
"gpuMemory": "Memoria de GPU",
"npuMemory": "Memoria de NPU",
"npuUsage": "Uso de NPU",
"npuUsage": "Modo de empleo de NPU",
"intelGpuWarning": {
"title": "Aviso de estadísticas Intel GPU",
"message": "Estadísticas de GPU no disponibles",
@@ -122,7 +122,7 @@
"go2rtc": "go2rtc",
"recording": "grabación",
"review_segment": "revisar segmento",
"embeddings": "embeddings",
"embeddings": "empotrados",
"audio_detector": "detector de audio"
}
}
@@ -165,8 +165,8 @@
"codec": "Codec:",
"fetching": "Obteniendo Datos de la Cámara",
"stream": "Flujo {{idx}}",
"video": "Video:",
"fps": "FPS:",
"video": "Vídeo:",
"fps": "CPS:",
"resolution": "Resolución:",
"error": "Error: {{error}}",
"unknown": "Desconocido",
@@ -174,7 +174,22 @@
"tips": {
"title": "Información de Sondeo de la Cámara"
},
"aspectRatio": "Relación de aspecto"
"aspectRatio": "Relación de aspecto",
"keyframes": {
"title": "Análisis de clave fotograma",
"recordStream": "Flujo de grabación:",
"segmentLength": "Longitud de segmento en grabación:",
"unknown": "No pudo determinar el espaciado del fotograma.",
"analyzing": "Analizando fotogramas clave… {{seconds}} segundos restantes",
"stillAnalyzing": "Todavía analizando fotogramas clave…",
"keyframeCount": "Fotogramas clave observados:",
"observedDuration": "Duración observada:",
"gap": "Brecha de fotogramas clave (mín / med / máx):",
"recordDisabled": "La grabación está desactivada para esta cámara.",
"ok": "Cuadros cada ~{{seconds}}s, bueno para grabación y reproducción.",
"warning": "Fotograma clave escaso o variable (hueco más largo ~{{seconds}}s), probablemente un códec inteligente (H.264+/H.265+), esto no es recomendado.",
"error": "El intervalo entre fotogramas clave (~{{seconds}} s) supera la duración del segmento de grabación ({{segmentTime}} s). Es posible que algunos segmentos no contengan ningún fotograma clave, lo que impedirá su reproducción. Desactiva el códec inteligente (+) de la cámara o reduce el intervalo entre fotogramas clave."
}
},
"framesAndDetections": "Fotogramas / Detecciones",
"label": {
@@ -204,9 +219,9 @@
},
"connectionQuality": {
"excellent": "Excelente",
"poor": "Debil",
"title": "Calidad de la conexión",
"fps": "Cuadros por segundo",
"poor": "Pobre",
"title": "Calidad de Conexión",
"fps": "CPS",
"expectedFps": "Cuadros por segundo esperados",
"reconnectsLastHour": "Reconexiones (última hora)",
"unusable": "No usable",
@@ -222,25 +237,25 @@
"infPerSecond": "Inferencias Por Segundo",
"embeddings": {
"plate_recognition_speed": "Velocidad de Reconocimiento de Matrículas",
"face_embedding_speed": "Velocidad de Incrustación de Rostros",
"image_embedding_speed": "Velocidad de Incrustación de Imágenes",
"text_embedding_speed": "Velocidad de Incrustación de Texto",
"face_embedding_speed": "Velocidad de Empotrado Facial",
"image_embedding_speed": "Velocidad de Empotrado de Imagen",
"text_embedding_speed": "Velocidad de Empotrado de Texto",
"face_recognition_speed": "Velocidad de Reconocimiento Facial",
"text_embedding": "Incrustación de Texto",
"text_embedding": "Empotrado de Texto",
"face_recognition": "Reconocimiento Facial",
"plate_recognition": "Reconocimiento de Matrículas",
"yolov9_plate_detection": "Detección de Matrículas YOLOv9",
"image_embedding": "Incrustación de Imágenes",
"image_embedding": "Empotrado de Imagen",
"yolov9_plate_detection_speed": "Velocidad de Detección de Matrículas YOLOv9",
"review_description": "Revisión de descripción",
"review_description_speed": "Velocidad de revisión de la descripción",
"review_description_events_per_second": "Revisión de la descripción",
"review_description_speed": "Revisión de velocidad de descripción",
"review_description_events_per_second": "Revisión de Descripción",
"object_description": "Descripción de Objeto",
"object_description_speed": "Velocidad de descripción de objeto",
"object_description_events_per_second": "Descripción de objeto",
"object_description_speed": "Velocidad de Descripción de Objeto",
"object_description_events_per_second": "Descripción de Objeto",
"classification": "Clasificación de {{name}}",
"classification_speed": "Velocidad de clasificación de {{name}}",
"classification_events_per_second": "Clasificacion de eventos por segundo de {{name}}"
"classification_speed": "Velocidad de Clasificación de {{name}}",
"classification_events_per_second": "Clasificación de Eventos por Segundo de {{name}}"
},
"title": "Enriquecimientos",
"averageInf": "Tiempo promedio de inferencia"
@@ -249,7 +264,7 @@
"ffmpegHighCpuUsage": "{{camera}} tiene un uso elevado de CPU por FFmpeg ({{ffmpegAvg}}%)",
"detectHighCpuUsage": "{{camera}} tiene un uso elevado de CPU por detección ({{detectAvg}}%)",
"healthy": "El sistema está saludable",
"reindexingEmbeddings": "Reindexando incrustaciones ({{processed}}% completado)",
"reindexingEmbeddings": "Reindexando empotrados ({{processed}}% completado)",
"detectIsSlow": "{{detect}} es lento ({{speed}} ms)",
"cameraIsOffline": "{{camera}} está desconectada",
"detectIsVerySlow": "{{detect}} es muy lento ({{speed}} ms)",
+2 -1
View File
@@ -189,7 +189,8 @@
"id": "Bahasa Indonesia (Indonésien)",
"ur": "اردو (Ourdou)",
"hr": "Hrvatski (Croate)",
"bs": "Bosanski (Bosnien)"
"bs": "Bosanski (Bosnien)",
"zhHant": "繁體中文 (chinois traditionnel)"
},
"appearance": "Apparence",
"darkMode": {
+20 -2
View File
@@ -36,6 +36,9 @@
"ask_an": "Cet objet est-il un(e) <code>{{label}}</code> ?",
"ask_a": "Cet objet est-il un(e) <code>{{label}}</code> ?",
"ask_full": "Cet objet est-il un(e) <code>{{translatedLabel}}</code>  ?"
},
"toast": {
"error": "Impossible d'envoyer à Frigate+. Merci de vérifier votre réseau puis de réessayer."
}
}
},
@@ -68,7 +71,15 @@
},
"success": "Exportation démarrée avec succès. Consultez le fichier sur la page des exportations.",
"view": "Vue",
"queued": "Exportation en attente. Consultez la progression sur la page des exportations."
"queued": "Exportation en attente. Consultez la progression sur la page des exportations.",
"batchSuccess_one": "Un export démarré. Ouverture du dossier en cours.",
"batchSuccess_many": "{{count}} exports démarrés. Ouverture du dossier en cours.",
"batchSuccess_other": "{{count}} exports démarrés. Ouverture du dossier en cours.",
"batchPartial": "{{successful}} exports ont démarré sur un total de : {{total}}. Échecs : {{failedCameras}}",
"batchFailed": "Échec du démarrage de {{total}} exports. Échecs : {{failedCameras}}",
"batchQueuedSuccess_one": "Un export rajouté au traitement. Ouverture du dossier en cours.",
"batchQueuedSuccess_many": "{{count}} exports rajoutés au traitement. Ouverture du dossier en cours.",
"batchQueuedSuccess_other": "{{count}} exports rajoutés au traitement. Ouverture du dossier en cours."
},
"select": "Sélectionner",
"name": {
@@ -107,7 +118,14 @@
"queueingButton": "Mise en file d'attente des exports...",
"exportButton_one": "Exporter {{count}} caméra",
"exportButton_many": "Exporter {{count}} caméras",
"exportButton_other": "Exporter {{count}} caméras"
"exportButton_other": "Exporter {{count}} caméras",
"searchOrSelectGroup": "Chercher ou sélectionner un groupe de caméras...",
"selectAll": "Sélectionner toutes les cameras",
"clearSelection": "Effacer la sélection",
"selectWithActivity": "Caméras avec des objets suivis",
"selectGroup": "Sélectionner un groupe",
"noMatchingCameras": "Aucune caméra ne correspond à votre recherche",
"selectedCount": "{{selected}} / {{total}} sélectionnées"
},
"multi": {
"title_one": "Export {{count}} revue",
+12 -2
View File
@@ -26,7 +26,9 @@
"points_many": "{{count}} points",
"points_other": "{{count}} points",
"undo": "Annuler le dernier point",
"reset": "Réinitialiser le polygone"
"reset": "Réinitialiser le polygone",
"drawMode": "Dessiner",
"moveMode": "Déplacer"
},
"motionHeatmapLabel": "Carte thermique des mouvements",
"dialog": {
@@ -36,6 +38,14 @@
},
"timeRange": {
"title": "Plage de recherche",
"start": "Plage de recherche"
"start": "Début de la plage de recherche",
"end": "Fin de la plage de recherche"
},
"settings": {
"title": "Paramètres de recherche",
"parallelMode": "Mode parallèle",
"parallelModeDesc": "Scanner plusieurs plages d'enregistrement simultanément (plus rapide ; nécessite plus de ressources de décodage)",
"threshold": "Seuil de sensitivité",
"thresholdDesc": "Des valeurs basses détectent de plus petits changements (1-255)"
}
}
+22 -4
View File
@@ -112,7 +112,7 @@
},
"gpuTemperature": "Température du GPU",
"npuTemperature": "Température du NPU",
"gpuCompute": "Calcul / Encodage GPU"
"gpuCompute": "Calcul GPU / Encodage"
},
"otherProcesses": {
"title": "Autres processus",
@@ -122,7 +122,7 @@
"go2rtc": "go2rtc",
"recording": "enregistrement",
"review_segment": "Segment d'activité",
"embeddings": "embeddings",
"embeddings": "intégrations",
"audio_detector": "détecteur audio"
}
}
@@ -173,7 +173,22 @@
"error": "Erreur : {{error}}",
"codec": "Codec :",
"video": "Vidéo :",
"aspectRatio": "rapport d'aspect"
"aspectRatio": "rapport d'aspect",
"keyframes": {
"title": "Analyse par image clef",
"analyzing": "Analyse des images clefs... {{seconds}} secondes restantes",
"stillAnalyzing": "Analyse des images clefs toujours en cours ...",
"recordStream": "Flux d'enregistrement :",
"keyframeCount": "Images clefs observées :",
"observedDuration": "Durée observée :",
"gap": "Écart en images clefs (min / moy / max) :",
"segmentLength": "Durée du segment d'enregistrement :",
"ok": "Images clefs chaque ~{{seconds}}s, convient à l'enregistrement et au visionnement.",
"warning": "Images clefs fragmentées ou variables (plus grand écart d'environ {{seconds}}s), vraisemblablement un codec intelligent (H.264+/H.265+), non-recommendé.",
"error": "L'écart en images clefs (~{{seconds}}) dépasse la longueur du segment d'enregistrement ({{segmentTime}}). Certains segments n'ont peut-être pas de clef, ce qui corrompt la lecture. Désactiver le codec intelligent/+ sur la caméra ou raccourcir son intervalle en images clefs.",
"unknown": "Impossible de déterminer l'espacement en images clefs.",
"recordDisabled": "L'enregistrement est désactivé pour cette caméra."
}
},
"framesAndDetections": "Images / Détections",
"label": {
@@ -196,7 +211,7 @@
"overview": "Vue d'ensemble",
"toast": {
"success": {
"copyToClipboard": "Données de la sonde copiées dans le presse-papiers"
"copyToClipboard": "Données de la sonde copiées dans le presse-papiers."
},
"error": {
"unableToProbeCamera": "Impossible d'interroger la caméra : {{errorMessage}}"
@@ -212,6 +227,9 @@
"expectedFps": "IPS attendues",
"reconnectsLastHour": "Reconnexions (dernière heure)",
"stallsLastHour": "Baisses de qualité (dernière heure)"
},
"noCameras": {
"title": "Aucune caméra trouvée"
}
},
"lastRefreshed": "Dernier rafraichissement : ",
+4 -2
View File
@@ -81,7 +81,8 @@
"thisMonth": "החודש",
"inProgress": "בתהליך",
"invalidStartTime": "זמן התחלה לא תקין",
"invalidEndTime": "זמן סיום לא תקין"
"invalidEndTime": "זמן סיום לא תקין",
"never": "אף פעם"
},
"unit": {
"speed": {
@@ -146,7 +147,8 @@
"download": "הורדה",
"info": "מידע",
"next": "הבא",
"continue": "המשך"
"continue": "המשך",
"add": "להוסיף"
},
"menu": {
"system": "מערכת",
+8 -1
View File
@@ -426,5 +426,12 @@
"chink": "Csörömpölés",
"shatter": "Összetörés",
"field_recording": "Helyszíni felvétel",
"noise": "Zaj"
"noise": "Zaj",
"liquid": "Folyadék",
"splash": "Csobbanás",
"slosh": "Löttyenés",
"trickle": "Csörgedezés",
"gush": "Folyás",
"stir": "Kavarás",
"thump": "Puffanás"
}
+2 -1
View File
@@ -14,5 +14,6 @@
"attachment_chip_remove": "Melléklet eltávolítása",
"open_in_explore": "Megnyitás Böngészőben",
"attachment_picker_paste_label": "Vagy illeszd be az esemény ID-t",
"attachment_picker_attach": "Melléklet"
"attachment_picker_attach": "Melléklet",
"arguments": "Argumentumok:"
}
+5 -1
View File
@@ -189,7 +189,11 @@
"face_recognition": "Arcfelismerés",
"plate_recognition": "Rendszám Felismerés",
"yolov9_plate_detection_speed": "YOLOv9 Rendszám Felismerés Sebesség",
"yolov9_plate_detection": "YOLOv9 Rendszám Észlelés"
"yolov9_plate_detection": "YOLOv9 Rendszám Észlelés",
"classification_events_per_second": "{{name}} Osztályozási események másodpercenként",
"classification_speed": "{{name}} Osztályozási sebesség",
"classification": "{{name}} Osztályozás",
"object_description_events_per_second": "Objektum leírás"
},
"infPerSecond": "Inferencia Per Másodperc",
"title": "Kiegészítések"
+2 -1
View File
@@ -126,7 +126,8 @@
"ur": "اردو (Urdu)",
"withSystem": {
"label": "Gunakan pengaturan sistem untuk bahasa"
}
},
"zhHant": "繁體中文 (Tionghoa Tradisional)"
},
"appearance": "Tampilan",
"darkMode": {
+40 -3
View File
@@ -42,12 +42,49 @@
"stream": "Siaran",
"placeholder": "Pilih stream",
"streamMethod": {
"label": "Metode Streaming"
"label": "Metode Streaming",
"placeholder": "Pilih satu metode streaming",
"method": {
"noStreaming": {
"label": "Tidak Streaming",
"desc": "Gambar kamera hanya diperbarui sekali per menit dan tidak akan ada live streaming."
},
"smartStreaming": {
"label": "Streaming cerdas (disarankan)",
"desc": "Streaming cerdas akan memperbarui gambar kamera sekali per menit saat tidak ada aktivitas yang terdeteksi untuk menghemat bandwidth dan sumber daya. Ketika aktivitas terdeteksi, gambar akan otomatis beralih ke live stream."
},
"continuousStreaming": {
"desc": {
"title": "Kamera akan selalu live stream selama muncul di dashboard, meskipun tidak ada aktivitas yang terdeteksi.",
"warning": "Streaming Terus Menerus dapat menyebabkan penggunaan bandwidth yang tinggi dan masalah performa. Gunakan dengan hati-hati."
},
"label": "Streaming Terus Menerus"
}
}
},
"compatibilityMode": {
"label": "Mode Kompatibilitas",
"desc": "Aktifkan opsi ini hanya jika live stream kamera Anda menampilkan artefak warna dan memiliki garis diagonal di sisi kanan gambar."
}
}
}
},
"showAll": "Tampilkan semua grup kamera",
"showLess": "Lebih sedikit",
"editGroups": "Sunting Grup Kamera"
},
"debug": {
"boundingBox": "Batas Kotak"
"boundingBox": "Batas Kotak",
"options": {
"label": "Pengaturan",
"title": "Opsi",
"showOptions": "Lihat Opsi",
"hideOptions": "Sembunyikan Opsi"
},
"zones": "Zona",
"motion": "Gerakan",
"regions": "Wilayah",
"timestamp": "Timestamp",
"mask": "Masker",
"paths": "Path"
}
}
+63 -2
View File
@@ -52,12 +52,73 @@
"export": "Ekspor",
"selectOrExport": "Pilih atau Ekspor",
"toast": {
"success": "Berhasil memulai ekspor. Lihat file pada halaman ekspor."
}
"success": "Berhasil memulai ekspor. Lihat file pada halaman ekspor.",
"queued": "Ekspor diantrekan. Lihat progres di halaman ekspor.",
"view": "Melihat",
"batchSuccess_other": "{{count}} Ekspor dimulai. Membuka kasusnya sekarang.",
"batchPartial": "Ekspor berhasil dimulai sebanyak {{successful}} dari total {{total}} ekspor. Kamera yang gagal: {{failedCameras}}",
"batchFailed": "Gagal memulai ekspor sebanyak {{total}}. Kamera yang gagal: {{failedCameras}}"
},
"case": {
"newCaseOption": "Membuat Kasus Baru",
"newCaseNamePlaceholder": "Nama Kasus Baru",
"newCaseDescriptionPlaceholder": "Deskripsi Kasus",
"label": "Kasus",
"nonAdminHelp": "Kasus Baru akan Dibuat untuk Ekspor ini.",
"placeholder": "Pilih Kasus"
},
"tabs": {
"export": "Kamera Tunggal",
"multiCamera": "Multi Kamera"
},
"multiCamera": {
"timeRange": "Rentang Waktu",
"selectFromTimeline": "Pilih dari Timeline",
"cameraSelection": "Kamera",
"checkingActivity": "Memeriksa Aktivitas Kamera...",
"noCameras": "Tidak ada Kamera Tersedia",
"detectionCount_other": "{{count}} Objek terlacak",
"nameLabel": "Nama Ekspor",
"exportButton_other": "Ekspor {{count}} kamera",
"cameraSelectionHelp": "Kamera dengan objek yang dilacak dalam rentang waktu ini telah dipilih sebelumnya",
"queueingButton": "Mengantrekan ekspor...",
"clearSelection": "Hapus pilihan",
"selectWithActivity": "Kamera dengan objek yang dilacak",
"selectGroup": "Pilih grup",
"noMatchingCameras": "Tidak ada kamera yang sesuai dengan pencarian Anda",
"selectedCount": "{{terpilih}} / {{total}} terpilih",
"namePlaceholder": "Nama dasar opsional untuk ekspor ini"
},
"multi": {
"title_other": "Ekspor {{count}} Ulasan",
"toast": {
"startedNoCase_other": "{{count}} Ekspor Dimulai.",
"started_other": "{{count}} ekspor dimulai. Membuka kasusnya sekarang.",
"partial": "Memulai {{successful}} dari {{total}} ekspor. Gagal: {{failedItems}}",
"failed": "Gagal memulai {{total}} ekspor. Gagal: {{failedItems}}"
},
"description": "Ekspor setiap ulasan yang dipilih. Semua Ekspor akan dikelompokkan dalam satu kasus.",
"descriptionNoCase": "Ekspor setiap ulasan yang dipilih.",
"exportButton_other": "Ekspor {{count}} ulasan",
"exportingButton": "Mengekspor...",
"caseNamePlaceholder": "Ekspor tinjauan - {{tanggal}}"
},
"queueing": "Mengantrekan Ekspor..."
},
"search": {
"saveSearch": {
"overwrite": "{{searchName}} sudah ada. Menyimpan akan menimpa file yang sudah ada."
}
},
"streaming": {
"restreaming": {
"disabled": "Fitur restreaming tidak diaktifkan untuk kamera ini.",
"desc": {
"title": "Instal go2rtc untuk opsi tampilan langsung dan audio tambahan untuk kamera ini."
}
},
"showStats": {
"label": "Tampilkan statistik streaming"
}
}
}
+257 -50
View File
@@ -132,53 +132,111 @@
}
},
"mqtt": {
"label": "MQTT"
"label": "MQTT",
"description": "Impostazioni di pubblicazione delle immagini via MQTT.",
"enabled": {
"label": "Invia immagine",
"description": "Abilita la pubblicazione delle istantanee dell'immagine per gli oggetti sui topic MQTT per questa telecamera."
},
"timestamp": {
"label": "Aggiungi timestamp",
"description": "Sovraimprime un timestamp sulle immagini pubblicate su MQTT."
},
"bounding_box": {
"label": "Aggiungi riquadro di delimitazione",
"description": "Disegna i riquadri di delimitazione sulle immagini pubblicate tramite MQTT."
},
"crop": {
"label": "Ritaglia immagine",
"description": "Ritaglia le immagini pubblicate su MQTT in base al riquadro di delimitazione dell'oggetto rilevato."
},
"height": {
"label": "Altezza immagine",
"description": "Altezza (in pixel) a cui ridimensionare le immagini pubblicate tramite MQTT."
},
"required_zones": {
"label": "Zone richieste",
"description": "Zone in cui un oggetto deve entrare affinché venga pubblicata un'immagine MQTT."
},
"quality": {
"label": "Qualità JPEG",
"description": "Qualità JPEG per le immagini pubblicate su MQTT (0-100)."
}
},
"onvif": {
"tls_insecure": {
"label": "Disabilita verifica TLS"
"label": "Disabilita verifica TLS",
"description": "Salta la verifica TLS e disabilita l'autenticazione digest per ONVIF (non sicuro; utilizzare solo in reti sicure)."
},
"profile": {
"label": "Profilo ONVIF"
"label": "Profilo ONVIF",
"description": "Profilo multimediale ONVIF specifico da utilizzare per il controllo PTZ, identificato tramite token o nome. Se non impostato, viene selezionato automaticamente il primo profilo con una configurazione PTZ valida."
},
"autotracking": {
"label": "Tracciamento automatico",
"enabled": {
"label": "Abilita il tracciamento automatico"
"label": "Abilita il tracciamento automatico",
"description": "Abilita o disabilita il tracciamento automatico della telecamera PTZ per gli oggetti rilevati."
},
"calibrate_on_startup": {
"label": "Calibra all'avvio"
"label": "Calibra all'avvio",
"description": "Misura la velocità dei motori PTZ all'avvio per migliorare la precisione del tracciamento. Frigate aggiornerà la configurazione con i valori di movement_weights dopo la calibrazione."
},
"zooming": {
"label": "Modalità ingrandimento"
"label": "Modalità ingrandimento",
"description": "Controlla il comportamento dello zoom: disabled (solo pan/tilt), absolute (più compatibile) o relative (pan/tilt/zoom simultanei)."
},
"zoom_factor": {
"label": "Fattore di ingrandimento"
"label": "Fattore di ingrandimento",
"description": "Controlla il livello di zoom sugli oggetti tracciati. Valori più bassi mantengono una porzione maggiore della scena visibile; valori più alti aumentano lo zoom ma potrebbero far perdere il tracciamento. Valori compresi tra 0.1 e 0.75."
},
"track": {
"label": "Oggetti tracciati",
"description": "Elenco dei tipi di oggetto che dovrebbero attivare il tracciamento automatico."
},
"required_zones": {
"label": "Zone richieste"
"label": "Zone richieste",
"description": "Gli oggetti devono entrare in una di queste zone prima che inizi il tracciamento automatico."
},
"timeout": {
"label": "Scadenza di ritorno",
"description": "Attendi questo numero di secondi dopo aver perso il tracciamento prima di riportare la telecamera nella posizione preimpostata."
},
"movement_weights": {
"description": "Valori di calibrazione generati automaticamente dalla calibrazione della telecamera. Non modificare manualmente."
"description": "Valori di calibrazione generati automaticamente dalla calibrazione della telecamera. Non modificare manualmente.",
"label": "Pesi del movimento"
},
"enabled_in_config": {
"label": "Stato originale del tracciamento automatico"
"label": "Stato originale del tracciamento automatico",
"description": "Campo interno per tracciare se il tracciamento automatico era abilitato nella configurazione."
},
"description": "Traccia automaticamente gli oggetti in movimento e li mantiene centrati nell'inquadratura utilizzando i movimenti della telecamera PTZ.",
"return_preset": {
"label": "Preset di ritorno",
"description": "Nome del preset ONVIF configurato nel firmware della telecamera a cui ritornare al termine del tracciamento."
}
},
"ignore_time_mismatch": {
"label": "Ignora la discrepanza oraria"
"label": "Ignora la discrepanza oraria",
"description": "Ignora le differenze di sincronizzazione oraria tra la telecamera e il server Frigate per la comunicazione ONVIF."
},
"label": "ONVIF",
"port": {
"label": "Porta ONVIF"
"label": "Porta ONVIF",
"description": "Numero di porta per il servizio ONVIF."
},
"description": "Impostazioni della connessione ONVIF e del tracciamento automatico PTZ per questa telecamera.",
"host": {
"label": "Host ONVIF",
"description": "Host (e schema opzionale) per il servizio ONVIF di questa telecamera."
},
"user": {
"label": "Nome utente ONVIF",
"description": "Nome utente per l'autenticazione ONVIF; alcuni dispositivi richiedono un utente amministratore per l'ONVIF."
},
"password": {
"label": "Password ONVIF",
"description": "Password per l'autenticazione ONVIF."
}
},
"detect": {
@@ -363,20 +421,20 @@
"description": "Numero massimo di processi di esportazione da elaborare contemporaneamente."
}
},
"description": "Impostazioni di registrazione e conservazione per questa videocamera.",
"description": "Impostazioni di registrazione e conservazione per questa telecamera.",
"enabled": {
"label": "Abilita Registrazione",
"label": "Abilita registrazione",
"description": "Attiva o disattiva la registrazione per questa telecamera."
},
"expire_interval": {
"label": "Intervallo pulizia registrazioni",
"label": "Intervallo di pulizia registrazioni",
"description": "Minuti tra i cicli di pulizia che rimuovono i segmenti di registrazione scaduti."
},
"continuous": {
"label": "Conservazione continua",
"description": "Numero di giorni per cui conservare le registrazioni, indipendentemente dagli oggetti tracciati o dal movimento. Impostare su 0 se si desidera conservare solo le registrazioni relative agli avvisi e ai rilevamenti.",
"days": {
"label": "Giorni di Conservazione",
"label": "Giorni di conservazione",
"description": "Numero di giorni di conservazione delle registrazioni."
}
},
@@ -384,7 +442,7 @@
"label": "Conservazione movimento",
"description": "Numero di giorni per cui conservare le registrazioni attivate dal movimento, indipendentemente dagli oggetti tracciati. Impostare su 0 se si desidera conservare solo le registrazioni relative ad allarmi e rilevamenti.",
"days": {
"label": "Giorni di Conservazione",
"label": "Giorni di conservazione",
"description": "Numero di giorni di conservazione delle registrazioni."
}
},
@@ -392,12 +450,12 @@
"label": "Conservazione rilevamento",
"description": "Impostazioni relative alla conservazione delle registrazioni per gli eventi di rilevamento, comprese le durate prima e dopo l'acquisizione.",
"pre_capture": {
"label": "Secondi di pre-acquisizione",
"description": "Numero di secondi precedenti l'evento di rilevamento da includere nella registrazione."
"label": "Secondi prima della cattura",
"description": "Numero di secondi precedenti all'evento di rilevamento da includere nella registrazione."
},
"post_capture": {
"label": "Secondi di post-acquisizione",
"description": "Numero di secondi successivi l'evento di rilevamento da includere nella registrazione."
"label": "Secondi dopo la cattura",
"description": "Numero di secondi successivi all'evento di rilevamento da includere nella registrazione."
},
"retain": {
"label": "Conservazione eventi",
@@ -414,13 +472,13 @@
},
"alerts": {
"label": "Conservazione avvisi",
"description": "Impostazioni di conservazione delle registrazioni per gli eventi di avviso, incluse le durate di pre e post-acquisizione.",
"description": "Impostazioni di conservazione delle registrazioni per gli eventi di avviso, incluse le durate prima e dopo la cattura.",
"pre_capture": {
"label": "Secondi di pre-acquisizione",
"description": "Numero di secondi antecedenti all'evento di rilevamento da includere nella registrazione."
"label": "Secondi prima della cattura",
"description": "Numero di secondi precedenti all'evento di rilevamento da includere nella registrazione."
},
"post_capture": {
"label": "Secondi di post-acquisizione",
"label": "Secondi dopo la cattura",
"description": "Numero di secondi successivi all'evento di rilevamento da includere nella registrazione."
},
"retain": {
@@ -461,7 +519,40 @@
"description": "Sovraimprime un timestamp sulle istantanee provenienti dalle API."
},
"bounding_box": {
"label": "Sovrimpressione riquadro di delimitazione"
"label": "Sovrimpressione riquadro di delimitazione",
"description": "Disegna i riquadri di delimitazione per gli oggetti tracciati sulle istantanee provenienti dalle API."
},
"crop": {
"label": "Ritaglia istantanea",
"description": "Ritaglia le istantanee provenienti dalle API in base al riquadro di delimitazione dell'oggetto rilevato."
},
"required_zones": {
"label": "Zone richieste",
"description": "Zone in cui un oggetto deve entrare affinché venga salvata un'istantanea."
},
"height": {
"label": "Altezza istantanea",
"description": "Altezza (in pixel) a cui ridimensionare le istantanee provenienti dalle API; lascia vuoto per mantenere la dimensione originale."
},
"retain": {
"label": "Conservazione istantanee",
"description": "Impostazioni di conservazione per le istantanee, inclusi i giorni predefiniti e le eccezioni per singolo oggetto.",
"default": {
"label": "Conservazione predefinita",
"description": "Numero predefinito di giorni per cui conservare le istantanee."
},
"mode": {
"label": "Modalità di conservazione",
"description": "Modalità di conservazione: tutti (salva tutti i segmenti), movimento (salva i segmenti con movimento) o oggetti_attivi (salva i segmenti con oggetti attivi)."
},
"objects": {
"label": "Conservazione oggetti",
"description": "Eccezioni per singolo oggetto relativi ai giorni di conservazione delle istantanee."
}
},
"quality": {
"label": "Qualità istantanee",
"description": "Qualità di codifica per le istantanee salvate (0-100)."
}
},
"motion": {
@@ -492,10 +583,12 @@
"description": "Se impostato su un valore compreso tra 0.0 e 110, e se in un singolo fotogramma cambia una porzione dell'immagine superiore a tale frazione, il rilevatore non restituirà alcun riquadro di movimento e si ricalibrerà immediatamente. Ciò consente di risparmiare risorse della CPU e ridurre i falsi positivi in caso di fulmini, temporali, ecc., ma potrebbe comportare la mancata rilevazione di eventi reali, come ad esempio il tracciamento automatico di un oggetto da parte di una telecamera PTZ. Il compromesso consiste nel scegliere se sacrificare alcuni megabyte di registrazioni o rivedere un paio di brevi video. Lasciare non impostato (Nessuno) per disabilitare questa funzione."
},
"delta_alpha": {
"description": "Fattore di fusione alfa utilizzato nel calcolo della differenza tra fotogrammi per il calcolo del movimento."
"description": "Fattore di fusione alfa utilizzato nel calcolo della differenza tra fotogrammi per il calcolo del movimento.",
"label": "Delta alfa"
},
"frame_alpha": {
"description": "Valore alfa utilizzato durante la fusione dei fotogrammi per la preelaborazione del movimento."
"description": "Valore alfa utilizzato durante la fusione dei fotogrammi per la preelaborazione del movimento.",
"label": "Frame alfa"
},
"frame_height": {
"label": "Altezza del frame",
@@ -510,7 +603,8 @@
"description": "Secondi di attesa dopo l'ultimo movimento prima di pubblicare uno stato 'off' MQTT."
},
"enabled_in_config": {
"description": "Indica se il rilevamento del movimento era abilitato nella configurazione statica originale."
"description": "Indica se il rilevamento del movimento era abilitato nella configurazione statica originale.",
"label": "Stato movimento originale"
},
"raw_mask": {
"label": "Maschera grezza"
@@ -548,11 +642,11 @@
},
"min_score": {
"label": "Confidenza minima",
"description": "Livello minimo di confidenza del rilevamento per singolo fotogramma richiesto affinché l'oggetto venga conteggiato."
"description": "Livello minimo di confidenza nel rilevamento in un singolo fotogramma richiesto affinché l'oggetto venga conteggiato."
},
"mask": {
"label": "Maschera filtro",
"description": "Coordinate del poligono che definisce l'area all'interno dell'inquadratura in cui si applica questo filtro."
"description": "Coordinate del poligono che definiscono la posizione di applicazione di questo filtro all'interno dell'inquadratura."
},
"raw_mask": {
"label": "Maschera grezza"
@@ -560,40 +654,42 @@
},
"mask": {
"label": "Maschera oggetto",
"description": "Poligono di maschera utilizzato per impedire il rilevamento di oggetti in aree specificate."
"description": "Poligono di mascheramento utilizzato per impedire il rilevamento di oggetti in aree specifiche."
},
"genai": {
"label": "Configurazione degli oggetti GenAI",
"description": "Opzioni GenAI per la descrizione degli oggetti tracciati e l'invio dei fotogrammi per la generazione.",
"enabled": {
"label": "Abilita GenAI",
"description": "Abilita di default la generazione tramite GenAI delle descrizioni degli oggetti monitorati."
"description": "Abilita in modo predefinito la generazione di descrizioni da parte di GenAI per gli oggetti tracciati."
},
"use_snapshot": {
"label": "Usa istantanee",
"label": "Utilizza istantanee",
"description": "Utilizza le istantanee degli oggetti anziché le miniature per la generazione di descrizioni con GenAI."
},
"prompt": {
"description": "Modello di prompt predefinito utilizzato per la generazione di descrizioni con GenAI."
"description": "Modello di richiesta predefinito utilizzato per la generazione di descrizioni con GenAI.",
"label": "Richiesta di didascalia"
},
"object_prompts": {
"description": "Prompt specifici per ogni oggetto per personalizzare i risultati di GenAI in base a etichette specifiche."
"description": "Richieste specifiche per ogni oggetto per personalizzare i risultati di GenAI in base a etichette specifiche.",
"label": "Richiesta di oggetto"
},
"objects": {
"label": "Oggetti GenAI",
"description": "Elenco delle etichette degli oggetti da inviare a GenAI per impostazione predefinita."
"description": "Elenco di etichette degli oggetti da inviare a GenAI per impostazione predefinita."
},
"required_zones": {
"label": "Zone obbligatorie",
"description": "Zone che devono essere inserite affinché gli oggetti possano essere utilizzati per la generazione di descrizioni tramite GenAI."
"label": "Zone richieste",
"description": "Zone che devono essere inserite affinché gli oggetti siano idonei alla generazione della descrizione GenAI."
},
"debug_save_thumbnails": {
"label": "Salva miniature",
"description": "Salva le miniature inviate a GenAI per il debug e la revisione."
"description": "Salva le miniature inviate a GenAI per la correzione e la revisione."
},
"send_triggers": {
"label": "Attivatori GenAI",
"description": "Definisce quando i frame devono essere inviati a GenAI (al termine, dopo gli aggiornamenti, ecc.).",
"label": "Attivazioni GenAI",
"description": "Definisce quando i fotogrammi devono essere inviati a GenAI (alla fine, dopo gli aggiornamenti, ecc.).",
"tracked_object_end": {
"label": "Invia alla fine",
"description": "Invia una richiesta a GenAI quando l'oggetto tracciato termina."
@@ -629,25 +725,60 @@
}
},
"timestamp_style": {
"label": "Stile orario"
"label": "Stile orario",
"description": "Opzioni di stile per i timestamp applicati alle istantanee e alla vista di Debug.",
"position": {
"label": "Posizione timestamp",
"description": "Posizione del timestamp sull'immagine (tl/tr/bl/br)."
},
"format": {
"label": "Formato timestamp",
"description": "Stringa di formato data/ora utilizzata per i timestamp (codici di formato datetime di Python)."
},
"color": {
"label": "Colore timestamp",
"description": "Valori di colore RGB per il testo del timestamp (tutti i valori da 0 a 255).",
"red": {
"label": "Rosso",
"description": "Componente rosso (0-255) per il colore del timestamp."
},
"green": {
"label": "Verde",
"description": "Componente verde (0-255) per il colore del timestamp."
},
"blue": {
"label": "Blu",
"description": "Componente blu (0-255) per il colore del timestamp."
}
},
"thickness": {
"label": "Spessore timestamp",
"description": "Spessore della linea del testo del timestamp."
},
"effect": {
"label": "Effetto timestamp",
"description": "Effetto visivo per il testo del timestamp (none, solid, shadow)."
}
},
"notifications": {
"label": "Notifiche",
"enabled": {
"label": "Abilita le notifiche"
"label": "Abilita le notifiche",
"description": "Abilita o disabilita le notifiche per questa telecamera."
},
"email": {
"label": "Email di notifica",
"description": "Indirizzo email utilizzato per le notifiche push o richiesto da alcuni fornitori di servizi di notifica."
},
"cooldown": {
"label": "Periodo di raffreddamento",
"label": "Tempo di attesa tra notifiche",
"description": "Tempo di attesa (in secondi) tra le notifiche per evitare di inviare spam ai destinatari."
},
"enabled_in_config": {
"label": "Stato delle notifiche originali",
"description": "Indica se le notifiche erano abilitate nella configurazione statica originale."
}
},
"description": "Impostazioni per abilitare e controllare le notifiche per questa telecamera."
},
"birdseye": {
"label": "Birdseye",
@@ -671,7 +802,7 @@
"label": "Attivatori",
"friendly_name": {
"label": "Nome descrittivo",
"description": "Nome descrittivo opzionale visualizzato nell'interfaccia utente per questo innesco."
"description": "Nome descrittivo opzionale visualizzato nell'interfaccia utente per questo attivatore."
},
"description": "Azioni e criteri di corrispondenza per gli attivatori della ricerca semantica specifici della telecamera.",
"enabled": {
@@ -720,17 +851,23 @@
"ui": {
"description": "Visualizza l'ordine e la visibilità di questa telecamera nell'interfaccia utente. L'ordine influisce sul cruscotto predefinito. Per un controllo più granulare, utilizza i gruppi di telecamere.",
"order": {
"description": "L'ordine numerico viene utilizzato per ordinare le telecamere nell'interfaccia utente (cruscotto ed elenchi predefiniti); i numeri più grandi compaiono successivamente."
"description": "L'ordine numerico viene utilizzato per ordinare le telecamere nell'interfaccia utente (cruscotto ed elenchi predefiniti); i numeri più grandi compaiono successivamente.",
"label": "Ordine interfaccia utente"
},
"dashboard": {
"label": "Mostra nell'interfaccia utente",
"description": "Abilita o disabilita la visualizzazione di questa telecamera in ogni punto dell'interfaccia utente di Frigate. Disabilitando questa opzione, sarà necessario modificare manualmente la configurazione per visualizzare nuovamente la telecamera nell'interfaccia utente."
},
"label": "Interfaccia utente telecamera"
"label": "Interfaccia utente telecamera",
"review": {
"label": "Mostra in revisione",
"description": "Abilita o disabilita la visibilità di questa telecamera nella sezione di revisione (la pagina di revisione e il relativo filtro telecamera, la revisione del movimento e la vista della cronologia)."
}
},
"zones": {
"enabled": {
"label": "Abilitata"
"label": "Abilitata",
"description": "Abilita o disabilita questa zona. Le zone disabilitate vengono ignorate durante l'esecuzione."
},
"label": "Zone",
"friendly_name": {
@@ -740,11 +877,81 @@
"filters": {
"raw_mask": {
"label": "Maschera grezza"
},
"label": "Filtri Zona",
"description": "Filtri da applicare agli oggetti all'interno di questa zona. Utilizzati per ridurre i falsi positivi o limitare quali oggetti sono considerati presenti nella zona.",
"min_area": {
"label": "Area minima oggetto",
"description": "Area minima del riquadro di delimitazione (in pixel o percentuale) richiesta per questo tipo di oggetto. Può essere in pixel (int) o in percentuale (float compreso tra 0.000001 e 0.99)."
},
"max_area": {
"label": "Area massima oggetto",
"description": "Area massima del riquadro di delimitazione (in pixel o percentuale) richiesta per questo tipo di oggetto. Può essere espressa in pixel (numero intero) o in percentuale (valore decimale compreso tra 0.000001 e 0.99)."
},
"min_ratio": {
"label": "Rapporto di aspetto minimo",
"description": "Rapporto minimo tra larghezza e altezza richiesto affinché il riquadro di delimitazione sia valido."
},
"max_ratio": {
"label": "Rapporto di aspetto massimo",
"description": "Rapporto massimo tra larghezza e altezza richiesto affinché il riquadro di delimitazione sia valido."
},
"threshold": {
"label": "Soglia di confidenza",
"description": "Soglia di confidenza media di rilevamento necessaria affinché l'oggetto sia considerato un vero positivo."
},
"min_score": {
"label": "Confidenza minima",
"description": "Livello minimo di confidenza nel rilevamento in un singolo fotogramma richiesto affinché l'oggetto venga conteggiato."
},
"mask": {
"label": "Maschera filtro",
"description": "Coordinate del poligono che definiscono la posizione di applicazione di questo filtro all'interno dell'inquadratura."
}
},
"description": "Le zone consentono di definire un'area specifica dell'inquadratura per determinare se un oggetto si trova o meno all'interno di una particolare area.",
"enabled_in_config": {
"label": "Mantieni traccia dello stato originale della zona."
},
"coordinates": {
"label": "Coordinate",
"description": "Coordinate del poligono che definiscono l'area della zona. Può essere una stringa separata da virgole o un elenco di stringhe di coordinate. Le coordinate devono essere relative (0-1) o assolute (legacy)."
},
"distances": {
"label": "Distanze reali",
"description": "Distanze reali opzionali per ciascun lato del quadrilatero della zona, utilizzate per i calcoli di velocità o distanza. Deve avere esattamente 4 valori se impostato."
},
"inertia": {
"label": "Fotogrammi di inerzia",
"description": "Numero di fotogrammi consecutivi in cui un oggetto deve essere rilevato nella zona prima di essere considerato presente. Aiuta a filtrare i rilevamenti transitori."
},
"loitering_time": {
"label": "Secondi di stazionamento",
"description": "Numero di secondi per cui un oggetto deve rimanere nella zona per essere considerato in stazionamento nella stessa. Imposta a 0 per disabilitare il rilevamento dello stazionamento."
},
"speed_threshold": {
"label": "Velocità minima",
"description": "Velocità minima (in unità reali se le distanze sono impostate) richiesta affinché un oggetto sia considerato presente nella zona. Utilizzata per gli attivatori di zona basati sulla velocità."
},
"objects": {
"label": "Oggetti attivatori",
"description": "Elenco dei tipi di oggetto (dalla labelmap) che possono attivare questa zona. Può essere una stringa o un elenco di stringhe. Se vuoto, vengono considerati tutti gli oggetti."
}
},
"type": {
"description": "Tipo di telecamera",
"label": "Tipo di telecamera"
},
"best_image_timeout": {
"label": "Timeout immagine migliore",
"description": "Quanto tempo attendere per l'immagine con il punteggio di accuratezza più alto."
},
"webui_url": {
"label": "URL telecamera",
"description": "URL per visitare direttamente la telecamera dalla pagina di sistema"
},
"enabled_in_config": {
"label": "Stato telecamera originale",
"description": "Mantiene traccia dello stato originale della telecamera."
}
}
+334 -50
View File
@@ -99,6 +99,10 @@
"hash_iterations": {
"description": "Numero di iterazioni PBKDF2-SHA256 da utilizzare per criptare le password utente.",
"label": "Iterazioni di crittografia"
},
"admin_first_time_login": {
"label": "Flag primo accesso amministratore",
"description": "Quando impostato su true, l'interfaccia utente può mostrare un link di aiuto nella pagina di login per informare gli utenti su come accedere dopo un ripristino della password di amministratore. "
}
},
"ffmpeg": {
@@ -175,11 +179,17 @@
"label": "Numero di processi di rilevamento",
"description": "Il numero di processi utilizzati per l'inferenza basata sulla CPU."
},
"description": "Rilevatore CPU TFLite che esegue modelli TensorFlow Lite sulla CPU di sistema senza accelerazione hardware. Sconsigliato."
"description": "Rilevatore CPU TFLite che esegue modelli TensorFlow Lite sulla CPU di sistema senza accelerazione hardware. Sconsigliato.",
"label": "CPU"
},
"label": "Dispositivo di rilevamento",
"hailo8l": {
"description": "Rilevatore Hailo-8/Hailo-8L che utilizza modelli HEF e l'SDK HailoRT per l'inferenza sul dispositivo Hailo."
"description": "Rilevatore Hailo-8/Hailo-8L che utilizza modelli HEF e l'SDK HailoRT per l'inferenza sul dispositivo Hailo.",
"label": "Hailo-8/Hailo-8L",
"device": {
"label": "Tipo di dispositivo",
"description": "Il dispositivo da utilizzare per l'inferenza Hailo (ad es. 'PCIe', 'M.2')."
}
},
"openvino": {
"description": "Rilevatore OpenVINO per CPU AMD e Intel, GPU Intel e dispositivo Intel VPU."
@@ -192,6 +202,111 @@
},
"type": {
"label": "Tipo"
},
"description": "Configurazione per i rilevatori di oggetti (backend CPU, GPU, ONNX) e impostazioni del modello specifiche per il rilevatore.",
"model": {
"label": "Configurazione del modello specifica del rilevatore",
"description": "Opzioni di configurazione del modello specifiche del rilevatore (percorso, dimensioni di input, ecc.).",
"path": {
"label": "Percorso del modello di rilevamento oggetti personalizzato",
"description": "Percorso di un file del modello di rilevamento personalizzato (o plus://<model_id> per i modelli Frigate+)."
},
"labelmap_path": {
"label": "Mappa delle etichette (label map) per il rilevatore di oggetti personalizzato",
"description": "Percorso di un file labelmap che mappa le classi numeriche in etichette testuali per il rilevatore."
},
"width": {
"label": "Larghezza di input del modello di rilevamento oggetti",
"description": "Larghezza del tensore di input del modello in pixel."
},
"height": {
"label": "Altezza di input del modello di rilevamento oggetti",
"description": "Altezza del tensore di input del modello in pixel."
},
"labelmap": {
"label": "Personalizzazione labelmap",
"description": "Sostituzioni o voci di rimappatura da unire alla labelmap standard."
},
"attributes_map": {
"label": "Mappa delle etichette oggetto con le relative etichette di attributo",
"description": "Mappatura dalle etichette oggetto alle etichette di attributo utilizzata per allegare metadati (ad esempio 'car' -> ['license_plate'])."
},
"input_tensor": {
"label": "Forma del tensore di input del modello",
"description": "Formato del tensore richiesto dal modello: 'nhwc' o 'nchw'."
},
"input_pixel_format": {
"label": "Formato colore dei pixel di input del modello",
"description": "Spazio colore dei pixel richiesto dal modello: 'rgb', 'bgr' o 'yuv'."
},
"input_dtype": {
"label": "Tipo di dati di input del modello (Dtype)",
"description": "Tipo di dati del tensore di input del modello (ad esempio 'float32')."
},
"model_type": {
"label": "Tipo di modello di rilevamento oggetti",
"description": "Tipo di architettura del modello del rilevatore (ssd, yolox, yolonas) utilizzato da alcuni rilevatori per l'ottimizzazione."
}
},
"model_path": {
"label": "Percorso del modello specifico del rilevatore",
"description": "Percorso del file binario del modello del rilevatore, se richiesto dal rilevatore scelto."
},
"axengine": {
"label": "NPU AXEngine",
"description": "Rilevatore NPU AXERA AX650N/AX8850N che esegue file .axmodel compilati tramite il runtime AXEngine."
},
"deepstack": {
"label": "DeepStack",
"description": "Rilevatore DeepStack/CodeProject.AI che invia immagini a una API HTTP DeepStack remota per l'inferenza. Non consigliato.",
"api_url": {
"label": "URL API DeepStack",
"description": "L'URL delle API DeepStack."
},
"api_timeout": {
"label": "Timeout API DeepStack (in secondi)",
"description": "Tempo massimo consentito per una richiesta alle API DeepStack."
},
"api_key": {
"label": "Chiave API DeepStack (se richiesta)",
"description": "Chiave API opzionale per i servizi DeepStack autenticati."
}
},
"degirum": {
"label": "DeGirum",
"description": "Rilevatore DeGirum per l'esecuzione di modelli tramite il cloud DeGirum o servizi di inferenza locali.",
"zoo": {
"label": "Model Zoo",
"description": "Percorso o URL del model zoo di DeGirum."
},
"token": {
"label": "Token Cloud DeGirum",
"description": "Token per l'accesso al Cloud DeGirum."
}
},
"edgetpu": {
"label": "EdgeTPU",
"description": "Rilevatore EdgeTPU che esegue modelli TensorFlow Lite compilati per Coral EdgeTPU utilizzando il delegate EdgeTPU.",
"device": {
"label": "Tipo di dispositivo",
"description": "Il dispositivo da utilizzare per l'inferenza EdgeTPU (ad es. 'usb', 'pci')."
}
},
"memryx": {
"label": "MemryX",
"description": "Rilevatore MemryX MX3 che esegue modelli DFP compilati su acceleratori MemryX.",
"device": {
"label": "Percorso del dispositivo",
"description": "Il dispositivo da utilizzare per l'inferenza MemryX (ad es. 'PCIe')."
}
},
"onnx": {
"label": "ONNX",
"description": "Rilevatore ONNX per l'esecuzione di modelli ONNX; utilizzerà i backend di accelerazione disponibili (CUDA/ROCm/OpenVINO) quando presenti.",
"device": {
"label": "Tipo di dispositivo",
"description": "Il dispositivo da utilizzare per l'inferenza ONNX (ad es. 'AUTO', 'CPU', 'GPU')."
}
}
},
"audio_transcription": {
@@ -266,49 +381,78 @@
},
"onvif": {
"tls_insecure": {
"label": "Disabilita verifica TLS"
"label": "Disabilita verifica TLS",
"description": "Salta la verifica TLS e disabilita l'autenticazione digest per ONVIF (non sicuro; utilizzare solo in reti sicure)."
},
"profile": {
"label": "Profilo ONVIF"
"label": "Profilo ONVIF",
"description": "Profilo multimediale ONVIF specifico da utilizzare per il controllo PTZ, identificato tramite token o nome. Se non impostato, viene selezionato automaticamente il primo profilo con una configurazione PTZ valida."
},
"autotracking": {
"label": "Tracciamento automatico",
"enabled": {
"label": "Abilita il tracciamento automatico"
"label": "Abilita il tracciamento automatico",
"description": "Abilita o disabilita il tracciamento automatico della telecamera PTZ per gli oggetti rilevati."
},
"calibrate_on_startup": {
"label": "Calibra all'avvio"
"label": "Calibra all'avvio",
"description": "Misura la velocità dei motori PTZ all'avvio per migliorare la precisione del tracciamento. Frigate aggiornerà la configurazione con i valori di movement_weights dopo la calibrazione."
},
"zooming": {
"label": "Modalità ingrandimento"
"label": "Modalità ingrandimento",
"description": "Controlla il comportamento dello zoom: disabled (solo pan/tilt), absolute (più compatibile) o relative (pan/tilt/zoom simultanei)."
},
"zoom_factor": {
"label": "Fattore di ingrandimento"
"label": "Fattore di ingrandimento",
"description": "Controlla il livello di zoom sugli oggetti tracciati. Valori più bassi mantengono una porzione maggiore della scena visibile; valori più alti aumentano lo zoom ma potrebbero far perdere il tracciamento. Valori compresi tra 0.1 e 0.75."
},
"track": {
"label": "Oggetti tracciati",
"description": "Elenco dei tipi di oggetto che dovrebbero attivare il tracciamento automatico."
},
"required_zones": {
"label": "Zone richieste"
"label": "Zone richieste",
"description": "Gli oggetti devono entrare in una di queste zone prima che inizi il tracciamento automatico."
},
"timeout": {
"label": "Scadenza di ritorno",
"description": "Attendi questo numero di secondi dopo aver perso il tracciamento prima di riportare la telecamera nella posizione preimpostata."
},
"movement_weights": {
"description": "Valori di calibrazione generati automaticamente dalla calibrazione della telecamera. Non modificare manualmente."
"description": "Valori di calibrazione generati automaticamente dalla calibrazione della telecamera. Non modificare manualmente.",
"label": "Pesi del movimento"
},
"enabled_in_config": {
"label": "Stato originale del tracciamento automatico"
"label": "Stato originale del tracciamento automatico",
"description": "Campo interno per tracciare se il tracciamento automatico era abilitato nella configurazione."
},
"description": "Traccia automaticamente gli oggetti in movimento e li mantiene centrati nell'inquadratura utilizzando i movimenti della telecamera PTZ.",
"return_preset": {
"label": "Preset di ritorno",
"description": "Nome del preset ONVIF configurato nel firmware della telecamera a cui ritornare al termine del tracciamento."
}
},
"ignore_time_mismatch": {
"label": "Ignora la discrepanza oraria"
"label": "Ignora la discrepanza oraria",
"description": "Ignora le differenze di sincronizzazione oraria tra la telecamera e il server Frigate per la comunicazione ONVIF."
},
"label": "ONVIF",
"port": {
"label": "Porta ONVIF"
"label": "Porta ONVIF",
"description": "Numero di porta per il servizio ONVIF."
},
"description": "Impostazioni della connessione ONVIF e del tracciamento automatico PTZ per questa telecamera.",
"host": {
"label": "Host ONVIF",
"description": "Host (e schema opzionale) per il servizio ONVIF di questa telecamera."
},
"user": {
"label": "Nome utente ONVIF",
"description": "Nome utente per l'autenticazione ONVIF; alcuni dispositivi richiedono un utente amministratore per l'ONVIF."
},
"password": {
"label": "Password ONVIF",
"description": "Password per l'autenticazione ONVIF."
}
},
"detect": {
@@ -413,7 +557,11 @@
},
"default_role": {
"label": "Ruolo predefinito",
"description": "Ruolo predefinito assegnato agli utenti autenticati tramite proxy quando non si applica alcuna mappatura dei ruoli (amministratore o visualizzatore)."
"description": "Ruolo predefinito assegnato agli utenti autenticati tramite proxy quando non si applica nessuna mappatura dei ruoli."
},
"separator": {
"label": "Carattere separatore",
"description": "Carattere utilizzato per separare valori multipli forniti negli header del proxy."
}
},
"review": {
@@ -507,7 +655,19 @@
},
"ui": {
"label": "Interfaccia utente",
"description": "Preferenze dell'interfaccia utente come fuso orario, formato di data/ora e unità di misura."
"description": "Preferenze dell'interfaccia utente come fuso orario, formato di data/ora e unità di misura.",
"timezone": {
"label": "Fuso orario",
"description": "Fuso orario opzionale da visualizzare nell'interfaccia utente (se non impostato, viene usata l'ora locale del browser)."
},
"time_format": {
"label": "Formato Ora",
"description": "Formato dell'ora da utilizzare nell'interfaccia utente (browser, 12 ore o 24 ore)."
},
"unit_system": {
"label": "Sistema di unità di misura",
"description": "Sistema di unità di misura per la visualizzazione (metrico o imperiale) utilizzato nell'interfaccia utente e nei messaggi MQTT."
}
},
"profiles": {
"label": "Profili",
@@ -532,17 +692,18 @@
}
},
"enabled": {
"label": "Abilita Registrazione"
"label": "Abilita registrazione",
"description": "Attiva o disattiva la registrazione per tutte le telecamere; l'impostazione può essere modificata per ogni singola telecamera."
},
"expire_interval": {
"label": "Intervallo pulizia registrazioni",
"label": "Intervallo di pulizia registrazioni",
"description": "Minuti tra i cicli di pulizia che rimuovono i segmenti di registrazione scaduti."
},
"continuous": {
"label": "Conservazione continua",
"description": "Numero di giorni per cui conservare le registrazioni, indipendentemente dagli oggetti tracciati o dal movimento. Impostare su 0 se si desidera conservare solo le registrazioni relative agli avvisi e ai rilevamenti.",
"days": {
"label": "Giorni di Conservazione",
"label": "Giorni di conservazione",
"description": "Numero di giorni di conservazione delle registrazioni."
}
},
@@ -550,7 +711,7 @@
"label": "Conservazione movimento",
"description": "Numero di giorni per cui conservare le registrazioni attivate dal movimento, indipendentemente dagli oggetti tracciati. Impostare su 0 se si desidera conservare solo le registrazioni relative ad allarmi e rilevamenti.",
"days": {
"label": "Giorni di Conservazione",
"label": "Giorni di conservazione",
"description": "Numero di giorni di conservazione delle registrazioni."
}
},
@@ -558,12 +719,12 @@
"label": "Conservazione rilevamento",
"description": "Impostazioni relative alla conservazione delle registrazioni per gli eventi di rilevamento, comprese le durate prima e dopo l'acquisizione.",
"pre_capture": {
"label": "Secondi di pre-acquisizione",
"description": "Numero di secondi precedenti l'evento di rilevamento da includere nella registrazione."
"label": "Secondi prima della cattura",
"description": "Numero di secondi precedenti all'evento di rilevamento da includere nella registrazione."
},
"post_capture": {
"label": "Secondi di post-acquisizione",
"description": "Numero di secondi successivi l'evento di rilevamento da includere nella registrazione."
"label": "Secondi dopo la cattura",
"description": "Numero di secondi successivi all'evento di rilevamento da includere nella registrazione."
},
"retain": {
"label": "Conservazione eventi",
@@ -580,13 +741,13 @@
},
"alerts": {
"label": "Conservazione avvisi",
"description": "Impostazioni di conservazione delle registrazioni per gli eventi di avviso, incluse le durate di pre e post-acquisizione.",
"description": "Impostazioni di conservazione delle registrazioni per gli eventi di avviso, incluse le durate prima e dopo la cattura.",
"pre_capture": {
"label": "Secondi di pre-acquisizione",
"description": "Numero di secondi antecedenti all'evento di rilevamento da includere nella registrazione."
"label": "Secondi prima della cattura",
"description": "Numero di secondi precedenti all'evento di rilevamento da includere nella registrazione."
},
"post_capture": {
"label": "Secondi di post-acquisizione",
"label": "Secondi dopo la cattura",
"description": "Numero di secondi successivi all'evento di rilevamento da includere nella registrazione."
},
"retain": {
@@ -613,7 +774,8 @@
"enabled_in_config": {
"label": "Stato registrazione originale",
"description": "Indica se la registrazione era abilitata nella configurazione statica originale."
}
},
"description": "Impostazioni di registrazione e conservazione vengono applicate alle telecamere a meno che non vengano modificate singolarmente per ciascuna telecamera."
},
"snapshots": {
"label": "Istantanee",
@@ -625,7 +787,40 @@
"description": "Sovraimprime un timestamp sulle istantanee provenienti dalle API."
},
"bounding_box": {
"label": "Sovrimpressione riquadro di delimitazione"
"label": "Sovrimpressione riquadro di delimitazione",
"description": "Disegna i riquadri di delimitazione per gli oggetti tracciati sulle istantanee provenienti dalle API."
},
"crop": {
"label": "Ritaglia istantanea",
"description": "Ritaglia le istantanee provenienti dalle API in base al riquadro di delimitazione dell'oggetto rilevato."
},
"required_zones": {
"label": "Zone richieste",
"description": "Zone in cui un oggetto deve entrare affinché venga salvata un'istantanea."
},
"height": {
"label": "Altezza istantanea",
"description": "Altezza (in pixel) a cui ridimensionare le istantanee provenienti dalle API; lascia vuoto per mantenere la dimensione originale."
},
"retain": {
"label": "Conservazione istantanee",
"description": "Impostazioni di conservazione per le istantanee, inclusi i giorni predefiniti e le eccezioni per singolo oggetto.",
"default": {
"label": "Conservazione predefinita",
"description": "Numero predefinito di giorni per cui conservare le istantanee."
},
"mode": {
"label": "Modalità di conservazione",
"description": "Modalità di conservazione: tutti (salva tutti i segmenti), movimento (salva i segmenti con movimento) o oggetti_attivi (salva i segmenti con oggetti attivi)."
},
"objects": {
"label": "Conservazione oggetti",
"description": "Eccezioni per singolo oggetto relativi ai giorni di conservazione delle istantanee."
}
},
"quality": {
"label": "Qualità istantanee",
"description": "Qualità di codifica per le istantanee salvate (0-100)."
}
},
"motion": {
@@ -654,10 +849,12 @@
"description": "Se impostato su un valore compreso tra 0.0 e 110, e se in un singolo fotogramma cambia una porzione dell'immagine superiore a tale frazione, il rilevatore non restituirà alcun riquadro di movimento e si ricalibrerà immediatamente. Ciò consente di risparmiare risorse della CPU e ridurre i falsi positivi in caso di fulmini, temporali, ecc., ma potrebbe comportare la mancata rilevazione di eventi reali, come ad esempio il tracciamento automatico di un oggetto da parte di una telecamera PTZ. Il compromesso consiste nel scegliere se sacrificare alcuni megabyte di registrazioni o rivedere un paio di brevi video. Lasciare non impostato (Nessuno) per disabilitare questa funzione."
},
"delta_alpha": {
"description": "Fattore di fusione alfa utilizzato nel calcolo della differenza tra fotogrammi per il calcolo del movimento."
"description": "Fattore di fusione alfa utilizzato nel calcolo della differenza tra fotogrammi per il calcolo del movimento.",
"label": "Delta alfa"
},
"frame_alpha": {
"description": "Valore alfa utilizzato durante la fusione dei fotogrammi per la preelaborazione del movimento."
"description": "Valore alfa utilizzato durante la fusione dei fotogrammi per la preelaborazione del movimento.",
"label": "Frame alfa"
},
"frame_height": {
"label": "Altezza del frame",
@@ -672,7 +869,8 @@
"description": "Secondi di attesa dopo l'ultimo movimento prima di pubblicare uno stato 'off' MQTT."
},
"enabled_in_config": {
"description": "Indica se il rilevamento del movimento era abilitato nella configurazione statica originale."
"description": "Indica se il rilevamento del movimento era abilitato nella configurazione statica originale.",
"label": "Stato movimento originale"
},
"raw_mask": {
"label": "Maschera grezza"
@@ -710,11 +908,11 @@
},
"min_score": {
"label": "Confidenza minima",
"description": "Livello minimo di confidenza del rilevamento per singolo fotogramma richiesto affinché l'oggetto venga conteggiato."
"description": "Livello minimo di confidenza nel rilevamento in un singolo fotogramma richiesto affinché l'oggetto venga conteggiato."
},
"mask": {
"label": "Maschera filtro",
"description": "Coordinate del poligono che definisce l'area all'interno dell'inquadratura in cui si applica questo filtro."
"description": "Coordinate del poligono che definiscono la posizione di applicazione di questo filtro all'interno dell'inquadratura."
},
"raw_mask": {
"label": "Maschera grezza"
@@ -722,40 +920,42 @@
},
"mask": {
"label": "Maschera oggetto",
"description": "Poligono di maschera utilizzato per impedire il rilevamento di oggetti in aree specificate."
"description": "Poligono di mascheramento utilizzato per impedire il rilevamento di oggetti in aree specifiche."
},
"genai": {
"label": "Configurazione degli oggetti GenAI",
"description": "Opzioni GenAI per la descrizione degli oggetti tracciati e l'invio dei fotogrammi per la generazione.",
"enabled": {
"label": "Abilita GenAI",
"description": "Abilita di default la generazione tramite GenAI delle descrizioni degli oggetti monitorati."
"description": "Abilita in modo predefinito la generazione di descrizioni da parte di GenAI per gli oggetti tracciati."
},
"use_snapshot": {
"label": "Usa istantanee",
"label": "Utilizza istantanee",
"description": "Utilizza le istantanee degli oggetti anziché le miniature per la generazione di descrizioni con GenAI."
},
"prompt": {
"description": "Modello di prompt predefinito utilizzato per la generazione di descrizioni con GenAI."
"description": "Modello di richiesta predefinito utilizzato per la generazione di descrizioni con GenAI.",
"label": "Richiesta di didascalia"
},
"object_prompts": {
"description": "Prompt specifici per ogni oggetto per personalizzare i risultati di GenAI in base a etichette specifiche."
"description": "Richieste specifiche per ogni oggetto per personalizzare i risultati di GenAI in base a etichette specifiche.",
"label": "Richiesta di oggetto"
},
"objects": {
"label": "Oggetti GenAI",
"description": "Elenco delle etichette degli oggetti da inviare a GenAI per impostazione predefinita."
"description": "Elenco di etichette degli oggetti da inviare a GenAI per impostazione predefinita."
},
"required_zones": {
"label": "Zone obbligatorie",
"description": "Zone che devono essere inserite affinché gli oggetti possano essere utilizzati per la generazione di descrizioni tramite GenAI."
"label": "Zone richieste",
"description": "Zone che devono essere inserite affinché gli oggetti siano idonei alla generazione della descrizione GenAI."
},
"debug_save_thumbnails": {
"label": "Salva miniature",
"description": "Salva le miniature inviate a GenAI per il debug e la revisione."
"description": "Salva le miniature inviate a GenAI per la correzione e la revisione."
},
"send_triggers": {
"label": "Attivatori GenAI",
"description": "Definisce quando i frame devono essere inviati a GenAI (al termine, dopo gli aggiornamenti, ecc.).",
"label": "Attivazioni GenAI",
"description": "Definisce quando i fotogrammi devono essere inviati a GenAI (alla fine, dopo gli aggiornamenti, ecc.).",
"tracked_object_end": {
"label": "Invia alla fine",
"description": "Invia una richiesta a GenAI quando l'oggetto tracciato termina."
@@ -776,6 +976,24 @@
"filters_attribute": {
"raw_mask": {
"label": "Maschera grezza"
},
"min_ratio": {
"label": "Rapporto di aspetto minimo",
"description": "Rapporto minimo tra larghezza e altezza richiesto affinché il riquadro di delimitazione sia valido."
},
"max_ratio": {
"label": "Rapporto di aspetto massimo",
"description": "Rapporto massimo tra larghezza e altezza richiesto affinché il riquadro di delimitazione sia valido."
},
"threshold": {
"label": "Soglia di confidenza"
},
"min_score": {
"label": "Confidenza minima"
},
"mask": {
"label": "Maschera filtro",
"description": "Coordinate del poligono che definiscono la posizione di applicazione di questo filtro all'interno dell'inquadratura."
}
}
},
@@ -795,7 +1013,39 @@
}
},
"timestamp_style": {
"label": "Stile orario"
"label": "Stile orario",
"position": {
"label": "Posizione timestamp",
"description": "Posizione del timestamp sull'immagine (tl/tr/bl/br)."
},
"format": {
"label": "Formato timestamp",
"description": "Stringa di formato data/ora utilizzata per i timestamp (codici di formato datetime di Python)."
},
"color": {
"label": "Colore timestamp",
"description": "Valori di colore RGB per il testo del timestamp (tutti i valori da 0 a 255).",
"red": {
"label": "Rosso",
"description": "Componente rosso (0-255) per il colore del timestamp."
},
"green": {
"label": "Verde",
"description": "Componente verde (0-255) per il colore del timestamp."
},
"blue": {
"label": "Blu",
"description": "Componente blu (0-255) per il colore del timestamp."
}
},
"thickness": {
"label": "Spessore timestamp",
"description": "Spessore della linea del testo del timestamp."
},
"effect": {
"label": "Effetto timestamp",
"description": "Effetto visivo per il testo del timestamp (none, solid, shadow)."
}
},
"database": {
"label": "Database",
@@ -824,7 +1074,7 @@
"description": "Indirizzo email utilizzato per le notifiche push o richiesto da alcuni fornitori di servizi di notifica."
},
"cooldown": {
"label": "Periodo di raffreddamento",
"label": "Tempo di attesa tra notifiche",
"description": "Tempo di attesa (in secondi) tra le notifiche per evitare di inviare spam ai destinatari."
},
"enabled_in_config": {
@@ -857,10 +1107,44 @@
}
},
"tls": {
"label": "TLS"
"label": "TLS",
"description": "Impostazioni TLS per gli endpoint web di Frigate (porta 8971).",
"enabled": {
"label": "Abilita TLS",
"description": "Abilita il protocollo TLS per l'interfaccia utente web e le API di Frigate sulla porta TLS configurata."
}
},
"telemetry": {
"label": "Telemetria"
"label": "Telemetria",
"description": "Opzioni di telemetria e statistiche di sistema, incluso il monitoraggio della GPU e della larghezza di banda di rete.",
"network_interfaces": {
"label": "Interfacce di rete",
"description": "Elenco dei prefissi dei nomi delle interfacce di rete da monitorare per le statistiche sulla larghezza di banda."
},
"stats": {
"label": "Statistiche di sistema",
"description": "Opzioni per abilitare/disabilitare la raccolta di varie statistiche di sistema e della GPU.",
"amd_gpu_stats": {
"label": "Statistiche GPU AMD",
"description": "Abilita la raccolta delle statistiche della GPU AMD, se presente una GPU AMD."
},
"intel_gpu_stats": {
"label": "Statistiche GPU Intel",
"description": "Abilita la raccolta delle statistiche della GPU Intel, se presente una GPU Intel."
},
"network_bandwidth": {
"label": "Larghezza di banda di rete",
"description": "Abilita il monitoraggio della larghezza di banda di rete per singolo processo per i processi ffmpeg della telecamera e per i rilevatori (richiede capability specifiche)."
},
"intel_gpu_device": {
"label": "Dispositivo GPU Intel",
"description": "Indirizzo bus PCI o percorso del dispositivo DRM (es. /dev/dri/card1) utilizzato per associare le statistiche della GPU Intel a un dispositivo specifico quando ne sono presenti molteplici."
}
},
"version_check": {
"label": "Controllo versione",
"description": "Abilita un controllo in uscita per rilevare se è disponibile una versione più recente di Frigate."
}
},
"birdseye": {
"label": "Birdseye",
@@ -887,7 +1171,7 @@
"label": "Attivatori",
"friendly_name": {
"label": "Nome descrittivo",
"description": "Nome descrittivo opzionale visualizzato nell'interfaccia utente per questo innesco."
"description": "Nome descrittivo opzionale visualizzato nell'interfaccia utente per questo attivatore."
},
"description": "Azioni e criteri di corrispondenza per gli attivatori della ricerca semantica specifici della telecamera.",
"enabled": {
+2 -2
View File
@@ -202,8 +202,8 @@
"aria": "Invia a Frigate Plus"
},
"addTrigger": {
"label": "Aggiungi innesco",
"aria": "Aggiungi un innesco per questo oggetto tracciato"
"label": "Aggiungi attivatore",
"aria": "Aggiungi un attivatore per questo oggetto tracciato"
},
"audioTranscription": {
"label": "Trascrivere",
+1 -1
View File
@@ -9,7 +9,7 @@
"disable": "Disabilita audio bidirezionale"
},
"snapshots": {
"enable": "Abilita istantanee",
"enable": "Abilita Istantanee",
"disable": "Disabilita istantanee"
},
"manualRecording": {
+37 -37
View File
@@ -212,7 +212,7 @@
"type": {
"zone": "zona",
"motion_mask": "maschera di movimento",
"object_mask": "maschera di oggetto"
"object_mask": "maschera oggetto"
},
"revertOverride": {
"title": "Ripristina la configurazione di base",
@@ -447,7 +447,7 @@
"users": "Utenti",
"frigateplus": "Frigate+",
"enrichments": "Miglioramenti",
"triggers": "Inneschi",
"triggers": "Attivatori",
"roles": "Ruoli",
"cameraManagement": "Gestione della telecamera",
"cameraReview": "Revisiona",
@@ -896,22 +896,22 @@
"restart_required": "Riavvio richiesto (impostazioni di miglioramento modificate)"
},
"triggers": {
"documentTitle": "Inneschi",
"documentTitle": "Attivatori",
"management": {
"title": "Inneschi",
"desc": "Gestisci gli inneschi per {{camera}}. Utilizza il tipo miniatura per attivare miniature simili all'oggetto tracciato selezionato e il tipo descrizione per attivare descrizioni simili al testo specificato."
"title": "Attivatori",
"desc": "Gestisci gli attivatori per {{camera}}. Utilizza il tipo miniatura per attivare miniature simili all'oggetto tracciato selezionato e il tipo descrizione per attivare descrizioni simili al testo specificato."
},
"addTrigger": "Aggiungi innesco",
"addTrigger": "Aggiungi attivatore",
"table": {
"name": "Nome",
"type": "Tipo",
"content": "Contenuto",
"threshold": "Soglia",
"actions": "Azioni",
"noTriggers": "Nessun innesco configurato per questa telecamera.",
"noTriggers": "Nessun attivatore configurato per questa telecamera.",
"edit": "Modifica",
"deleteTrigger": "Elimina innesco",
"lastTriggered": "Ultimo innesco"
"deleteTrigger": "Elimina attivatore",
"lastTriggered": "Ultimo attivatore"
},
"type": {
"thumbnail": "Miniatura",
@@ -925,34 +925,34 @@
},
"dialog": {
"createTrigger": {
"title": "Crea innesco",
"desc": "Crea un innesco per la telecamera {{camera}}"
"title": "Crea attivatore",
"desc": "Crea un attivatore per la telecamera {{camera}}"
},
"editTrigger": {
"title": "Modifica innesco",
"desc": "Modifica le impostazioni per l'innesco della telecamera {{camera}}"
"title": "Modifica attivatore",
"desc": "Modifica le impostazioni per l'attivatore della telecamera {{camera}}"
},
"deleteTrigger": {
"title": "Elimina innesco",
"desc": "Vuoi davvero eliminare l'innesco <strong>{{triggerName}}</strong>? Questa azione non può essere annullata."
"title": "Elimina attivatore",
"desc": "Vuoi davvero eliminare l'attivatore <strong>{{triggerName}}</strong>? Questa azione non può essere annullata."
},
"form": {
"name": {
"title": "Nome",
"placeholder": "Assegna un nome a questo innesco",
"placeholder": "Assegna un nome a questo attivatore",
"error": {
"minLength": "Il campo deve contenere almeno 2 caratteri.",
"invalidCharacters": "Il campo può contenere solo lettere, numeri, caratteri di sottolineatura e trattini.",
"alreadyExists": "Per questa telecamera esiste già un innesco con questo nome."
"alreadyExists": "Per questa telecamera esiste già un attivatore con questo nome."
},
"description": "Inserisci un nome o una descrizione univoca per identificare questo innesco"
"description": "Inserisci un nome o una descrizione univoca per identificare questo attivatore"
},
"enabled": {
"description": "Abilita o disabilita questo innesco"
"description": "Abilita o disabilita questo attivatore"
},
"type": {
"title": "Tipo",
"placeholder": "Seleziona il tipo di innesco",
"placeholder": "Seleziona il tipo di attivatore",
"description": "Si attiva quando viene rilevata una descrizione di un oggetto simile tracciato",
"thumbnail": "Attiva quando viene rilevata una miniatura di un oggetto simile tracciato"
},
@@ -960,7 +960,7 @@
"title": "Contenuto",
"imagePlaceholder": "Seleziona una miniatura",
"textPlaceholder": "Inserisci il contenuto del testo",
"imageDesc": "Vengono visualizzate solo le 100 miniature più recenti. Se non riesci a trovare la miniatura desiderata, controlla gli oggetti precedenti in Esplora e imposta un innesco dal menu.",
"imageDesc": "Vengono visualizzate solo le 100 miniature più recenti. Se non riesci a trovare la miniatura desiderata, controlla gli oggetti precedenti in Esplora e imposta un attivatore dal menu.",
"textDesc": "Inserisci il testo per attivare questa azione quando viene rilevata una descrizione simile dell'oggetto tracciato.",
"error": {
"required": "Il contenuto è obbligatorio."
@@ -972,11 +972,11 @@
"min": "La soglia deve essere almeno 0",
"max": "La soglia deve essere al massimo 1"
},
"desc": "Imposta la soglia di similarità per questo innesco. Una soglia più alta indica che è necessaria una corrispondenza più vicina per attivare l'innesco."
"desc": "Imposta la soglia di similarità per questo attivatore. Una soglia più alta indica che è necessaria una corrispondenza più vicina per attivare l'attivatore."
},
"actions": {
"title": "Azioni",
"desc": "Per impostazione predefinita, Frigate invia un messaggio MQTT per tutti gli inneschi. Le sottoetichette aggiungono il nome dell'innesco all'etichetta dell'oggetto. Gli attributi sono metadati ricercabili, memorizzati separatamente nei metadati dell'oggetto tracciato.",
"desc": "Per impostazione predefinita, Frigate invia un messaggio MQTT per tutti gli attivatori. Le sottoetichette aggiungono il nome dell'attivatore all'etichetta dell'oggetto. Gli attributi sono metadati ricercabili, memorizzati separatamente nei metadati dell'oggetto tracciato.",
"error": {
"min": "È necessario selezionare almeno un'azione."
}
@@ -990,30 +990,30 @@
},
"toast": {
"success": {
"createTrigger": "L'innesco {{name}} è stato creato correttamente.",
"updateTrigger": "L'innesco {{name}} è stato aggiornato correttamente.",
"deleteTrigger": "L'innesco {{name}} è stato eliminato correttamente."
"createTrigger": "L'attivatore {{name}} è stato creato correttamente.",
"updateTrigger": "L'attivatore {{name}} è stato aggiornato correttamente.",
"deleteTrigger": "L'attivatore {{name}} è stato eliminato correttamente."
},
"error": {
"createTriggerFailed": "Impossibile creare l'innesco: {{errorMessage}}",
"updateTriggerFailed": "Impossibile aggiornare l'innesco: {{errorMessage}}",
"deleteTriggerFailed": "Impossibile eliminare l'innesco: {{errorMessage}}"
"createTriggerFailed": "Impossibile creare l'attivatore: {{errorMessage}}",
"updateTriggerFailed": "Impossibile aggiornare l'attivatore: {{errorMessage}}",
"deleteTriggerFailed": "Impossibile eliminare l'attivatore: {{errorMessage}}"
}
},
"semanticSearch": {
"title": "La ricerca semantica è disabilitata",
"desc": "Per utilizzare gli inneschi, è necessario abilitare la ricerca semantica."
"desc": "Per utilizzare gli attivatori, è necessario abilitare la ricerca semantica."
},
"wizard": {
"title": "Crea innesco",
"title": "Crea attivatore",
"step1": {
"description": "Configura le impostazioni di base per il tuo innesco."
"description": "Configura le impostazioni di base per il tuo attivatore."
},
"step2": {
"description": "Imposta il contenuto che attiverà questa azione."
},
"step3": {
"description": "Configura la soglia e le azioni per questo innesco."
"description": "Configura la soglia e le azioni per questo attivatore."
},
"steps": {
"nameAndType": "Nome e tipo",
@@ -2030,10 +2030,10 @@
"desc": "La griglia di regioni è un algoritmo di ottimizzazione che apprende dove gli oggetti di diverse dimensioni appaiono tipicamente nel campo visivo di ciascuna telecamera. Frigate utilizza questi dati per dimensionare in modo efficiente le regioni di rilevamento. La griglia viene creata automaticamente nel tempo a partire dai dati degli oggetti tracciati.",
"clear": "Pulisci griglia di regioni",
"clearConfirmTitle": "Pulisci griglia di regioni",
"clearConfirmDesc": "La pulizia della griglia di regioni non è consigliata a meno che non si sia recentemente modificato il modello del rilevatore o la posizione fisica della telecamera, riscontrando problemi di tracciamento degli oggetti. La griglia verrà ricostruita automaticamente nel tempo man mano che gli oggetti vengono tracciati. Per rendere effettive le modifiche è necessario riavviare Frigate.",
"clearSuccess": "Griglia di regioni pulita con successo",
"clearError": "Impossibile pulire la griglia di regioni",
"restartRequired": "È necessario riavviare il sistema affinché le modifiche alla griglia di regioni abbiano effetto"
"clearConfirmDesc": "La pulizia della griglia delle regioni non è consigliata, a meno che non sia stata modificata di recente la dimensione del modello del rilevatore, oppure sia stata cambiata la posizione fisica della telecamera e si riscontrino problemi di tracciamento degli oggetti. La griglia verrà ricostruita automaticamente nel tempo man mano che gli oggetti vengono tracciati. È richiesto un riavvio di Frigate affinché le modifiche abbiano effetto.",
"clearSuccess": "Griglia delle regioni pulita con successo",
"clearError": "Impossibile pulire la griglia delle regioni",
"restartRequired": "È necessario riavviare il sistema affinché le modifiche alla griglia delle regioni abbiano effetto"
}
},
"retainMode": {
+6 -2
View File
@@ -217,7 +217,8 @@
"id": "Bahasa Indonesia (Indonesisk)",
"ur": "اردو (Urdu)",
"hr": "Hrvatski (Kroatisk)",
"bs": "Bosanski (Bosnisk)"
"bs": "Bosanski (Bosnisk)",
"zhHant": "繁體中文 (Tradisjonell kinesisk)"
},
"appearance": "Utseende",
"darkMode": {
@@ -326,5 +327,8 @@
"separatorWithSpace": ", "
},
"validation_errors": "Valideringsfeil",
"no_items": "Ingen elementer"
"no_items": "Ingen elementer",
"credentialField": {
"savedPlaceholder": "Lagret – la stå tomt for å beholde gjeldende"
}
}
@@ -68,7 +68,10 @@
"desc": "Velg kameraer for denne gruppen."
},
"icon": "Ikon",
"success": "Kameragruppen ({{name}}) er lagret."
"success": "Kameragruppen ({{name}}) er lagret.",
"showAll": "Vis alle kameragrupper",
"showLess": "Vis mindre",
"editGroups": "Rediger kameragrupper"
},
"debug": {
"options": {
@@ -34,6 +34,9 @@
"ask_an": "Er dette objekt en <code>{{label}}</code>?",
"ask_a": "Er dette objektet en <code>{{label}}</code>?",
"ask_full": "Er dette objekt en <code>{{untranslatedLabel}}</code> ({{translatedLabel}})?"
},
"toast": {
"error": "Kunne ikke sende til Frigate+. Vennligst sjekk nettverksforbindelsen din og prøv igjen."
}
}
},
@@ -112,7 +115,14 @@
"detectionCount_one": "1 sporet objekt",
"detectionCount_other": "{{count}} sporede objekter",
"exportButton_one": "Eksporter 1 kamera",
"exportButton_other": "Eksporter {{count}} kameraer"
"exportButton_other": "Eksporter {{count}} kameraer",
"searchOrSelectGroup": "Søk, eller velg en kameragruppe...",
"selectAll": "Velg alle kameraer",
"clearSelection": "Nullstill valg",
"selectWithActivity": "Kameraer med sporede objekter",
"selectGroup": "Velg gruppe",
"noMatchingCameras": "Ingen kameraer samsvarer med søket ditt",
"selectedCount": "{{selected}} / {{total}} valgt"
},
"multi": {
"description": "Eksporter hver valgte inspeksjon. Alle eksporter vil bli gruppert under én sak.",
@@ -48,5 +48,6 @@
"error": {
"submitFrigatePlusFailed": "Kunne ikke sende bildet til Frigate+"
}
}
},
"cameraOff": "Kameraet er av"
}

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