Compare commits

..

16 Commits

Author SHA1 Message Date
Weblate (bot)
115cc0a5b4
Merge c149f92135c94bb45847f05fab7d0a7400466c43 into 1a75251ffb2886e2d916bcf6a84ba23fdc0125e4 2025-11-29 13:33:28 +00:00
Hosted Weblate
c149f92135
Translated using Weblate (Norwegian Bokmål)
Currently translated at 100.0% (119 of 119 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 100.0% (40 of 40 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 100.0% (72 of 72 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 100.0% (639 of 639 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 100.0% (52 of 52 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 100.0% (116 of 116 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 100.0% (55 of 55 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 100.0% (128 of 128 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 100.0% (48 of 48 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/components-dialog/nb_NO/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-filter/nb_NO/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-classificationmodel/nb_NO/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-events/nb_NO/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/nb_NO/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/nb_NO/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-search/nb_NO/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/nb_NO/
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/components-filter
Translation: Frigate NVR/views-classificationmodel
Translation: Frigate NVR/views-events
Translation: Frigate NVR/views-explore
Translation: Frigate NVR/views-facelibrary
Translation: Frigate NVR/views-search
Translation: Frigate NVR/views-settings
2025-11-29 13:33:22 +00:00
Hosted Weblate
8f11a67be3
Translated using Weblate (Slovak)
Currently translated at 100.0% (116 of 116 strings)

Translated using Weblate (Slovak)

Currently translated at 100.0% (55 of 55 strings)

Translated using Weblate (Slovak)

Currently translated at 100.0% (128 of 128 strings)

Translated using Weblate (Slovak)

Currently translated at 100.0% (501 of 501 strings)

Translated using Weblate (Slovak)

Currently translated at 100.0% (214 of 214 strings)

Translated using Weblate (Slovak)

Currently translated at 100.0% (52 of 52 strings)

Translated using Weblate (Slovak)

Currently translated at 100.0% (639 of 639 strings)

Translated using Weblate (Slovak)

Currently translated at 100.0% (128 of 128 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Jakub K <klacanjakub0@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/audio/sk/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/sk/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/sk/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-classificationmodel/sk/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/sk/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/sk/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/sk/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/sk/
Translation: Frigate NVR/audio
Translation: Frigate NVR/common
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/views-classificationmodel
Translation: Frigate NVR/views-explore
Translation: Frigate NVR/views-facelibrary
Translation: Frigate NVR/views-settings
Translation: Frigate NVR/views-system
2025-11-29 13:33:21 +00:00
Hosted Weblate
db569f4449
Translated using Weblate (French)
Currently translated at 100.0% (55 of 55 strings)

Translated using Weblate (French)

Currently translated at 100.0% (128 of 128 strings)

Co-authored-by: Apocoloquintose <bertrand.moreux@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/fr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/fr/
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/views-explore
2025-11-29 13:33:21 +00:00
Hosted Weblate
c2fec7d739
Translated using Weblate (Dutch)
Currently translated at 100.0% (40 of 40 strings)

Translated using Weblate (Dutch)

Currently translated at 100.0% (119 of 119 strings)

Translated using Weblate (Dutch)

Currently translated at 100.0% (55 of 55 strings)

Translated using Weblate (Dutch)

Currently translated at 100.0% (128 of 128 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Marijn <168113859+Marijn0@users.noreply.github.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/nl/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-classificationmodel/nl/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-events/nl/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/nl/
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/views-classificationmodel
Translation: Frigate NVR/views-events
Translation: Frigate NVR/views-explore
2025-11-29 13:33:20 +00:00
Hosted Weblate
748f2121eb
Translated using Weblate (Italian)
Currently translated at 100.0% (128 of 128 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (40 of 40 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (119 of 119 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (55 of 55 strings)

Co-authored-by: Gringo <ita.translations@tiscali.it>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/it/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-classificationmodel/it/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-events/it/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/it/
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/views-classificationmodel
Translation: Frigate NVR/views-events
Translation: Frigate NVR/views-explore
2025-11-29 13:33:19 +00:00
Hosted Weblate
2781c1dbed
Translated using Weblate (Polish)
Currently translated at 92.9% (119 of 128 strings)

Translated using Weblate (Polish)

Currently translated at 98.1% (210 of 214 strings)

Translated using Weblate (Polish)

Currently translated at 85.4% (546 of 639 strings)

Translated using Weblate (Polish)

Currently translated at 95.0% (38 of 40 strings)

Translated using Weblate (Polish)

Currently translated at 83.5% (107 of 128 strings)

Translated using Weblate (Polish)

Currently translated at 98.0% (51 of 52 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (92 of 92 strings)

Translated using Weblate (Polish)

Currently translated at 37.8% (45 of 119 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: piesu <dogiiee@proton.me>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/pl/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-classificationmodel/pl/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-events/pl/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/pl/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/pl/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-live/pl/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/pl/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/pl/
Translation: Frigate NVR/common
Translation: Frigate NVR/views-classificationmodel
Translation: Frigate NVR/views-events
Translation: Frigate NVR/views-explore
Translation: Frigate NVR/views-facelibrary
Translation: Frigate NVR/views-live
Translation: Frigate NVR/views-settings
Translation: Frigate NVR/views-system
2025-11-29 13:33:18 +00:00
Hosted Weblate
36d71e0548
Translated using Weblate (Catalan)
Currently translated at 100.0% (40 of 40 strings)

Translated using Weblate (Catalan)

Currently translated at 100.0% (119 of 119 strings)

Translated using Weblate (Catalan)

Currently translated at 100.0% (128 of 128 strings)

Translated using Weblate (Catalan)

Currently translated at 100.0% (55 of 55 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/views-classificationmodel/ca/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-events/ca/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/ca/
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/views-classificationmodel
Translation: Frigate NVR/views-events
Translation: Frigate NVR/views-explore
2025-11-29 13:33:17 +00:00
Hosted Weblate
d7fd245162
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (40 of 40 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (119 of 119 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (55 of 55 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (128 of 128 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Максим Горпиніч <gorpinicmaksim0@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/uk/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-classificationmodel/uk/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-events/uk/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/uk/
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/views-classificationmodel
Translation: Frigate NVR/views-events
Translation: Frigate NVR/views-explore
2025-11-29 13:33:16 +00:00
Hosted Weblate
2b96237158
Translated using Weblate (Bulgarian)
Currently translated at 100.0% (2 of 2 strings)

Translated using Weblate (Bulgarian)

Currently translated at 9.0% (5 of 55 strings)

Translated using Weblate (Bulgarian)

Currently translated at 0.7% (5 of 639 strings)

Translated using Weblate (Bulgarian)

Currently translated at 15.3% (2 of 13 strings)

Translated using Weblate (Bulgarian)

Currently translated at 31.5% (29 of 92 strings)

Translated using Weblate (Bulgarian)

Currently translated at 2.3% (3 of 128 strings)

Translated using Weblate (Bulgarian)

Currently translated at 20.0% (2 of 10 strings)

Translated using Weblate (Bulgarian)

Currently translated at 9.6% (5 of 52 strings)

Translated using Weblate (Bulgarian)

Currently translated at 22.5% (9 of 40 strings)

Translated using Weblate (Bulgarian)

Currently translated at 20.0% (2 of 10 strings)

Translated using Weblate (Bulgarian)

Currently translated at 6.2% (3 of 48 strings)

Translated using Weblate (Bulgarian)

Currently translated at 0.8% (1 of 119 strings)

Translated using Weblate (Bulgarian)

Currently translated at 100.0% (2 of 2 strings)

Translated using Weblate (Bulgarian)

Currently translated at 2.3% (3 of 128 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Skye Fox <mardymcfly1985@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-auth/bg/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/bg/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-icons/bg/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-input/bg/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-classificationmodel/bg/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-configeditor/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/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-search/bg/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/bg/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/bg/
Translation: Frigate NVR/components-auth
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/components-icons
Translation: Frigate NVR/components-input
Translation: Frigate NVR/views-classificationmodel
Translation: Frigate NVR/views-configeditor
Translation: Frigate NVR/views-events
Translation: Frigate NVR/views-explore
Translation: Frigate NVR/views-exports
Translation: Frigate NVR/views-facelibrary
Translation: Frigate NVR/views-live
Translation: Frigate NVR/views-search
Translation: Frigate NVR/views-settings
Translation: Frigate NVR/views-system
2025-11-29 13:33:16 +00:00
Hosted Weblate
9e8932201f
Translated using Weblate (Romanian)
Currently translated at 100.0% (40 of 40 strings)

Translated using Weblate (Romanian)

Currently translated at 100.0% (119 of 119 strings)

Translated using Weblate (Romanian)

Currently translated at 100.0% (55 of 55 strings)

Translated using Weblate (Romanian)

Currently translated at 100.0% (128 of 128 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/components-dialog/ro/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-classificationmodel/ro/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-events/ro/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/ro/
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/views-classificationmodel
Translation: Frigate NVR/views-events
Translation: Frigate NVR/views-explore
2025-11-29 13:33:14 +00:00
Hosted Weblate
77a8544f5a
Translated using Weblate (German)
Currently translated at 100.0% (639 of 639 strings)

Translated using Weblate (German)

Currently translated at 100.0% (119 of 119 strings)

Translated using Weblate (German)

Currently translated at 100.0% (214 of 214 strings)

Translated using Weblate (German)

Currently translated at 100.0% (40 of 40 strings)

Translated using Weblate (German)

Currently translated at 100.0% (92 of 92 strings)

Translated using Weblate (German)

Currently translated at 100.0% (501 of 501 strings)

Translated using Weblate (German)

Currently translated at 100.0% (128 of 128 strings)

Translated using Weblate (German)

Currently translated at 100.0% (128 of 128 strings)

Translated using Weblate (German)

Currently translated at 99.5% (213 of 214 strings)

Translated using Weblate (German)

Currently translated at 99.5% (213 of 214 strings)

Translated using Weblate (German)

Currently translated at 83.5% (534 of 639 strings)

Translated using Weblate (German)

Currently translated at 93.8% (470 of 501 strings)

Translated using Weblate (German)

Currently translated at 98.9% (91 of 92 strings)

Translated using Weblate (German)

Currently translated at 100.0% (52 of 52 strings)

Translated using Weblate (German)

Currently translated at 100.0% (39 of 39 strings)

Translated using Weblate (German)

Currently translated at 100.0% (128 of 128 strings)

Translated using Weblate (German)

Currently translated at 100.0% (128 of 128 strings)

Translated using Weblate (German)

Currently translated at 100.0% (116 of 116 strings)

Translated using Weblate (German)

Currently translated at 100.0% (116 of 116 strings)

Translated using Weblate (German)

Currently translated at 34.4% (40 of 116 strings)

Translated using Weblate (German)

Currently translated at 94.8% (37 of 39 strings)

Translated using Weblate (German)

Currently translated at 100.0% (55 of 55 strings)

Translated using Weblate (German)

Currently translated at 78.0% (499 of 639 strings)

Translated using Weblate (German)

Currently translated at 98.4% (126 of 128 strings)

Translated using Weblate (German)

Currently translated at 29.3% (34 of 116 strings)

Translated using Weblate (German)

Currently translated at 96.0% (123 of 128 strings)

Translated using Weblate (German)

Currently translated at 78.0% (499 of 639 strings)

Co-authored-by: Fuxle <moritz.hofmann2005@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Sebastian Sie <sebastian.neuplanitz@googlemail.com>
Co-authored-by: mvdberge <micha.vordemberge@christmann.info>
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-dialog/de/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-classificationmodel/de/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-events/de/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/de/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/de/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-live/de/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/de/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/de/
Translation: Frigate NVR/audio
Translation: Frigate NVR/common
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/views-classificationmodel
Translation: Frigate NVR/views-events
Translation: Frigate NVR/views-explore
Translation: Frigate NVR/views-facelibrary
Translation: Frigate NVR/views-live
Translation: Frigate NVR/views-settings
Translation: Frigate NVR/views-system
2025-11-29 13:33:13 +00:00
Hosted Weblate
6bbef5134d
Translated using Weblate (Portuguese (Brazil))
Currently translated at 29.3% (34 of 116 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Jose Machado <machado.jm4@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-classificationmodel/pt_BR/
Translation: Frigate NVR/views-classificationmodel
2025-11-29 13:33:12 +00:00
Hosted Weblate
d21d1a71f1
Translated using Weblate (Turkish)
Currently translated at 98.5% (211 of 214 strings)

Translated using Weblate (Turkish)

Currently translated at 66.3% (77 of 116 strings)

Translated using Weblate (Turkish)

Currently translated at 63.7% (74 of 116 strings)

Translated using Weblate (Turkish)

Currently translated at 97.6% (209 of 214 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (55 of 55 strings)

Translated using Weblate (Turkish)

Currently translated at 94.5% (121 of 128 strings)

Translated using Weblate (Turkish)

Currently translated at 93.7% (120 of 128 strings)

Translated using Weblate (Turkish)

Currently translated at 94.5% (87 of 92 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (39 of 39 strings)

Translated using Weblate (Turkish)

Currently translated at 58.9% (377 of 639 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (52 of 52 strings)

Co-authored-by: Emircanos <emircan368@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/tr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/tr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-classificationmodel/tr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-events/tr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/tr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/tr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-live/tr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/tr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/tr/
Translation: Frigate NVR/common
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/views-classificationmodel
Translation: Frigate NVR/views-events
Translation: Frigate NVR/views-explore
Translation: Frigate NVR/views-facelibrary
Translation: Frigate NVR/views-live
Translation: Frigate NVR/views-settings
Translation: Frigate NVR/views-system
2025-11-29 13:33:11 +00:00
Ryan Hass
1a75251ffb
Add yolov9 inference speeds for UHD 730 GPU. (#21090)
This adds the inference speeds measured on an i5-11400T with a UHD 730
GPU running at nominal temperatures.
2025-11-29 07:32:16 -06:00
Josh Hawkins
048475e750
API admin exemptions and route guard updates (#21094)
* update exempt paths and add missing guard to api endpoints

* admin only frigate+ submission
2025-11-29 07:30:04 -06:00
54 changed files with 659 additions and 78 deletions

View File

@ -159,7 +159,7 @@ Inference speeds vary greatly depending on the CPU or GPU used, some known examp
| Intel HD 530 | 15 - 35 ms | | | | Can only run one detector instance |
| Intel HD 620 | 15 - 25 ms | | 320: ~ 35 ms | | |
| Intel HD 630 | ~ 15 ms | | 320: ~ 30 ms | | |
| Intel UHD 730 | ~ 10 ms | | 320: ~ 19 ms 640: ~ 54 ms | | |
| Intel UHD 730 | ~ 10 ms | t-320: 14ms s-320: 24ms t-640: 34ms s-640: 65ms | 320: ~ 19 ms 640: ~ 54 ms | | |
| Intel UHD 770 | ~ 15 ms | t-320: ~ 16 ms s-320: ~ 20 ms s-640: ~ 40 ms | 320: ~ 20 ms 640: ~ 46 ms | | |
| Intel N100 | ~ 15 ms | s-320: 30 ms | 320: ~ 25 ms | | Can only run one detector instance |
| Intel N150 | ~ 15 ms | t-320: 16 ms s-320: 24 ms | | | |

View File

@ -62,8 +62,8 @@ def require_admin_by_default():
"/",
"/version",
"/config/schema.json",
"/metrics",
# Authenticated user endpoints (allow_any_authenticated)
"/metrics",
"/stats",
"/stats/history",
"/config",
@ -76,22 +76,28 @@ def require_admin_by_default():
"/recognized_license_plates",
"/timeline",
"/timeline/hourly",
"/events/summary",
"/recordings/storage",
"/recordings/summary",
"/recordings/unavailable",
"/go2rtc/streams",
"/event_ids",
"/events",
"/exports",
}
# Path prefixes that should be exempt (for paths with parameters)
EXEMPT_PREFIXES = (
"/logs/", # /logs/{service}
"/review", # /review, /review/{id}, /review_ids, /review/summary, etc.
"/review", # /review, /review/{id}, /review/summary, /review_ids, etc.
"/reviews/", # /reviews/viewed, /reviews/delete
"/events/", # /events/{id}/thumbnail, etc. (camera-scoped)
"/events/", # /events/{id}/thumbnail, /events/summary, etc. (camera-scoped)
"/export/", # /export/{camera}/start/..., /export/{id}/rename, /export/{id}
"/go2rtc/streams/", # /go2rtc/streams/{camera}
"/users/", # /users/{username}/password (has own auth)
"/preview/", # /preview/{file}/thumbnail.jpg
"/exports/", # /exports/{export_id}
"/vod/", # /vod/{camera_name}/...
"/notifications/", # /notifications/pubkey, /notifications/register
)
async def admin_checker(request: Request):
@ -105,6 +111,24 @@ def require_admin_by_default():
if path.startswith(EXEMPT_PREFIXES):
return
# Dynamic camera path exemption:
# Any path whose first segment matches a configured camera name should
# bypass the global admin requirement. These endpoints enforce access
# via route-level dependencies (e.g. require_camera_access) to ensure
# per-camera authorization. This allows non-admin authenticated users
# (e.g. viewer role) to access camera-specific resources without
# needing admin privileges.
try:
if path.startswith("/"):
first_segment = path.split("/", 2)[1]
if (
first_segment
and first_segment in request.app.frigate_config.cameras
):
return
except Exception:
pass
# For all other paths, require admin role
# Port 5000 (internal) requests have admin role set automatically
role = request.headers.get("remote-role")
@ -113,7 +137,7 @@ def require_admin_by_default():
raise HTTPException(
status_code=403,
detail="Admin role required for this endpoint",
detail="Access denied. A user with the admin role is required.",
)
return admin_checker

View File

@ -70,6 +70,7 @@ router = APIRouter(tags=[Tags.events])
@router.get(
"/events",
response_model=list[EventResponse],
dependencies=[Depends(allow_any_authenticated())],
summary="Get events",
description="Returns a list of events.",
)
@ -344,6 +345,7 @@ def events(
@router.get(
"/events/explore",
response_model=list[EventResponse],
dependencies=[Depends(allow_any_authenticated())],
summary="Get summary of objects.",
description="""Gets a summary of objects from the database.
Returns a list of objects with a max of `limit` objects for each label.
@ -436,6 +438,7 @@ def events_explore(
@router.get(
"/event_ids",
response_model=list[EventResponse],
dependencies=[Depends(allow_any_authenticated())],
summary="Get events by ids.",
description="""Gets events by a list of ids.
Returns a list of events.
@ -469,6 +472,7 @@ async def event_ids(ids: str, request: Request):
@router.get(
"/events/search",
dependencies=[Depends(allow_any_authenticated())],
summary="Search events.",
description="""Searches for events in the database.
Returns a list of events.
@ -919,6 +923,7 @@ def events_summary(
@router.get(
"/events/{event_id}",
response_model=EventResponse,
dependencies=[Depends(allow_any_authenticated())],
summary="Get event by id.",
description="Gets an event by its id.",
)
@ -962,6 +967,7 @@ def set_retain(event_id: str):
@router.post(
"/events/{event_id}/plus",
response_model=EventUploadPlusResponse,
dependencies=[Depends(require_role(["admin"]))],
summary="Send event to Frigate+.",
description="""Sends an event to Frigate+.
Returns a success message or an error if the event is not found.
@ -1102,6 +1108,7 @@ async def send_to_plus(request: Request, event_id: str, body: SubmitPlusBody = N
@router.put(
"/events/{event_id}/false_positive",
response_model=EventUploadPlusResponse,
dependencies=[Depends(require_role(["admin"]))],
summary="Submit false positive to Frigate+",
description="""Submit an event as a false positive to Frigate+.
This endpoint is the same as the standard Frigate+ submission endpoint,

View File

@ -14,6 +14,7 @@ from peewee import DoesNotExist
from playhouse.shortcuts import model_to_dict
from frigate.api.auth import (
allow_any_authenticated,
get_allowed_cameras_for_filter,
require_camera_access,
require_role,
@ -44,6 +45,7 @@ router = APIRouter(tags=[Tags.export])
@router.get(
"/exports",
response_model=ExportsResponse,
dependencies=[Depends(allow_any_authenticated())],
summary="Get exports",
description="""Gets all exports from the database for cameras the user has access to.
Returns a list of exports ordered by date (most recent first).""",
@ -272,6 +274,7 @@ async def export_delete(event_id: str, request: Request):
@router.get(
"/exports/{export_id}",
response_model=ExportModel,
dependencies=[Depends(allow_any_authenticated())],
summary="Get a single export",
description="""Gets a specific export by ID. The user must have access to the camera
associated with the export.""",

View File

@ -945,6 +945,7 @@ async def vod_hour(
@router.get(
"/vod/event/{event_id}",
dependencies=[Depends(allow_any_authenticated())],
description="Returns an HLS playlist for the specified object. Append /master.m3u8 or /index.m3u8 for HLS playback.",
)
async def vod_event(

View File

@ -5,11 +5,12 @@ import os
from typing import Any
from cryptography.hazmat.primitives import serialization
from fastapi import APIRouter, Request
from fastapi import APIRouter, Depends, Request
from fastapi.responses import JSONResponse
from peewee import DoesNotExist
from py_vapid import Vapid01, utils
from frigate.api.auth import allow_any_authenticated
from frigate.api.defs.tags import Tags
from frigate.const import CONFIG_DIR
from frigate.models import User
@ -21,6 +22,7 @@ router = APIRouter(tags=[Tags.notifications])
@router.get(
"/notifications/pubkey",
dependencies=[Depends(allow_any_authenticated())],
summary="Get VAPID public key",
description="""Gets the VAPID public key for the notifications.
Returns the public key or an error if notifications are not enabled.
@ -47,6 +49,7 @@ def get_vapid_pub_key(request: Request):
@router.post(
"/notifications/register",
dependencies=[Depends(allow_any_authenticated())],
summary="Register notifications",
description="""Registers a notifications subscription.
Returns a success message or an error if the subscription is not provided.

View File

@ -577,7 +577,9 @@ def delete_reviews(body: ReviewModifyMultipleBody):
@router.get(
"/review/activity/motion", response_model=list[ReviewActivityMotionResponse]
"/review/activity/motion",
response_model=list[ReviewActivityMotionResponse],
dependencies=[Depends(allow_any_authenticated())],
)
def motion_activity(
params: ReviewActivityMotionQueryParams = Depends(),
@ -739,6 +741,7 @@ async def set_not_reviewed(
@router.post(
"/review/summarize/start/{start_ts}/end/{end_ts}",
dependencies=[Depends(allow_any_authenticated())],
description="Use GenAI to summarize review items over a period of time.",
)
def generate_review_summary(request: Request, start_ts: float, end_ts: float):

View File

@ -1,5 +1,6 @@
{
"form": {
"user": "Потребителско име"
"user": "Потребителско име",
"password": "Парола"
}
}

View File

@ -10,6 +10,7 @@
"select": "Избери"
},
"restart": {
"title": "Сигурен ли сте, че искате да рестартирате Frigate?"
"title": "Сигурен ли сте, че искате да рестартирате Frigate?",
"button": "Рестартирай"
}
}

View File

@ -1,5 +1,8 @@
{
"iconPicker": {
"selectIcon": "Изберете иконка"
"selectIcon": "Изберете иконка",
"search": {
"placeholder": "Потърси за икона…"
}
}
}

View File

@ -1,7 +1,10 @@
{
"button": {
"downloadVideo": {
"label": "Свали видео"
"label": "Свали видео",
"toast": {
"success": "Вашето видео за преглеждане почна да се изтегля."
}
}
}
}

View File

@ -1 +1,3 @@
{}
{
"documentTitle": "Модели за класификация"
}

View File

@ -1 +1,4 @@
{}
{
"documentTitle": "Настройки на конфигурацията - Фригейт",
"configEditor": "Настройки на конфигурацията"
}

View File

@ -9,5 +9,7 @@
"aria": "Избери събития",
"noFoundForTimePeriod": "Няма намерени събития за този времеви период."
},
"allCameras": "Всички камери"
"allCameras": "Всички камери",
"alerts": "Известия",
"detections": "Засичания"
}

View File

@ -8,5 +8,7 @@
}
},
"trackedObjectsCount_one": "{{count}} проследен обект ",
"trackedObjectsCount_other": "{{count}} проследени обекта "
"trackedObjectsCount_other": "{{count}} проследени обекта ",
"documentTitle": "Разгледай - Фригейт",
"generativeAI": "Генериращ Изкъствен Интелект"
}

View File

@ -1,3 +1,4 @@
{
"documentTitle": "Експорт - Frigate"
"documentTitle": "Експорт - Frigate",
"search": "Търси"
}

View File

@ -10,5 +10,9 @@
"deletedName_one": "{{count}} лице бе изтрито успешно.",
"deletedName_other": "{{count}} лица бяха изтрити успешно."
}
},
"description": {
"addFace": "Добавете нова колекция във библиотеката за лица при качването на първата ви снимка.",
"placeholder": "Напишете име за тази колекция"
}
}

View File

@ -64,5 +64,6 @@
"cameraSettings": {
"cameraEnabled": "Камерата е включена"
},
"documentTitle": "Наживо - Frigate"
"documentTitle": "Наживо - Frigate",
"documentTitle.withCamera": "{{camera}} - На живо - Фригейт"
}

View File

@ -1,5 +1,7 @@
{
"button": {
"save": "Запазване на търсенето"
}
},
"search": "Търси",
"savedSearches": "Запазени търсения"
}

View File

@ -12,5 +12,9 @@
"point_one": "{{count}} точка",
"point_other": "{{count}} точки"
}
},
"documentTitle": {
"default": "Настройки - Фригейт",
"authentication": "Настройки за сигурността - Фругейт"
}
}

View File

@ -1,5 +1,9 @@
{
"stats": {
"healthy": "Системата е изправна"
},
"documentTitle": {
"cameras": "Статистики за Камери - Фригейт",
"storage": "Статистика за паметта - Фригейт"
}
}

View File

@ -152,7 +152,12 @@
"generateSuccess": "Imatges de mostra generades amb èxit",
"allImagesRequired_one": "Classifiqueu totes les imatges. Queda {{count}} imatge.",
"allImagesRequired_many": "Classifiqueu totes les imatges. Queden {{count}} imatges.",
"allImagesRequired_other": "Classifiqueu totes les imatges. Queden {{count}} imatges."
"allImagesRequired_other": "Classifiqueu totes les imatges. Queden {{count}} imatges.",
"modelCreated": "El model s'ha creat correctament. Utilitzeu la vista Classificacions recents per a afegir imatges per als estats que falten i, a continuació, entrenar el model.",
"missingStatesWarning": {
"title": "Falten exemples d'estat",
"description": "No heu seleccionat exemples per a tots els estats. El model no serà entrenat fins que tots els estats tinguin imatges. Després de continuar, utilitzeu la vista Classificacions recents per classificar imatges per als estats que falten, i després entrenar el model."
}
}
},
"deleteModel": {

View File

@ -55,5 +55,8 @@
"trackedPoint": "Punt de seguiment"
},
"zoomIn": "Amplia",
"zoomOut": "Redueix"
"zoomOut": "Redueix",
"normalActivity": "Normal",
"needsReview": "Necessita revisió",
"securityConcern": "Preocupació per la seguretat"
}

View File

@ -468,5 +468,36 @@
"tearing": "Reißen",
"beep": "Piep",
"ping": "Ping",
"ding": "klingeln"
"ding": "klingeln",
"thunk": "dumpfes Geräusch",
"clang": "Geklirr",
"squeal": "Ausruf",
"creak": "Knarren",
"rustle": "Geknister",
"whir": "schwirren",
"clatter": "Geratter",
"sizzle": "brutzeln",
"clicking": "Klicken",
"clickety_clack": "Klappergeräuschen",
"rumble": "Grollen",
"plop": "plumpsen",
"hum": "brummen",
"zing": "Schwung",
"boing": "ferderndes Geräusch",
"crunch": "knirschendes",
"sine_wave": "Sinus Kurve",
"harmonic": "harmonisch",
"chirp_tone": "Frequenzwobbelung",
"pulse": "Takt",
"inside": "drinnen",
"outside": "draußen",
"reverberation": "Widerhall",
"echo": "Echo",
"noise": "Lärm",
"mains_hum": "Netzbrummen",
"distortion": "Verzerrung",
"sidetone": "Nebengeräusch",
"cacophony": "Dissonanz",
"throbbing": "Pochen",
"vibration": "Vibration"
}

View File

@ -231,7 +231,8 @@
"logout": "Abmelden"
},
"uiPlayground": "Testgebiet für Benutzeroberfläche",
"export": "Exportieren"
"export": "Exportieren",
"classification": "Klassifizierung"
},
"unit": {
"speed": {

View File

@ -173,7 +173,12 @@
"generationFailed": "Generierung fehlgeschlagen. Bitte versuchen Sie es erneut.",
"classifyFailed": "Bilder konnten nicht klassifiziert werden: {{error}}"
},
"generateSuccess": "Erfolgreich generierte Beispielbilder"
"generateSuccess": "Erfolgreich generierte Beispielbilder",
"modelCreated": "Modell erfolgreich erstellt. Verwenden Sie die Ansicht „Aktuelle Klassifizierungen“, um Bilder für fehlende Zustände hinzuzufügen, und trainieren Sie dann das Modell.",
"missingStatesWarning": {
"title": "Beispiele für fehlende Zustände",
"description": "Sie haben nicht für alle Zustände Beispiele ausgewählt. Das Modell wird erst trainiert, wenn für alle Zustände Bilder vorhanden sind. Fahren Sie fort und verwenden Sie die Ansicht „Aktuelle Klassifizierungen“, um Bilder für die fehlenden Zustände zu klassifizieren. Trainieren Sie anschließend das Modell."
}
}
}
}

View File

@ -55,5 +55,8 @@
"objectTrack": {
"trackedPoint": "Verfolgter Punkt",
"clickToSeek": "Klicke, um zu dieser Zeit zu springen"
}
},
"normalActivity": "normal",
"needsReview": "benötigt Überprüfung",
"securityConcern": "Sicherheitsbedenken"
}

View File

@ -172,7 +172,7 @@
"disable": "Live Audio Transkription ausschalten"
},
"noCameras": {
"title": "Keine Kameras eingerichtet",
"title": "Keine Kameras konfiguriert",
"description": "Beginne indem du eine Kamera anschließt.",
"buttonText": "Kamera hinzufügen",
"restricted": {

View File

@ -240,7 +240,8 @@
"alreadyExists": "Für diese Kamera existiert bereits eine Zone mit diesem Namen.",
"mustBeAtLeastTwoCharacters": "Der Zonenname muss aus mindestens 2 Zeichen bestehen.",
"mustNotBeSameWithCamera": "Der Zonenname darf nicht mit dem Kameranamen identisch sein.",
"mustNotContainPeriod": "Der Zonenname darf keine Punkte enthalten."
"mustNotContainPeriod": "Der Zonenname darf keine Punkte enthalten.",
"mustHaveAtLeastOneLetter": "Der Name der Zone muss mindestens einen Buchstaben enthalten."
}
},
"loiteringTime": {
@ -319,7 +320,7 @@
"name": {
"title": "Name",
"inputPlaceHolder": "Geben Sie einen Namen ein…",
"tips": "Der Name muss aus mindestens 2 Zeichen bestehen und sollte nicht den Namen einer Kamera oder anderen Zone entsprechen."
"tips": "Der Name muss mindestens 2 Zeichen lang sein, mindestens einen Buchstaben enthalten und darf nicht der Name einer Kamera oder einer anderen Zone sein."
},
"objects": {
"title": "Objekte",
@ -749,7 +750,7 @@
"triggers": {
"documentTitle": "Auslöser",
"management": {
"title": "Auslöser Verwaltung",
"title": "Auslöser",
"desc": "Auslöser für {{camera}} verwalten. Verwenden Sie den Vorschaubild Typ, um ähnliche Vorschaubilder wie das ausgewählte verfolgte Objekt auszulösen, und den Beschreibungstyp, um ähnliche Beschreibungen wie den von Ihnen angegebenen Text auszulösen."
},
"addTrigger": "Auslöser hinzufügen",
@ -770,7 +771,9 @@
},
"actions": {
"alert": "Als Alarm markieren",
"notification": "Benachrichtigung senden"
"notification": "Benachrichtigung senden",
"sub_label": "Unterlabel hinzufügen",
"attribute": "Attribut hinzufügen"
},
"dialog": {
"createTrigger": {
@ -788,25 +791,28 @@
"form": {
"name": {
"title": "Name",
"placeholder": "Auslöser Name eingeben",
"placeholder": "Benennen Sie diesen Auslöser",
"error": {
"minLength": "Der Name muss mindestens 2 Zeichen lang sein.",
"invalidCharacters": "Der Name darf nur Buchstaben, Zahlen, Unterstriche und Bindestriche enthalten.",
"alreadyExists": "Ein Auslöser mit diesem Namen existiert bereits für diese Kamera."
}
},
"description": "Geben Sie einen eindeutigen Namen oder eine Beschreibung ein, um diesen Auslöser zu identifizieren"
},
"enabled": {
"description": "Diesen Auslöser aktivieren oder deaktivieren"
},
"type": {
"title": "Typ",
"placeholder": "Auslöser Typ wählen"
"placeholder": "Auslöser Typ wählen",
"description": "Auslösen, wenn eine ähnliche Beschreibung eines verfolgten Objekts erkannt wird",
"thumbnail": "Auslösen, wenn eine ähnliche Miniaturansicht eines verfolgten Objekts erkannt wird"
},
"content": {
"title": "Inhalt",
"imagePlaceholder": "Ein Bild auswählen",
"imagePlaceholder": "Miniaturansicht auswählen",
"textPlaceholder": "Inhaltstext eingeben",
"imageDesc": "Ein Bild auswählen, um diese Aktion auszulösen, wenn ein ähnliches Bild erkannt wird.",
"imageDesc": "Es werden nur die letzten 100 Miniaturansichten angezeigt. Wenn Sie die gewünschte Miniaturansicht nicht finden können, überprüfen Sie bitte frühere Objekte in „Explore“ und richten Sie dort über das Menü einen Trigger ein.",
"textDesc": "Einen Text eingeben, um diese Aktion auszulösen, wenn eine ähnliche Beschreibung eines verfolgten Objekts erkannt wird.",
"error": {
"required": "Inhalt ist erforderlich."
@ -817,11 +823,12 @@
"error": {
"min": "Schwellenwert muss mindestens 0 sein",
"max": "Schwellenwert darf höchstens 1 sein"
}
},
"desc": "Legen Sie den Ähnlichkeitsschwellenwert für diesen Trigger fest. Ein höherer Schwellenwert bedeutet, dass eine größere Übereinstimmung erforderlich ist, um den Trigger auszulösen."
},
"actions": {
"title": "Aktionen",
"desc": "Standardmäßig sendet Frigate eine MQTT-Nachricht für alle Trigger. Wähle eine zusätzliche Aktion aus, die ausgeführt werden soll, wenn dieser Trigger ausgelöst wird.",
"desc": "Standardmäßig sendet Frigate für alle Trigger eine MQTT-Nachricht. Unterbezeichnungen fügen den Triggernamen zur Objektbezeichnung hinzu. Attribute sind durchsuchbare Metadaten, die separat in den Metadaten des verfolgten Objekts gespeichert werden.",
"error": {
"min": "Mindesten eine Aktion muss ausgewählt sein."
}
@ -848,6 +855,23 @@
"semanticSearch": {
"title": "Semantische Suche ist deaktiviert",
"desc": "Semantische Suche muss aktiviert sein um Auslöser nutzen zu können."
},
"wizard": {
"title": "Auslöser erstellen",
"step1": {
"description": "Konfigurieren Sie die Grundeinstellungen für Ihren Auslöser."
},
"step2": {
"description": "Legen Sie den Inhalt fest, der diese Aktion auslöst."
},
"step3": {
"description": "Konfigurieren Sie den Schwellenwert und die Aktionen für diesen Trigger."
},
"steps": {
"nameAndType": "Name und Typ",
"configureData": "Daten konfigurieren",
"thresholdAndActions": "Schwellenwert und Maßnahmen"
}
}
},
"roles": {
@ -901,7 +925,7 @@
"updateCameras": "Kameras für Rolle {{role}} aktualisiert",
"deleteRole": "Rolle {{role}} erfolgreich gelöscht",
"userRolesUpdated_one": "{{count}} Benutzer, denen diese Rolle zugewiesen wurde, wurden auf „Zuschauer“ aktualisiert, der Zugriff auf alle Kameras hat.",
"userRolesUpdated_other": ""
"userRolesUpdated_other": "{{count}} Benutzer, denen diese Rollen zugewiesen wurde, wurden auf „Zuschauer“ aktualisiert, der Zugriff auf alle Kameras habem."
},
"error": {
"createRoleFailed": "Fehler beim Erstellen der Rolle: {{errorMessage}}",
@ -979,7 +1003,8 @@
"detectionMethodDescription": "Suchen Sie die Kamera mit ONVIF (sofern unterstützt), um die URLs der Kamerastreams zu finden, oder wählen Sie manuell die Kameramarke aus, um vordefinierte URLs zu verwenden. Um eine benutzerdefinierte RTSP-URL einzugeben, wählen Sie die manuelle Methode und dann „Andere“.",
"onvifPortDescription": "Bei Kameras, die ONVIF unterstützen, ist dies in der Regel 80 oder 8080.",
"useDigestAuth": "Digest-Authentifizierung verwenden",
"useDigestAuthDescription": "Verwenden Sie die HTTP-Digest-Authentifizierung für ONVIF. Einige Kameras erfordern möglicherweise einen speziellen ONVIF-Benutzernamen/ein spezielles ONVIF-Passwort anstelle des Standard-Admin-Benutzers."
"useDigestAuthDescription": "Verwenden Sie die HTTP-Digest-Authentifizierung für ONVIF. Einige Kameras erfordern möglicherweise einen speziellen ONVIF-Benutzernamen/ein spezielles ONVIF-Passwort anstelle des Standard-Admin-Benutzers.",
"manualMode": "Manuelle Auswahl"
},
"step2": {
"description": "Suchen Sie in der Kamera nach verfügbaren Streams oder konfigurieren Sie manuelle Einstellungen basierend auf der von Ihnen ausgewählten Erkennungsmethode.",
@ -1038,10 +1063,22 @@
"profiles": "Profile",
"ptzSupport": "PTZ Unterstützung",
"autotrackingSupport": "Unterstützung für Autoverfolgung",
"presets": "Voreinstellung"
"presets": "Voreinstellung",
"rtspCandidates": "RTSP Kandidaten",
"rtspCandidatesDescription": "Die folgenden RTSP-URLs wurden bei der Kameraprobe gefunden. Testen Sie die Verbindung, um die Stream-Metadaten anzuzeigen.",
"noRtspCandidates": "Es wurden keine RTSP-URLs von der Kamera gefunden. Möglicherweise sind Ihre Anmeldedaten falsch oder die Kamera unterstützt ONVIF oder die Methode zum Abrufen von RTSP-URLs nicht. Gehen Sie zurück und geben Sie die RTSP-URL manuell ein.",
"candidateStreamTitle": "Kandidate {{number}}",
"useCandidate": "Verwenden",
"uriCopy": "Kopieren",
"uriCopied": "ULR in Zwischenablage kopiert",
"testConnection": "Test Verbindung",
"toggleUriView": "Klicken Sie hier, um die vollständige URI zu sehen",
"errors": {
"hostRequired": "Host/IP adresse wird benötigt"
}
},
"step3": {
"description": "Endgültige Validierung und Analyse vor dem Speichern Ihrer neuen Kamera. Verbinde jeden Stream vor dem Speichern.",
"description": "Konfigurieren Sie Stream-Rollen und fügen Sie zusätzliche Streams für Ihre Kamera hinzu",
"validationTitle": "Stream Validierung",
"connectAllStreams": "Verbinde alle Streams",
"reconnectionSuccess": "Wiederverbindung erfolgreich.",
@ -1078,6 +1115,90 @@
"hikvision": {
"substreamWarning": "Substream 1 ist auf eine niedrige Auflösung festgelegt. Viele Hikvision-Kameras unterstützen zusätzliche Substreams, die in den Kameraeinstellungen aktiviert werden müssen. Es wird empfohlen, diese Streams zu nutzen, sofern sie verfügbar sind."
}
},
"streamsTitle": "Kamera Stream",
"addStream": "Hizufügen Stream",
"addAnotherStream": "weiteren Stream hinzufügen",
"streamUrl": "Stream URL",
"streamUrlPlaceholder": "rtsp://benutzername:passwort@host:port/path",
"selectStream": "Auswahl Stream",
"searchCandidates": "Suche Kandidaten...",
"noStreamFound": "Kein Stream gefunden",
"url": "URL",
"resolution": "Auflösung",
"selectResolution": "Wähle Auflösung",
"quality": "Qualität",
"selectQuality": "Wähle Qualität",
"roleLabels": {
"detect": "Objekt Erkennung",
"record": "Aufnahme",
"audio": "Ton"
},
"testStream": "Verbindungstest",
"testSuccess": "Verbindungstest erfolgreich!",
"testFailed": "Verbindungstest fehlgeschlagen",
"testFailedTitle": "Test fehlgeschlagen",
"connected": "Verbunden",
"notConnected": "nicht Verbunden",
"featuresTitle": "Funktionen",
"go2rtc": "Verbindungen zur Kamera reduzieren",
"detectRoleWarning": "Mindestens ein Stream muss die Rolle „detect“ haben, um fortfahren zu können.",
"rolesPopover": {
"title": "Stream Rollen",
"detect": "Hauptfeed für die Objekterkennung.",
"record": "Speichert Segmente des Video-Feeds basierend auf den Konfigurationseinstellungen.",
"audio": "Feed für audiobasierte Erkennung."
},
"featuresPopover": {
"title": "Stream Funktionen",
"description": "Verwenden Sie go2rtc-Restreaming, um die Verbindungen zu Ihrer Kamera zu reduzieren."
}
},
"step4": {
"description": "Endgültige Validierung und Analyse vor dem Speichern Ihrer neuen Kamera. Verbinden Sie jeden Stream vor dem Speichern.",
"validationTitle": "Stream-Validierung",
"connectAllStreams": "Alle Streams verbinden",
"reconnectionSuccess": "Wiederverbindung erfolgreich.",
"reconnectionPartial": "Einige Streams konnten nicht wieder verbunden werden.",
"streamUnavailable": "Stream Vorschau nicht verfügbar",
"reload": "neu Laden",
"connecting": "Verbinden...",
"streamTitle": "Stream {{number}}",
"valid": "gültig",
"failed": "fehlgeschlagen",
"notTested": "nicht getestet",
"connectStream": "Verbinden",
"connectingStream": "Verbinden",
"disconnectStream": "getrennt",
"estimatedBandwidth": "Voraussichtliche Bandbreite",
"roles": "Rollen",
"ffmpegModule": "Stream-Kompatibilitätsmodus verwenden",
"ffmpegModuleDescription": "Wenn der Stream nach mehreren Versuchen nicht geladen wird, versuchen Sie, diese Option zu aktivieren. Wenn diese Option aktiviert ist, verwendet Frigate das ffmpeg-Modul mit go2rtc. Dies kann zu einer besseren Kompatibilität mit einigen Kamerastreams führen.",
"none": "keiner",
"error": "Fehler",
"streamValidated": "Steeam {{number}} Erfolgreich validiert",
"streamValidationFailed": "Stream {{number}} Validierung fehlgeschlagen",
"saveAndApply": "Neue Kamera speichern",
"saveError": "Ungültige Konfiguration. Bitte überprüfen Sie Ihre Einstellungen.",
"issues": {
"title": "Stream-Validierung",
"videoCodecGood": "Video codec ist {{codec}}.",
"audioCodecGood": "Audio codec ist {{codec}}.",
"resolutionHigh": "Eine Auflösung von {{resolution}} kann zu einem erhöhten Ressourcenverbrauch führen.",
"resolutionLow": "Eine Auflösung von {{resolution}} ist möglicherweise zu gering, um kleine Objekte zuverlässig zu erkennen.",
"noAudioWarning": "Für diesen Stream wurde kein Ton erkannt, die Aufzeichnungen enthalten keinen Ton.",
"audioCodecRecordError": "Der AAC-Audio-Codec ist erforderlich, um Audio in Aufnahmen zu unterstützen.",
"audioCodecRequired": "Ein Audiostream ist erforderlich, um die Audioerkennung zu unterstützen.",
"restreamingWarning": "Die Reduzierung der Verbindungen zur Kamera für den Aufzeichnungsstream kann zu einer geringfügigen Erhöhung der CPU-Auslastung führen.",
"brands": {
"reolink-rtsp": "Reolink RTSP wird nicht empfohlen. Aktivieren Sie HTTP in den Firmware-Einstellungen der Kamera und starten Sie den Assistenten neu."
},
"dahua": {
"substreamWarning": "Substream 1 ist auf eine niedrige Auflösung festgelegt. Viele Kameras von Dahua / Amcrest / EmpireTech unterstützen zusätzliche Substreams, die in den Kameraeinstellungen aktiviert werden müssen. Es wird empfohlen, diese Streams zu überprüfen und zu nutzen, sofern sie verfügbar sind."
},
"hikvision": {
"substreamWarning": "Substream 1 ist auf eine niedrige Auflösung festgelegt. Viele Hikvision-Kameras unterstützen zusätzliche Substreams, die in den Kameraeinstellungen aktiviert werden müssen. Es wird empfohlen, diese Streams zu überprüfen und zu nutzen, sofern sie verfügbar sind."
}
}
}
},

View File

@ -66,7 +66,8 @@
"failed": "Impossibile avviare l'esportazione: {{error}}",
"endTimeMustAfterStartTime": "L'ora di fine deve essere successiva all'ora di inizio",
"noVaildTimeSelected": "Nessun intervallo di tempo valido selezionato"
}
},
"view": "Visualizzazione"
},
"fromTimeline": {
"saveExport": "Salva esportazione",

View File

@ -152,7 +152,12 @@
"generateSuccess": "Immagini campione generate correttamente",
"allImagesRequired_one": "Classifica tutte le immagini. Rimane {{count}} immagine.",
"allImagesRequired_many": "Classifica tutte le immagini. Rimangono {{count}} immagini.",
"allImagesRequired_other": "Classifica tutte le immagini. Rimangono {{count}} immagini."
"allImagesRequired_other": "Classifica tutte le immagini. Rimangono {{count}} immagini.",
"modelCreated": "Modello creato correttamente. Utilizza la vista Classificazioni recenti per aggiungere immagini per gli stati mancanti, quindi addestrare il modello.",
"missingStatesWarning": {
"title": "Esempi di stati mancanti",
"description": "Non hai selezionato esempi per tutti gli stati. Il modello non verrà addestrato finché tutti gli stati non avranno immagini. Dopo aver continuato, utilizza la vista Classificazioni recenti per classificare le immagini per gli stati mancanti, quindi addestra il modello."
}
}
},
"deleteModel": {

View File

@ -56,5 +56,8 @@
"clickToSeek": "Premi per cercare in questo momento"
},
"zoomIn": "Ingrandisci",
"zoomOut": "Rimpicciolisci"
"zoomOut": "Rimpicciolisci",
"normalActivity": "Normale",
"needsReview": "Necessita revisione",
"securityConcern": "Rischio per la sicurezza"
}

View File

@ -263,7 +263,8 @@
"header": {
"zones": "Zone",
"ratio": "Rapporto",
"area": "Area"
"area": "Area",
"score": "Punteggio"
}
},
"annotationSettings": {

View File

@ -146,7 +146,12 @@
},
"generateSuccess": "Eksempelbilder ble generert",
"allImagesRequired_one": "Vennligst klassifiser alle bildene. {{count}} bilde gjenstår.",
"allImagesRequired_other": "Vennligst klassifiser alle bildene. {{count}} bilder gjenstår."
"allImagesRequired_other": "Vennligst klassifiser alle bildene. {{count}} bilder gjenstår.",
"modelCreated": "Modellen ble opprettet. Bruk visningen Nylige klassifiseringer for å legge til bilder for manglende tilstander, og tren deretter modellen.",
"missingStatesWarning": {
"title": "Manglende tilstandseksempler",
"description": "Du har ikke valgt eksempler for alle tilstander. Modellen vil ikke trenes før alle tilstander har bilder. Når du har gått videre, bruk visningen Nylige klassifiseringer til å klassifisere bilder for de manglende tilstandene, og tren deretter modellen."
}
}
},
"deleteModel": {

View File

@ -55,5 +55,8 @@
"clickToSeek": "Klikk for å gå til dette tidspunktet"
},
"zoomIn": "Zoom inn",
"zoomOut": "Zoom ut"
"zoomOut": "Zoom ut",
"normalActivity": "Normal",
"needsReview": "Trenger inspeksjon",
"securityConcern": "Sikkerhetsrisiko"
}

View File

@ -148,7 +148,12 @@
},
"generateSuccess": "Met succes gegenereerde voorbeeldafbeeldingen",
"allImagesRequired_one": "Classificeer alle afbeeldingen. {{count}} afbeelding resterend.",
"allImagesRequired_other": "Classificeer alle afbeeldingen. {{count}} afbeeldingen resterend."
"allImagesRequired_other": "Classificeer alle afbeeldingen. {{count}} afbeeldingen resterend.",
"modelCreated": "Model succesvol aangemaakt. Gebruik de weergave Recente classificaties om afbeeldingen voor ontbrekende statussen toe te voegen en train vervolgens het model.",
"missingStatesWarning": {
"title": "Voorbeelden van ontbrekende staten",
"description": "Je hebt geen voorbeelden geselecteerd voor alle staten. Het model wordt pas getraind wanneer alle staten afbeeldingen hebben. Ga je verder, gebruik dan de weergave Recente Classificaties om afbeeldingen voor de ontbrekende staten te classificeren en train daarna het model."
}
}
},
"deleteModel": {

View File

@ -55,5 +55,8 @@
"clickToSeek": "Klik om naar deze tijd te zoeken"
},
"zoomIn": "Zoom in",
"zoomOut": "Zoom uit"
"zoomOut": "Zoom uit",
"normalActivity": "Normaal",
"needsReview": "Heeft een beoordeling nodig",
"securityConcern": "Beveiligingsprobleem"
}

View File

@ -87,7 +87,10 @@
"formattedTimestampMonthDayYear": {
"12hour": "d MMMM yyyy",
"24hour": "d MMMM yyyy"
}
},
"inProgress": "W trakcie",
"invalidStartTime": "Nieprawidłowy czas rozpoczęcia",
"invalidEndTime": "Nieprawidłowy czas zakończenia"
},
"unit": {
"speed": {
@ -97,10 +100,23 @@
"length": {
"feet": "stopy",
"meters": "metry"
},
"data": {
"kbps": "kB/s",
"mbps": "MB/s",
"gbps": "GB/s",
"kbph": "kB/godz.",
"mbph": "MB/godz.",
"gbph": "GB/godz."
}
},
"label": {
"back": "Wróć"
"back": "Wróć",
"hide": "Ukryj {{item}}",
"show": "Pokaż {{item}}",
"ID": "ID",
"none": "Brak",
"all": "Wszystko"
},
"button": {
"apply": "Zastosuj",
@ -137,7 +153,8 @@
"cameraAudio": "Dźwięk kamery",
"off": "WYŁĄCZ",
"edit": "Edytuj",
"copyCoordinates": "Kopiuj współrzędne"
"copyCoordinates": "Kopiuj współrzędne",
"continue": "Kontynuuj"
},
"menu": {
"system": "System",
@ -239,7 +256,8 @@
"configurationEditor": "Edytor konfiguracji",
"help": "Pomoc",
"settings": "Ustawienia",
"export": "Eksportuj"
"export": "Eksportuj",
"classification": "Klasyfikacja"
},
"role": {
"viewer": "Przeglądający",
@ -283,5 +301,9 @@
"readTheDocumentation": "Przeczytaj dokumentację",
"information": {
"pixels": "{{area}}px"
},
"list": {
"two": "{{0}} i {{1}}",
"many": "{{items}}, oraz {{last}}"
}
}

View File

@ -3,7 +3,7 @@
"button": {
"deleteClassificationAttempts": "Usuń obrazy klasyfikacyjne",
"renameCategory": "Zmień nazwę klasy",
"deleteCategory": "Usuń klasę",
"deleteCategory": "Usuń klasyfikację",
"deleteImages": "Usuń obrazy",
"trainModel": "Przeszkol model",
"addClassification": "Dodaj klasyfikację",
@ -39,7 +39,9 @@
},
"deleteCategory": {
"title": "Usuń klasę",
"desc": "Czy na pewno chcesz usunąć klasę {{name}}? Spowoduje to trawałe usunięcie wszystkich powiązanych obrazków i konieczność ponownego trenowania modelu."
"desc": "Czy na pewno chcesz usunąć klasę {{name}}? Spowoduje to trawałe usunięcie wszystkich powiązanych obrazków i konieczność ponownego trenowania modelu.",
"minClassesTitle": "Nie można usunąć kategorii",
"minClassesDesc": "Model klasyfikacyjny musi posiadać co najmniej dwie kategorie. Dodaj inną kategorię aby możliwe było usunięcie tej kategorii."
},
"deleteModel": {
"title": "Usuń model klasyfikacji",
@ -49,10 +51,29 @@
"desc_many": "Czy na pewno chcesz usunąć {{count}} modeli? Spowoduje to trwałe usunięcie wszystkich powiązanych danych, włącznie z obrazami i danymi treningowymi. Nie można cofnąć tej operacji."
},
"edit": {
"title": "Edytuj model klasyfikacji"
"title": "Edytuj model klasyfikacji",
"descriptionObject": "Zmień typ obiektu i kryteria dla tego modelu klasyfikacji.",
"stateClassesInfo": "Uwaga: Zmiana typu klasyfikacji wymaga treningu nowego modelu."
},
"tooltip": {
"trainingInProgress": "Trwa trenowanie modelu",
"modelNotReady": "Mode nie jest gotowy do trenowania"
"modelNotReady": "Mode nie jest gotowy do trenowania",
"noChanges": "Brak zmian w zbiorze danych od czasu ostatniego treningu."
},
"deleteDatasetImages": {
"title": "Usuń obrazy z puli danych"
},
"renameCategory": {
"title": "Zmień nazwę klasy",
"desc": "Wprowadź nową nazwę dla {{name}}. Zastosowanie tej zmiany wymagać będzie treningu nowego modelu."
},
"description": {
"invalidName": "Niepoprawna nazwa. Nazwy mogą zawierać tylko: litery, cyfry, spacje, cudzysłowy, podkreślniniki i myślniki."
},
"train": {
"title": "Ostatnie Klasyfikacje"
},
"createCategory": {
"new": "Stwórz nową klasyfikację"
}
}

View File

@ -43,8 +43,8 @@
"label": "Szczegóły",
"noDataFound": "Brak szczegółów do przejrzenia",
"aria": "Przełącz widok szczegółów",
"trackedObject_one": "obiekt",
"trackedObject_other": "obiekty",
"trackedObject_one": "{{count}} obiekt",
"trackedObject_other": "{{count}} obiekty",
"noObjectDetailData": "Brak danych szczegółowych dla obiektu.",
"settings": "Ustawienia widoku szczegółów",
"alwaysExpandActive": {
@ -55,5 +55,6 @@
"objectTrack": {
"trackedPoint": "Śledzony punkt",
"clickToSeek": "Kliknij aby przewinąć do tego miejsca"
}
},
"needsReview": "Wymaga manualnego sprawdzenia"
}

View File

@ -160,7 +160,8 @@
"snapshot": "zrzut ekranu",
"video": "wideo",
"object_lifecycle": "cykl życia obiektu",
"thumbnail": "miniaturka"
"thumbnail": "miniaturka",
"tracking_details": "szczegóły śledzenia"
},
"itemMenu": {
"downloadSnapshot": {
@ -232,6 +233,29 @@
"createObjectMask": "Utwórz maskę obiektu",
"adjustAnnotationSettings": "Dostosuj ustawienia adnotacji",
"scrollViewTips": "Kliknij, aby zobaczyć najważniejsze momenty cyklu życia tego obiektu.",
"count": "{{first}} z {{second}}"
"count": "{{first}} z {{second}}",
"autoTrackingTips": "Pozycja znacznika obiektu jest niedokładna dla kamer z automatycznym śledzeniem.",
"lifecycleItemDesc": {
"visible": "Wykryto {{label}}",
"entered_zone": "{{label}} pojawił się w {{zones}}",
"active": "{{label}} poruszył się",
"stationary": "{{label}} zatrzymał się",
"attribute": {
"faceOrLicense_plate": "Wykryto {{attribute}} dla obiektu {{label}}",
"other": "{{label}} został rozpoznany jako {{attribute}}"
},
"gone": "Utracono śledzenie dla {{label}}",
"external": "Wykryto {{label}}",
"header": {
"zones": "Strefy"
}
},
"annotationSettings": {
"title": "Ustawienia adnotacji",
"showAllZones": {
"title": "Pokaż wszystkie strefy",
"desc": "Pokazuj linie stref w momencie wejścia obiektu w strefę."
}
}
}
}

View File

@ -3,7 +3,7 @@
"description": {
"addFace": "Dodaj nową kolekcję do biblioteki twarzy, przesyłając swoje pierwsze zdjęcie.",
"placeholder": "Wprowadź nazwę tej kolekcji",
"invalidName": "Nieprawidłowa nazwa. Nazwy mogą zawierać tylko litery, cyfry, spacje, apostrofy, podkreślenia oraz myślniki."
"invalidName": "Niepoprawna nazwa. Nazwy mogą zawierać tylko: litery, cyfry, spacje, cudzysłowy, podkreślniniki i myślniki."
},
"details": {
"person": "Osoba",

View File

@ -67,7 +67,7 @@
},
"manualRecording": {
"title": "Nagrywanie na żądanie",
"tips": "Rozpocznij ręczne zdarzenie w oparciu o ustawienia przechowywania nagrań tej kamery.",
"tips": "Ręcznie rozpocznij zdarzenie w oparciu o ustawienia przechowywania nagrań tej kamery.",
"playInBackground": {
"label": "Odtwarzaj w tle",
"desc": "Włącz tę opcję, aby kontynuować transmisję, gdy odtwarzacz jest ukryty."
@ -173,7 +173,17 @@
},
"noCameras": {
"buttonText": "Dodaj kamerę",
"description": "Zacznij od podłączenia kamery.",
"title": "Nie ustawiono żadnej kamery"
"description": "Zacznij od podłączenia kamery do Frigate.",
"title": "Nie skonfigurowano żadnej kamery",
"restricted": {
"title": "Brak dostępnych kamer",
"description": "Nie masz uprawnień aby przeglądać kamery w tej grupie."
}
},
"snapshot": {
"takeSnapshot": "Pobierz miniaturę",
"captureFailed": "Nie udało się wykonać migawki.",
"downloadStarted": "Pobieranie migawki rozpoczęte.",
"noVideoSource": "Brak źródeł video dostępnych do wykonania migawki."
}
}

View File

@ -13,7 +13,7 @@
"triggers": "Wyzwalacze",
"roles": "Role",
"cameraManagement": "Zarządzanie",
"cameraReview": "Przejrzyj"
"cameraReview": "Przegląd"
},
"dialog": {
"unsavedChanges": {
@ -26,7 +26,7 @@
"noCamera": "Brak Kamery"
},
"general": {
"title": "Ustawienia Ogólne",
"title": "Ustawienia interfejsu użytkownika",
"storedLayouts": {
"title": "Zapisane Układy",
"clearAll": "Wyczyść Wszystkie Układy",
@ -50,6 +50,14 @@
"playAlertVideos": {
"label": "Odtwarzaj Filmy Alarmowe",
"desc": "Domyślnie, ostatnie alerty na panelu Na Żywo są odtwarzane jako małe zapętlone filmy. Wyłącz tę opcję, aby pokazywać tylko statyczny obraz ostatnich alertów na tym urządzeniu/przeglądarce."
},
"displayCameraNames": {
"label": "Zawsze pokazuj nazwy kamer",
"desc": "Zawsze pokazuj nazwę kamery w widoku wielu kamer."
},
"liveFallbackTimeout": {
"label": "Przekroczono czas oczekiwania dla strumienia",
"desc": "W wypadku utraty strumienia wysokiej jakości, użyj trybu niskiej przepustowości po X sekund od utracenia połączenia. Sugerowana wartość: 3."
}
},
"cameraGroupStreaming": {
@ -906,5 +914,200 @@
"title": "Wyszukiwanie semantyczne jest zablokowane",
"desc": "Wyszukiwanie semantyczne musi być włączone, aby korzystać z triggerów."
}
},
"cameraWizard": {
"title": "Dodaj kamerę",
"steps": {
"streamConfiguration": "Konfiguracja strumienia"
},
"save": {
"success": "Zapisano ustawienia nowej kamery {{cameraName}}."
},
"testResultLabels": {
"resolution": "Rozdzielczość",
"fps": "kl./s"
},
"commonErrors": {
"noUrl": "Podaj poprawny adres URL",
"testFailed": "Negatywny wynik testu strumienia: {{error}}"
},
"step1": {
"cameraName": "Nazwa kamery",
"cameraNamePlaceholder": "np. drzwi_frontowe lub Ogród",
"host": "Host/Adres IP",
"port": "Port",
"username": "Nazwa użytkownika",
"usernamePlaceholder": "Opcjonalne",
"password": "Hasło",
"passwordPlaceholder": "Opcjonalne",
"selectTransport": "Wybierz protokół warstwy transportowej",
"cameraBrand": "Marka Kamery",
"selectBrand": "Wybierz markę kamery aby dostosować wzór adresu URL",
"customUrl": "Niestandardowy adres URL strumienia",
"brandInformation": "Informacje o marce",
"brandUrlFormat": "Dla kamer z formatem RTSP, formatuj URL jako: {{exampleUrl}}",
"customUrlPlaceholder": "rtsp://nazwa_użytkownika:hasło@host:port/scieżka",
"connectionSettings": "Ustawienia Połączenia",
"detectionMethod": "Metoda wykrywania strumienia",
"onvifPort": "Port ONVIF",
"manualMode": "Ręczny wybór",
"onvifPortDescription": "Dla kamer wspierających protokół ONVIF, port to zazwyczaj 80 lub 8080.",
"errors": {
"brandOrCustomUrlRequired": "Wybierz markę kamery oraz host/adres IP lub wybierz 'Inny' i podaj niestandardowy adres URL",
"nameRequired": "Wymagana nazwa kamery",
"nameLength": "Nazwa kamery musi mieć 64 lub mniej znaków",
"invalidCharacters": "Nazwa kamery zawiera niepoprawne znaki",
"nameExists": "Nazwa kamery jest już zajęta",
"customUrlRtspRequired": "Niestandardowe adresy URL muszą zaczynać się od \"rtsp://\". Ręczna konfiguracja wymagana jest dla strumieniów innych niż RTSP."
}
},
"step2": {
"testSuccess": "Test połączenia udany!",
"testFailed": "Test połączenia nieudany. Sprawdź adres źródła obrazu i spróbuj ponownie.",
"testFailedTitle": "Test Nieudany",
"streamDetails": "Szczegóły Strumienia",
"testing": {
"fetchingSnapshot": "Przygotowywanie migawki kamery..."
},
"deviceInfo": "Informacje o urządzeniu",
"manufacturer": "Producent",
"model": "Model",
"firmware": "Firmware",
"profiles": "Profile",
"ptzSupport": "Wsparcie PTZ",
"autotrackingSupport": "Wsparcie auto-śledzenia",
"uriCopy": "Kopiuj",
"uriCopied": "Adres URL skopiowano do schowka",
"testConnection": "Przetestuj połączenie",
"errors": {
"hostRequired": "Wymagany jest Host/Adres IP"
}
},
"step3": {
"streamTitle": "Strumień numer: {{number}}",
"streamUrl": "URL strumienia",
"streamUrlPlaceholder": "rtsp://nazwa_użytkownika:hasło@host:port/scieżka",
"selectStream": "Wybierz strumień",
"noStreamFound": "Nie znaleziono żadnego strumienia",
"url": "adres URL",
"resolution": "Rozdzielczość",
"selectResolution": "Wybierz rozdzielczość",
"quality": "Jakość",
"selectQuality": "wybierz jakość",
"roles": "Role",
"roleLabels": {
"detect": "Wykrywanie obiektów",
"record": "Nagrywanie",
"audio": "Dźwięk"
},
"testStream": "Przetestuj połączenie",
"testSuccess": "Test strumienia udany!",
"testFailed": "Test strumienia nieudany",
"testFailedTitle": "Test nieudany",
"connected": "Połączono",
"notConnected": "Nie połączono",
"featuresTitle": "Funkcje",
"go2rtc": "Ogranicz połączenia do kamery",
"detectRoleWarning": "Przynajmniej jeden strumień musi mieć rolę \"detect\".",
"rolesPopover": {
"title": "Role strumienia",
"detect": "Główny strumień służący do wykrywania obiektów."
},
"featuresPopover": {
"title": "Funkcje strumienia"
}
},
"step4": {
"description": "Końcowa walidacja i analiza przed zapisaniem ustawień nowej kamery. Połącz się z każdym strumieniem przed zapisaniem.",
"validationTitle": "Walidacja strumienia",
"reconnectionSuccess": "Ponowna próba połączenia udana.",
"streamUnavailable": "Podgląd strumienia niedostępny",
"connecting": "Łączenie...",
"streamTitle": "Strumień numer: {{number}}",
"valid": "Poprawny",
"connectingStream": "Łączenie",
"disconnectStream": "Rozłącz",
"estimatedBandwidth": "Przewidywana przepustowość",
"roles": "Role",
"ffmpegModuleDescription": "Jeżeli po kilku próbach strumień nadal nie ładuje się, uruchom ten tryb. Gdy włączony jest ten tryb Frigate będzie używać modułu ffmpeg z go2rtc. Może to zapewnić lepszą kompatybilność z niektórymi typami strumieniów.",
"none": "Brak",
"error": "Błąd",
"streamValidated": "Strumień numer: {{number}} przeszedł test pozytywnie.",
"streamValidationFailed": "Strumień numer: {{number}} test nieudany",
"saveAndApply": "Zapisz nową kamerę",
"saveError": "Nieprawidłowa konfiguracja. Sprawdź ustawienia.",
"issues": {
"title": "Walidacja strumienia",
"audioCodecGood": "Kodek dźwięku to {{codec}}.",
"resolutionHigh": "Rozdzielczość {{resolution}} może spowodować większe zużycie zasobów.",
"resolutionLow": "Rozdzielczość {{resolution}} może okazać się za mała aby poprawnie wykrywać małe obiekty.",
"noAudioWarning": "Nie wykryto dźwięku dla tego strumienia, nagrania również nie będą zawierać dźwięku.",
"audioCodecRecordError": "Kodek AAC jest wymagany aby uwzględnić dźwięk w nagraniach.",
"audioCodecRequired": "Strumień audio jest wymagany aby umożliwić wykrywanie dźwięku.",
"restreamingWarning": "Ograniczenie ilości połączeń do strumienia nagrań może delikatnie zwiększyć użycie procesora",
"brands": {
"reolink-rtsp": "Strumień RTSP dla kamer firmy Reolink nie jest rekomendowany. Uruchom strumień HTTP w oprogramowaniu kamery i uruchom kreator jeszcze raz."
}
}
}
},
"cameraManagement": {
"title": "Zarządzaj kamerami",
"addCamera": "Dodaj nową kamerę",
"editCamera": "Edytuj kamerę:",
"selectCamera": "Wybierz kamerę",
"backToSettings": "Powrót do ustawień kamery",
"streams": {
"title": "Włącz / Wyłącz kamery"
},
"cameraConfig": {
"add": "Dodaj kamerę",
"edit": "Edytuj kamerę",
"description": "Skonfiguruj ustawienia kamery, wliczając strumienie wejściowe i ich role.",
"name": "Nazwa kamery",
"nameRequired": "Wymagana nazwa kamery",
"nameLength": "Nazwa kamery musi mieć 64 lub mniej znaków.",
"namePlaceholder": "np. drzwi_frontowe lub Ogród",
"enabled": "Włączone",
"ffmpeg": {
"inputs": "Strumienie wejściowe",
"path": "Ścieżka strumienia",
"pathRequired": "Ścieżka strumienia jest wymagana",
"pathPlaceholder": "rtsp://...",
"roles": "Role",
"rolesRequired": "Wymagana jest przynajmniej jedna rola",
"rolesUnique": "Każda rola ('audio', 'detect', 'record') może zostać przypisana tylko raz",
"addInput": "Dodaj strumień wejściowy",
"removeInput": "Usuń strumień wejściowy",
"inputsRequired": "Wymagany jest przynajmniej jeden strumień wejściowy"
},
"go2rtcStreams": "Strumienie go2rtc",
"streamUrls": "Adresy URL strumieni",
"addUrl": "Dodaj adres URL",
"addGo2rtcStream": "Dodaj strumień go2rtc",
"toast": {
"success": "Zapisano poprawnie kamerę {{cameraName}}"
}
}
},
"cameraReview": {
"review": {
"alerts": "Alerty ",
"detections": "Wykrycia "
},
"reviewClassification": {
"title": "Przegląd klasyfikacji",
"noDefinedZones": "Nie zdefiniowano żadnych stref dla tej kamery.",
"objectDetectionsTips": "Wszystkie obiekty w kategorii {{detectionsLabels}} wykryte przez kamerę {{cameraName}} będą wyświetlane jako Wykrycia niezależnie od strefy w której zostały wykryte.",
"zoneObjectDetectionsTips": {
"text": "Wszystkie obiekty w kategorii {{detectionsLabels}} nieskategoryzowane w strefie {{zone}} kamery {{cameraName}} będą wyświetlane jako Wykrycia.",
"notSelectDetections": "Wszystkie obiekty w kategorii {{detectionsLabels}} wykryte w strefie {{zone}} kamery {{cameraName}} nieskategoryzowane jako Alerty będą wyświetlane jako Wykrycia, niezależnie w której strefie zostaną wykryte.",
"regardlessOfZoneObjectDetectionsTips": "Wszystkie obiekty w kategorii {{detectionsLabels}} nieskategoryzowane dla kamery {{cameraName}} będą wyświetlane jako Wykrycia niezależnie w której strefie zostaną wykryte."
},
"unsavedChanges": "Niezapisane ustawienia klasyfikacji przeglądu dla kamery {{camera}}",
"selectAlertsZones": "Wybierz strefę dla Alertów",
"selectDetectionsZones": "Wybierz strefę dla Wykryć",
"limitDetections": "Ogranicz detekcje do konkretnych stref"
}
}
}

View File

@ -42,7 +42,11 @@
"gpuMemory": "Pamięć GPU",
"gpuUsage": "Użycie GPU",
"npuUsage": "Użycie NPU",
"npuMemory": "Pamięć NPU"
"npuMemory": "Pamięć NPU",
"intelGpuWarning": {
"message": "Statystyki układu graficznego niedostępne",
"description": "W narzędziach telemetrii i statystyki układów graficznych firmy Intel (intel_gpu_top) znajduje się znany błąd powodujący raportowanie użycia układu graficznego wynoszące 0%, nawet gdy akceleracja sprzętowa i wykrywanie obiektów działa prawidłowo korzystając ze zintegrowanego układu graficznego. To nie jest błąd oprogramowania Frigate. Restart hosta może chwilowo rozwiązać problem i pozwolić na weryfikację działania układu graficznego. Ten bład nie wpływa na wydajność systemu,"
}
},
"title": "Ogólne",
"detector": {

View File

@ -152,7 +152,12 @@
"generateSuccess": "Imaginile de exemplu au fost generate cu succes",
"allImagesRequired_one": "Te rog să clasifici toate imaginile. {{count}} imagine rămasă.",
"allImagesRequired_few": "Te rog să clasifici toate imaginile. {{count}} imagini rămase.",
"allImagesRequired_other": "Te rog să clasifici toate imaginile. {{count}} de imagini rămase."
"allImagesRequired_other": "Te rog să clasifici toate imaginile. {{count}} de imagini rămase.",
"modelCreated": "Modelul a fost creat cu succes. Folosește vizualizarea Clasificări recente pentru a adăuga imagini pentru stările lipsă, apoi antrenează modelul.",
"missingStatesWarning": {
"title": "Exemple de stări lipsă",
"description": "Nu ai selectat exemple pentru toate stările. Modelul nu va fi antrenat până când toate stările nu au imagini. După continuare, folosește vizualizarea Clasificări recente pentru a clasifica imagini pentru stările lipsă, apoi antrenează modelul."
}
}
},
"deleteModel": {

View File

@ -55,5 +55,8 @@
"clickToSeek": "Apasă pentru a naviga la acest moment"
},
"zoomIn": "Mărește",
"zoomOut": "Micșorează"
"zoomOut": "Micșorează",
"normalActivity": "Normal",
"needsReview": "Necesită revizuire",
"securityConcern": "Potențială problemă de securitate"
}

View File

@ -152,7 +152,12 @@
"generateSuccess": "Зразки зображень успішно створено",
"allImagesRequired_one": "Будь ласка, класифікуйте всі зображення. Залишилося {{count}} зображення.",
"allImagesRequired_few": "Будь ласка, класифікуйте всі зображення. Залишилося зображень: {{count}}.",
"allImagesRequired_many": "Будь ласка, класифікуйте всі зображення. Залишилося зображень: {{count}}."
"allImagesRequired_many": "Будь ласка, класифікуйте всі зображення. Залишилося зображень: {{count}}.",
"modelCreated": "Модель успішно створено. Використовуйте режим перегляду «Нещодавні класифікації», щоб додати зображення для відсутніх станів, а потім навчіть модель.",
"missingStatesWarning": {
"title": "Приклади відсутніх станів",
"description": "Ви не вибрали приклади для всіх станів. Модель не буде навчена, доки всі стани не матимуть зображень. Після продовження скористайтеся поданням «Нещодавні класифікації», щоб класифікувати зображення для відсутніх станів, а потім навчіть модель."
}
}
},
"deleteModel": {

View File

@ -55,5 +55,8 @@
"clickToSeek": "Натисніть, щоб перейти до цього часу"
},
"zoomIn": "Збільшити масштаб",
"zoomOut": "Зменшити масштаб"
"zoomOut": "Зменшити масштаб",
"normalActivity": "Звичайний",
"needsReview": "Потребує перегляду",
"securityConcern": "Проблема безпеки"
}

View File

@ -1299,7 +1299,8 @@ function ObjectDetailsTab({
</div>
</div>
{search.data.type === "object" &&
{isAdmin &&
search.data.type === "object" &&
config?.plus?.enabled &&
search.end_time != undefined &&
search.has_snapshot && (

View File

@ -38,6 +38,7 @@ import { isDesktop, isIOS, isMobileOnly, isSafari } from "react-device-detect";
import { useApiHost } from "@/api";
import ImageLoadingIndicator from "@/components/indicators/ImageLoadingIndicator";
import ObjectTrackOverlay from "../ObjectTrackOverlay";
import { useIsAdmin } from "@/hooks/use-is-admin";
type TrackingDetailsProps = {
className?: string;
@ -777,6 +778,7 @@ function LifecycleIconRow({
const { data: config } = useSWR<FrigateConfig>("config");
const [isOpen, setIsOpen] = useState(false);
const navigate = useNavigate();
const isAdmin = useIsAdmin();
const aspectRatio = useMemo(() => {
if (!config) {
@ -993,7 +995,7 @@ function LifecycleIconRow({
<div className="ml-3 flex-shrink-0 px-1 text-right text-xs text-primary-variant">
<div className="flex flex-row items-center gap-3">
<div className="whitespace-nowrap">{formattedEventTimestamp}</div>
{(config?.plus?.enabled || item.data.box) && (
{((isAdmin && config?.plus?.enabled) || item.data.box) && (
<DropdownMenu open={isOpen} onOpenChange={setIsOpen}>
<DropdownMenuTrigger>
<div className="rounded p-1 pr-2" role="button">
@ -1002,7 +1004,7 @@ function LifecycleIconRow({
</DropdownMenuTrigger>
<DropdownMenuPortal>
<DropdownMenuContent>
{config?.plus?.enabled && (
{isAdmin && config?.plus?.enabled && (
<DropdownMenuItem
className="cursor-pointer"
onSelect={async () => {

View File

@ -20,6 +20,7 @@ import ImageLoadingIndicator from "@/components/indicators/ImageLoadingIndicator
import { baseUrl } from "@/api/baseUrl";
import { getTranslatedLabel } from "@/utils/i18n";
import useImageLoaded from "@/hooks/use-image-loaded";
import { useIsAdmin } from "@/hooks/use-is-admin";
export type FrigatePlusDialogProps = {
upload?: Event;
@ -57,7 +58,9 @@ export function FrigatePlusDialog({
);
const [imgRef, imgLoaded, onImgLoad] = useImageLoaded();
const isAdmin = useIsAdmin();
const showCard =
isAdmin &&
!!upload &&
upload.data.type === "object" &&
upload.plus_id !== "not_enabled" &&

View File

@ -20,6 +20,7 @@ import { cn } from "@/lib/utils";
import { ASPECT_VERTICAL_LAYOUT, RecordingPlayerError } from "@/types/record";
import { useTranslation } from "react-i18next";
import ObjectTrackOverlay from "@/components/overlay/ObjectTrackOverlay";
import { useIsAdmin } from "@/hooks/use-is-admin";
// Android native hls does not seek correctly
const USE_NATIVE_HLS = false;
@ -83,6 +84,7 @@ export default function HlsVideoPlayer({
}: HlsVideoPlayerProps) {
const { t } = useTranslation("components/player");
const { data: config } = useSWR<FrigateConfig>("config");
const isAdmin = useIsAdmin();
// for detail stream context in History
const currentTime = currentTimeOverride;
@ -285,7 +287,7 @@ export default function HlsVideoPlayer({
volume: true,
seek: true,
playbackRate: true,
plusUpload: config?.plus?.enabled == true,
plusUpload: isAdmin && config?.plus?.enabled == true,
fullscreen: supportsFullscreen,
}}
setControlsOpen={setControlsOpen}

View File

@ -13,6 +13,7 @@ import { useTranslation } from "react-i18next";
import { Event } from "@/types/event";
import { FrigateConfig } from "@/types/frigateConfig";
import { useState } from "react";
import { useIsAdmin } from "@/hooks/use-is-admin";
type EventMenuProps = {
event: Event;
@ -35,6 +36,7 @@ export default function EventMenu({
const navigate = useNavigate();
const { t } = useTranslation("views/explore");
const [isOpen, setIsOpen] = useState(false);
const isAdmin = useIsAdmin();
const handleObjectSelect = () => {
if (isSelected) {
@ -85,7 +87,8 @@ export default function EventMenu({
</a>
</DropdownMenuItem>
{event.has_snapshot &&
{isAdmin &&
event.has_snapshot &&
event.plus_id == undefined &&
event.data.type == "object" &&
config?.plus?.enabled && (