mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-10-15 19:22:52 +03:00
Compare commits
11
Commits
f477ef41a0
...
2ad0bdcc21
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2ad0bdcc21 | ||
|
|
cba13ebe0b | ||
|
|
342b3a5df0 | ||
|
|
b820b09a15 | ||
|
|
bb99b22db6 | ||
|
|
74fba4a3e9 | ||
|
|
2ad0630869 | ||
|
|
70294aae59 | ||
|
|
714d96207b | ||
|
|
f3c09ae169 | ||
|
|
f6596ac7b0 |
@@ -339,7 +339,7 @@ detect:
|
||||
# especially when using separate streams for detect and record.
|
||||
# Use this setting to make the timeline bounding boxes more closely align
|
||||
# with the recording. The value can be positive or negative.
|
||||
# TIP: Imagine there is an tracked object clip with a person walking from left to right.
|
||||
# TIP: Imagine there is a tracked object clip with a person walking from left to right.
|
||||
# If the tracked object lifecycle bounding box is consistently to the left of the person
|
||||
# then the value should be decreased. Similarly, if a person is walking from
|
||||
# left to right and the bounding box is consistently ahead of the person
|
||||
|
||||
@@ -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](/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.
|
||||
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 displayed. The `min_volume` parameter should be set to the minimum the `RMS` level required to run audio detection.
|
||||
|
||||
:::tip
|
||||
|
||||
|
||||
@@ -6,6 +6,7 @@ title: Camera Autotracking
|
||||
import ConfigTabs from "@site/src/components/ConfigTabs";
|
||||
import TabItem from "@theme/TabItem";
|
||||
import NavPath from "@site/src/components/NavPath";
|
||||
import FaqItem from "@site/src/components/FaqItem";
|
||||
|
||||
An ONVIF-capable, PTZ (pan-tilt-zoom) camera that supports relative movement within the field of view (FOV) can be configured to automatically track moving objects and keep them in the center of the frame.
|
||||
|
||||
@@ -187,30 +188,96 @@ In security and surveillance, it's common to use "spotter" cameras in combinatio
|
||||
|
||||
## Troubleshooting and FAQ
|
||||
|
||||
### The autotracker loses track of my object. Why?
|
||||
### Camera Compatibility
|
||||
|
||||
<FaqItem id="which-ptz-camera-should-i-use-for-autotracking" question="Which PTZ camera should I use for autotracking?">
|
||||
|
||||
See the community-maintained list of [ONVIF PTZ camera recommendations](cameras.md#onvif-ptz-camera-recommendations) for cameras and brands reported to work (and not work) with autotracking. This is not an exhaustive list that is frequently updated, so other cameras not listed may also work well. Frigate's autotracking was developed with a Dahua SD1A404XB-GNR (now sold as the EmpireTech PTZ1A4M-4X-S2), and Dahua / EmpireTech PTZs are the most consistently reported as working well.
|
||||
|
||||
When comparing models:
|
||||
|
||||
- Verify ONVIF support first. See [Checking ONVIF camera support](#checking-onvif-camera-support) above.
|
||||
- Favor a camera with a fast PTZ motor. Cameras with slow motors may fail [calibration](#calibration) and will struggle to keep up with objects that move across the field of view quickly.
|
||||
|
||||
</FaqItem>
|
||||
|
||||
<FaqItem id="does-autotracking-work-with-reolink-ptz-cameras" question="Does autotracking work with Reolink PTZ cameras?">
|
||||
|
||||
No. Reolink cameras (including the TrackMix series) lack the ONVIF FOV RelativeMove firmware support that Frigate's autotracker requires, so autotracking will not work with any current Reolink PTZ. Their video streams and basic PTZ controls still work in Frigate. If you want object tracking on a Reolink PTZ, you will need to use the tracking feature built into the camera's firmware, which is proprietary and operates independently of Frigate.
|
||||
|
||||
</FaqItem>
|
||||
|
||||
<FaqItem id="im-seeing-an-error-in-the-logs-that-my-camera-is-still-in-onvif-moving-status-what-does-this-mean" question={"I'm seeing an error in the logs that my camera \"is still in ONVIF 'MOVING' status.\" What does this mean?"}>
|
||||
|
||||
There are two possible known reasons for this (and perhaps others yet unknown): a slow PTZ motor or buggy camera firmware. Frigate uses an ONVIF parameter provided by the camera, `MoveStatus`, to determine when the PTZ's motor is moving or idle. According to some users, Hikvision PTZs (even with the latest firmware), are not updating this value after PTZ movement. Unfortunately there is no workaround to this bug in Hikvision firmware, so autotracking will not function correctly and should be disabled in your config. This may also be the case with other non-Hikvision cameras utilizing Hikvision firmware, such as some Annke models. In rare cases the vendor may provide fixed firmware on request; for example, Annke has supplied firmware that resolves this for the CZ504 (see the [camera recommendations list](cameras.md#onvif-ptz-camera-recommendations)).
|
||||
|
||||
</FaqItem>
|
||||
|
||||
<FaqItem id="calibration-seems-to-have-completed-but-the-camera-is-not-actually-moving-to-track-my-object-why" question="Calibration seems to have completed, but the camera is not actually moving to track my object. Why?">
|
||||
|
||||
Some cameras have firmware that reports that FOV RelativeMove, the ONVIF command that Frigate uses for autotracking, is supported. However, if the camera does not pan or tilt when an object comes into the required zone, your camera's firmware does not actually support FOV RelativeMove. One such camera is the Uniview IPC672LR-AX4DUPK. It actually moves its zoom motor instead of panning and tilting and does not follow the ONVIF standard whatsoever.
|
||||
|
||||
</FaqItem>
|
||||
|
||||
### Calibration Issues
|
||||
|
||||
<FaqItem id="i-tried-calibrating-my-camera-but-the-logs-show-that-it-is-stuck-at-0-and-frigate-is-not-starting-up" question="I tried calibrating my camera, but the logs show that it is stuck at 0% and Frigate is not starting up.">
|
||||
|
||||
This is often caused by the same reason as the "MOVING" status error above - the `MoveStatus` ONVIF parameter is not changing due to a bug in your camera's firmware. Also, see the note above: Frigate's web UI and all other cameras will be unresponsive while calibration is in progress. This is expected and normal. But if you don't see log entries every few seconds for calibration progress, your camera is not compatible with autotracking.
|
||||
|
||||
</FaqItem>
|
||||
|
||||
<FaqItem id="frigate-reports-an-error-saying-that-calibration-has-failed-why" question="Frigate reports an error saying that calibration has failed. Why?">
|
||||
|
||||
Calibration measures the amount of time it takes for Frigate to make a series of movements with your PTZ. This error message is recorded in the log if these values are too high for Frigate to support calibrated autotracking. This is often the case when your camera's motor or network connection is too slow or your camera's firmware doesn't report the motor status in a timely manner.
|
||||
|
||||
Some things to try:
|
||||
|
||||
- If your camera's firmware has a PTZ or motor speed setting, set it to the fastest available speed and calibrate again.
|
||||
- Run without calibration: remove the `movement_weights` line from your config, set `calibrate_on_startup` to `False`, and restart.
|
||||
|
||||
If calibration consistently fails, this often means your camera's motor is too slow and autotracking will behave unpredictably or won't be able to keep up with moving objects.
|
||||
|
||||
</FaqItem>
|
||||
|
||||
<FaqItem id="autotracking-is-erratic-or-moves-the-camera-in-the-wrong-direction" question="Autotracking is erratic, moves the camera in the wrong direction, or zooms past my object. Why?">
|
||||
|
||||
Frigate uses the `movement_weights` measured during calibration to predict how far the camera needs to move to keep an object centered, so inaccurate values produce movements that don't seem to make sense: overshooting, moving the opposite direction, or zooming in on an object's last known position and losing it entirely. This is almost always a calibration issue.
|
||||
|
||||
- Remove the `movement_weights` entry from your config and restart Frigate to run without calibration. If tracking improves, try recalibrating.
|
||||
- Recalibrate several times. The `movement_weights` values should be close to each other after each run. If they vary significantly between runs, your camera may not be reporting its motor status reliably, and you may get better results without calibration.
|
||||
- If you are using zooming, a high `zoom_factor` can cause the camera to zoom in too far and lose the object. Try a lower value.
|
||||
|
||||
Remember to recalibrate whenever you change your `return_preset`, change your camera's detect `fps`, or enable zooming after calibrating with it disabled.
|
||||
|
||||
</FaqItem>
|
||||
|
||||
### Tracking Behavior
|
||||
|
||||
<FaqItem id="the-autotracker-loses-track-of-my-object-why" question="The autotracker loses track of my object. Why?">
|
||||
|
||||
There are many reasons this could be the case. If you are using experimental zooming, your `zoom_factor` value might be too high, the object might be traveling too quickly, the scene might be too dark, there are not enough details in the scene (for example, a PTZ looking down on a driveway or other monotone background without a sufficient number of hard edges or corners), or the scene is otherwise less than optimal for Frigate to maintain tracking.
|
||||
|
||||
Your camera's shutter speed may also be set too low so that blurring occurs with motion. Check your camera's firmware to see if you can increase the shutter speed.
|
||||
|
||||
Watching Frigate's debug view can help to determine a possible cause. The autotracked object will have a thicker colored box around it.
|
||||
Watching Frigate's debug view can help to determine a possible cause. The autotracked object will have a thicker colored box around it. If the camera consistently zooms in on the object and then loses it, see [Autotracking is erratic, moves the camera in the wrong direction, or zooms past my object. Why?](#autotracking-is-erratic-or-moves-the-camera-in-the-wrong-direction) above.
|
||||
|
||||
### I'm seeing an error in the logs that my camera "is still in ONVIF 'MOVING' status." What does this mean?
|
||||
</FaqItem>
|
||||
|
||||
There are two possible known reasons for this (and perhaps others yet unknown): a slow PTZ motor or buggy camera firmware. Frigate uses an ONVIF parameter provided by the camera, `MoveStatus`, to determine when the PTZ's motor is moving or idle. According to some users, Hikvision PTZs (even with the latest firmware), are not updating this value after PTZ movement. Unfortunately there is no workaround to this bug in Hikvision firmware, so autotracking will not function correctly and should be disabled in your config. This may also be the case with other non-Hikvision cameras utilizing Hikvision firmware.
|
||||
|
||||
### I tried calibrating my camera, but the logs show that it is stuck at 0% and Frigate is not starting up.
|
||||
|
||||
This is often caused by the same reason as above - the `MoveStatus` ONVIF parameter is not changing due to a bug in your camera's firmware. Also, see the note above: Frigate's web UI and all other cameras will be unresponsive while calibration is in progress. This is expected and normal. But if you don't see log entries every few seconds for calibration progress, your camera is not compatible with autotracking.
|
||||
|
||||
### I'm seeing this error in the logs: "Autotracker: motion estimator couldn't get transformations". What does this mean?
|
||||
<FaqItem id="im-seeing-this-error-in-the-logs-autotracker-motion-estimator-couldnt-get-transformations-what-does-this-mean" question={"I'm seeing this error in the logs: \"Autotracker: motion estimator couldn't get transformations\". What does this mean?"}>
|
||||
|
||||
To maintain object tracking during PTZ moves, Frigate tracks the motion of your camera based on the details of the frame. If you are seeing this message, it could mean that your `zoom_factor` may be set too high, the scene around your detected object does not have enough details (like hard edges or color variations), or your camera's shutter speed is too slow and motion blur is occurring. Try reducing `zoom_factor`, finding a way to alter the scene around your object, or changing your camera's shutter speed.
|
||||
|
||||
### Calibration seems to have completed, but the camera is not actually moving to track my object. Why?
|
||||
</FaqItem>
|
||||
|
||||
Some cameras have firmware that reports that FOV RelativeMove, the ONVIF command that Frigate uses for autotracking, is supported. However, if the camera does not pan or tilt when an object comes into the required zone, your camera's firmware does not actually support FOV RelativeMove. One such camera is the Uniview IPC672LR-AX4DUPK. It actually moves its zoom motor instead of panning and tilting and does not follow the ONVIF standard whatsoever.
|
||||
<FaqItem id="why-does-object-detection-pause-briefly-when-the-camera-moves" question="Why does object detection pause briefly when the camera moves?">
|
||||
|
||||
### Frigate reports an error saying that calibration has failed. Why?
|
||||
When the PTZ moves, the entire frame changes at once. Frigate's motion detection treats sudden scene-wide changes (like a lightning flash, an infrared mode switch, or a camera move) specially and pauses detection momentarily until the scene stabilizes. This is expected and normal, and detection resumes shortly after the camera stops moving. If detection does not resume once the camera is stationary, use the [debug view](/usage/live#the-single-camera-view) to see what is happening.
|
||||
|
||||
Calibration measures the amount of time it takes for Frigate to make a series of movements with your PTZ. This error message is recorded in the log if these values are too high for Frigate to support calibrated autotracking. This is often the case when your camera's motor or network connection is too slow or your camera's firmware doesn't report the motor status in a timely manner. You can try running without calibration (just remove the `movement_weights` line from your config and restart), but if calibration fails, this often means that autotracking will behave unpredictably.
|
||||
</FaqItem>
|
||||
|
||||
<FaqItem id="can-i-turn-autotracking-on-and-off-automatically" question="Can I turn autotracking on and off automatically?">
|
||||
|
||||
Yes. Autotracking can be toggled per camera at runtime over MQTT with the [`frigate/<camera_name>/ptz_autotracker/set`](../integrations/mqtt.md#frigatecamera_nameptz_autotrackerset) topic, and the [Home Assistant integration](../integrations/home-assistant.md) exposes a switch for it. This pairs well with the "spotter" camera automations described in [Usage applications](#usage-applications) above, for example only enabling autotracking at night or when nobody is home.
|
||||
|
||||
</FaqItem>
|
||||
|
||||
@@ -156,7 +156,7 @@ Reolink has many different camera models with inconsistently supported features
|
||||
| 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:
|
||||
Frigate works much better with newer Reolink cameras that are setup with the below options:
|
||||
|
||||
If available, recommended settings are:
|
||||
|
||||
@@ -165,7 +165,7 @@ If available, recommended settings are:
|
||||
|
||||
#### 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.
|
||||
The Add Camera Wizard is the recommended way to add a standard Reolink camera. Before starting, make sure [HTTP is enabled](https://support.reolink.com/articles/360003452893-How-to-Access-Reolink-Cameras-NVRs-Home-Hub-Locally-via-Web-Browsers/) 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.
|
||||
@@ -192,7 +192,7 @@ Reolink's latest cameras support two way audio via go2rtc and other applications
|
||||
|
||||
NOTE: The RTSP stream can not be prefixed with `ffmpeg:`, as go2rtc needs to handle the stream to support two way audio.
|
||||
|
||||
Ensure HTTP is enabled in the camera's advanced network settings. To use two way talk with Frigate, see the [Live view documentation](/configuration/live#two-way-talk).
|
||||
Ensure [HTTP is enabled](https://support.reolink.com/articles/360003452893-How-to-Access-Reolink-Cameras-NVRs-Home-Hub-Locally-via-Web-Browsers/) in the camera's advanced network settings. To use two way talk with Frigate, see the [Live view documentation](/configuration/live#two-way-talk).
|
||||
|
||||
:::
|
||||
|
||||
@@ -204,7 +204,7 @@ go2rtc:
|
||||
- "ffmpeg:http://reolink_ip/flv?port=1935&app=bcs&stream=channel0_main.bcs&user=username&password=password#video=copy#audio=copy#audio=opus"
|
||||
your_reolink_camera_sub:
|
||||
- "ffmpeg:http://reolink_ip/flv?port=1935&app=bcs&stream=channel0_ext.bcs&user=username&password=password"
|
||||
# example for connectin to a Reolink camera that supports two way talk
|
||||
# example for connecting to a Reolink camera that supports two way talk
|
||||
your_reolink_camera_twt:
|
||||
- "ffmpeg:http://reolink_ip/flv?port=1935&app=bcs&stream=channel0_main.bcs&user=username&password=password#video=copy#audio=copy#audio=opus"
|
||||
- "rtsp://username:password@reolink_ip/Preview_01_sub"
|
||||
@@ -249,7 +249,7 @@ cameras:
|
||||
|
||||
:::note
|
||||
|
||||
Unifi G5s cameras and newer need a Unifi Protect server to enable rtsps stream, it's not posible to enable it in standalone mode.
|
||||
Unifi G5s cameras and newer need a Unifi Protect server to enable rtsps stream, it's not possible to enable it in standalone mode.
|
||||
|
||||
:::
|
||||
|
||||
|
||||
@@ -6,6 +6,7 @@ title: Face Recognition
|
||||
import ConfigTabs from "@site/src/components/ConfigTabs";
|
||||
import TabItem from "@theme/TabItem";
|
||||
import NavPath from "@site/src/components/NavPath";
|
||||
import FaqItem from "@site/src/components/FaqItem";
|
||||
|
||||
Face recognition identifies known individuals by matching detected faces with previously learned facial data. When a known `person` is recognized, their name will be added as a `sub_label`. This information is included in the UI, filters, as well as in notifications.
|
||||
|
||||
@@ -151,6 +152,14 @@ Follow these steps to begin:
|
||||
|
||||
## Creating a Robust Training Set
|
||||
|
||||
:::tip
|
||||
|
||||
**The short version:** Start with a few clear, front-facing photos of each person. As faces are detected in the Recent Recognitions tab, train clear images that scored lower, adding variety (different angles, lighting, and expressions) slowly. Diversity matters far more than volume, and low-quality images hurt recognition more than they help.
|
||||
|
||||
For a step-by-step narrative of these best practices (and the same principles applied to state and object classification), see the [Frigate Tips: Best Practices for Training](https://github.com/blakeblackshear/frigate/discussions/21374) discussion.
|
||||
|
||||
:::
|
||||
|
||||
The number of images needed for a sufficient training set for face recognition varies depending on several factors:
|
||||
|
||||
- Diversity of the dataset: A dataset with diverse images, including variations in lighting, pose, and facial expressions, will require fewer images per person than a less diverse dataset.
|
||||
@@ -181,9 +190,27 @@ When choosing images to include in the face training set it is recommended to al
|
||||
|
||||
The Recent Recognitions tab in the face library displays recent face recognition attempts. Detected face images are grouped according to the person they were identified as potentially matching.
|
||||
|
||||
Each face image is labeled with a name (or `Unknown`) along with the confidence score of the recognition attempt. While each image can be used to train the system for a specific person, not all images are suitable for training.
|
||||
Each face image is labeled with a name (or `Unknown`) along with the confidence score of that recognition attempt. Images are grouped by the person they were matched against, not by who they actually are, so a group labeled with a person's name can contain a crop that is really someone else but happened to score as a partial match. The name and score shown on each individual crop describe that single attempt.
|
||||
|
||||
Refer to the guidelines below for best practices on selecting images for training.
|
||||
While each image can be used to train the system for a specific person, not all images are suitable for training. Refer to the guidelines below for best practices on selecting images for training.
|
||||
|
||||
### How Frigate Decides Who a Person Is
|
||||
|
||||
Recognition does not happen one frame at a time. While a `person` is in view, Frigate runs face recognition on many frames, not just a single frame. The final `sub_label` is decided from all of those attempts together, weighted by the area of each face (larger, closer faces count more), not from any single frame.
|
||||
|
||||
This has a few practical consequences:
|
||||
|
||||
- A handful of wrong guesses on blurry or distant frames usually do not change the result. If Frigate sees a person as "Tom, Tom, Sam, Tom, Tom," it will still conclude the person was Tom.
|
||||
- The goal is not for every individual face crop to be correct. The goal is for each person to be recognized correctly overall, across all the faces captured while they were present.
|
||||
- A single very high confidence match will not by itself assign a sub label. Recognition must be consistent. See [I see scores above the threshold in the Recent Recognitions tab, but a sub label wasn't assigned?](#i-see-scores-above-the-threshold-in-the-recent-recognitions-tab-but-a-sub-label-wasnt-assigned) below.
|
||||
|
||||
### Which Faces Are Worth Training?
|
||||
|
||||
Whether a face is worth training has little to do with what it was recognized as. A crop is a good training candidate when all of these are true:
|
||||
|
||||
- It did not already score high and correctly. Faces that are already recognized confidently add little and increase the risk of over-fitting.
|
||||
- It is clear enough to be useful: not blurry, not heavily off-axis, not infrared (gray-scale). If it is hard for you to make out the face, it will not help the model.
|
||||
- It adds something new: a different angle, lighting, expression, or distance than what you already have.
|
||||
|
||||
### Step 1 - Building a Strong Foundation
|
||||
|
||||
@@ -199,7 +226,9 @@ Once front-facing images are performing well, start choosing slightly off-angle
|
||||
|
||||
## FAQ
|
||||
|
||||
### How do I debug Face Recognition issues?
|
||||
### Getting Recognition Working
|
||||
|
||||
<FaqItem id="how-do-i-debug-face-recognition-issues" question="How do I debug Face Recognition issues?">
|
||||
|
||||
Start with the [Usage](#usage) section and re-read the [Model Requirements](#model-requirements) above.
|
||||
|
||||
@@ -217,21 +246,47 @@ Start with the [Usage](#usage) section and re-read the [Model Requirements](#mod
|
||||
- Make sure you have trained at least one face per the recommendations above.
|
||||
- Adjust `recognition_threshold` settings per the suggestions [above](#advanced-configuration).
|
||||
|
||||
### Detection does not work well with blurry images?
|
||||
</FaqItem>
|
||||
|
||||
Accuracy is definitely a going to be improved with higher quality cameras / streams. It is important to look at the DORI (Detection Observation Recognition Identification) range of your camera, if that specification is posted. This specification explains the distance from the camera that a person can be detected, observed, recognized, and identified. The identification range is the most relevant here, and the distance listed by the camera is the furthest that face recognition will realistically work.
|
||||
<FaqItem id="does-face-recognition-run-on-the-recording-stream" question="Does face recognition run on the recording stream?">
|
||||
|
||||
Face recognition does not run on the recording stream, this would be suboptimal for many reasons:
|
||||
|
||||
1. The latency of accessing the recordings means the notifications would not include the names of recognized people because recognition would not complete until after.
|
||||
2. The embedding models used run on a set image size, so larger images will be scaled down to match this anyway.
|
||||
3. Motion clarity is much more important than extra pixels, over-compression and motion blur are much more detrimental to results than resolution.
|
||||
|
||||
</FaqItem>
|
||||
|
||||
### Improving Accuracy and Training
|
||||
|
||||
<FaqItem id="detection-does-not-work-well-with-blurry-images" question="Detection does not work well with blurry images?">
|
||||
|
||||
Accuracy is definitely going to be improved with higher quality cameras / streams. It is important to look at the DORI (Detection Observation Recognition Identification) range of your camera, if that specification is posted. This specification explains the distance from the camera that a person can be detected, observed, recognized, and identified. The identification range is the most relevant here, and the distance listed by the camera is the furthest that face recognition will realistically work.
|
||||
|
||||
Some users have also noted that setting the stream in camera firmware to a constant bit rate (CBR) leads to better image clarity than with a variable bit rate (VBR).
|
||||
|
||||
### Why can't I bulk upload photos?
|
||||
</FaqItem>
|
||||
|
||||
<FaqItem id="can-i-train-faces-for-people-who-only-appear-at-night" question="Can I train faces for people who only appear at night?">
|
||||
|
||||
The embedding models are trained on color images, so gray-scale and infrared (IR) faces sit in a different feature distribution and are more easily confused with other people. Prefer color images, and avoid mixing gray-scale samples in early while you are building a foundation. If someone only ever appears at night, gray-scale training is acceptable, but keep those samples limited and as clear as possible, and add them only once color recognition is stable for your other people.
|
||||
|
||||
</FaqItem>
|
||||
|
||||
<FaqItem id="why-cant-i-bulk-upload-photos" question="Why can't I bulk upload photos?">
|
||||
|
||||
It is important to methodically add photos to the library, bulk importing photos (especially from a general photo library) will lead to over-fitting in that particular scenario and hurt recognition performance.
|
||||
|
||||
### Why can't I bulk reprocess faces?
|
||||
</FaqItem>
|
||||
|
||||
<FaqItem id="why-cant-i-bulk-reprocess-faces" question="Why can't I bulk reprocess faces?">
|
||||
|
||||
Face embedding models work by breaking apart faces into different features. This means that when reprocessing an image, only images from a similar angle will have its score affected.
|
||||
|
||||
### Why do unknown people score similarly to known people?
|
||||
</FaqItem>
|
||||
|
||||
<FaqItem id="why-do-unknown-people-score-similarly-to-known-people" question="Why do unknown people score similarly to known people?">
|
||||
|
||||
This can happen for a few different reasons, but this is usually an indicator that the training set needs to be improved. This is often related to over-fitting:
|
||||
|
||||
@@ -243,31 +298,52 @@ Review your face collections and remove most of the unclear or low-quality image
|
||||
|
||||
Avoid training on images that already score highly, as this can lead to over-fitting. Instead, focus on relatively clear images that score lower (ideally with different lighting, angles, and conditions) to help the model generalize more effectively.
|
||||
|
||||
### Frigate misidentified a face. Can I tell it that a face is "not" a specific person?
|
||||
</FaqItem>
|
||||
|
||||
<FaqItem id="should-i-correct-a-face-that-was-recognized-as-the-wrong-person" question="Should I correct a face that was recognized as the wrong person?">
|
||||
|
||||
Only if it is a good image. Reassigning a face does add it to that person's training set, but two things are true at once:
|
||||
|
||||
- Reassigning a single misclassified frame has a small effect. The image is weighted against every other sample for that person, so correcting 1 frame out of 20 will not move recognition much. Occasional wrong guesses on poor frames are normal and do not need to be fixed.
|
||||
- Reassigning a poor image (blurry, off-angle, low-resolution, gray-scale) can hurt more than the misidentification did, because low-quality samples degrade recognition for that whole person.
|
||||
|
||||
So the decision is about image quality, not about the wrong label. If the crop is clear, well-lit, and reasonably front-facing, and it scored low or was wrong, assigning it to the correct person is useful. If you can barely make out the face yourself, ignore it; do not train it just to correct the label.
|
||||
|
||||
If a person is repeatedly misidentified, do not keep reassigning the same frame. Instead, remove low-quality or misleading images and add a few high-quality samples to the correct person. See [Why do unknown people score similarly to known people?](#why-do-unknown-people-score-similarly-to-known-people) above.
|
||||
|
||||
</FaqItem>
|
||||
|
||||
<FaqItem id="frigate-misidentified-a-face-can-i-tell-it-that-a-face-is-not-a-specific-person" question={'Frigate misidentified a face. Can I tell it that a face is "not" a specific person?'}>
|
||||
|
||||
No, face recognition does not support negative training (i.e., explicitly telling it who someone is _not_). Instead, the best approach is to improve the training data by using a more diverse and representative set of images for each person.
|
||||
For more guidance, refer to the section above on improving recognition accuracy.
|
||||
|
||||
### I see scores above the threshold in the Recent Recognitions tab, but a sub label wasn't assigned?
|
||||
This also applies to a stranger who is repeatedly matched to a known person (for example, a delivery driver recognized as you). Do not create a profile for them and do not reassign their faces to yourself, as this pollutes your training set and makes recognition worse. Leave the detection as unknown and improve the known person's training set instead. Face recognition learns who someone is, not who they are not.
|
||||
|
||||
The Frigate considers the recognition scores across all recognition attempts for each person object. The scores are continually weighted based on the area of the face, and a sub label will only be assigned to person if a person is confidently recognized consistently. This avoids cases where a single high confidence recognition would throw off the results.
|
||||
</FaqItem>
|
||||
|
||||
### Can I use other face recognition software like DoubleTake at the same time as the built in face recognition?
|
||||
<FaqItem id="i-see-scores-above-the-threshold-in-the-recent-recognitions-tab-but-a-sub-label-wasnt-assigned" question="I see scores above the threshold in the Recent Recognitions tab, but a sub label wasn't assigned?">
|
||||
|
||||
Frigate considers the recognition scores across all recognition attempts for each person object. The scores are continually weighted based on the area of the face, and a sub label will only be assigned to person if a person is confidently recognized consistently. This avoids cases where a single high confidence recognition would throw off the results.
|
||||
|
||||
</FaqItem>
|
||||
|
||||
### Compatibility and Maintenance
|
||||
|
||||
<FaqItem id="can-i-use-other-face-recognition-software-like-doubletake-at-the-same-time-as-the-built-in-face-recognition" question="Can I use other face recognition software like DoubleTake at the same time as the built in face recognition?">
|
||||
|
||||
No, using another face recognition service will interfere with Frigate's built in face recognition. When using double-take the sub_label feature must be disabled if the built in face recognition is also desired.
|
||||
|
||||
### Does face recognition run on the recording stream?
|
||||
</FaqItem>
|
||||
|
||||
Face recognition does not run on the recording stream, this would be suboptimal for many reasons:
|
||||
|
||||
1. The latency of accessing the recordings means the notifications would not include the names of recognized people because recognition would not complete until after.
|
||||
2. The embedding models used run on a set image size, so larger images will be scaled down to match this anyway.
|
||||
3. Motion clarity is much more important than extra pixels, over-compression and motion blur are much more detrimental to results than resolution.
|
||||
|
||||
### I get an unknown error when taking a photo directly with my iPhone
|
||||
<FaqItem id="i-get-an-unknown-error-when-taking-a-photo-directly-with-my-iphone" question="I get an unknown error when taking a photo directly with my iPhone">
|
||||
|
||||
By default iOS devices will use HEIC (High Efficiency Image Container) for images, but this format is not supported for uploads. Choosing `large` as the format instead of `original` will use JPG which will work correctly.
|
||||
|
||||
### How can I delete the face database and start over?
|
||||
</FaqItem>
|
||||
|
||||
<FaqItem id="how-can-i-delete-the-face-database-and-start-over" question="How can I delete the face database and start over?">
|
||||
|
||||
Frigate does not store anything in its database related to face recognition. You can simply delete all of your faces through the Frigate UI or remove the contents of the `/media/frigate/clips/faces` directory.
|
||||
|
||||
</FaqItem>
|
||||
|
||||
@@ -67,4 +67,4 @@ If your stream won't play, has no audio, uses excessive CPU, or otherwise misbeh
|
||||
|
||||
## Homekit Configuration
|
||||
|
||||
To add camera streams to Homekit Frigate must be configured in docker to use `host` networking mode. Once that is done, you can use the go2rtc WebUI (accessed via port 1984, which is disabled by default) to share export a camera to Homekit. Any changes made will automatically be saved to `/config/go2rtc_homekit.yml`.
|
||||
To add camera streams to Homekit Frigate must be configured in docker to use `host` networking mode. Once that is done, you can use the go2rtc WebUI (accessed via port 1984, which is disabled by default) to export a camera to Homekit. Any changes made will automatically be saved to `/config/go2rtc_homekit.yml`.
|
||||
|
||||
@@ -477,7 +477,7 @@ Error marking filters as finished
|
||||
Restarting ffmpeg...
|
||||
```
|
||||
|
||||
you should try to uprade to FFmpeg 7. This can be done using this config option:
|
||||
you should try to upgrade to FFmpeg 7. This can be done using this config option:
|
||||
|
||||
```yaml
|
||||
ffmpeg:
|
||||
|
||||
@@ -6,6 +6,7 @@ title: License Plate Recognition (LPR)
|
||||
import ConfigTabs from "@site/src/components/ConfigTabs";
|
||||
import TabItem from "@theme/TabItem";
|
||||
import NavPath from "@site/src/components/NavPath";
|
||||
import FaqItem from "@site/src/components/FaqItem";
|
||||
|
||||
Frigate can recognize license plates on vehicles and automatically add the detected characters to the `recognized_license_plate` field or a [known](#matching) name as a `sub_label` to tracked objects of type `car` or `motorcycle`. A common use case may be to read the license plates of cars pulling into a driveway or cars passing by on a street.
|
||||
|
||||
@@ -591,7 +592,9 @@ By selecting the appropriate configuration, users can optimize their dedicated L
|
||||
|
||||
## FAQ
|
||||
|
||||
### Why isn't my license plate being detected and recognized?
|
||||
### Detection and Recognition
|
||||
|
||||
<FaqItem id="why-isnt-my-license-plate-being-detected-and-recognized" question="Why isn't my license plate being detected and recognized?">
|
||||
|
||||
Ensure that:
|
||||
|
||||
@@ -606,29 +609,43 @@ Recognized plates will show as object labels in the debug view and will appear i
|
||||
|
||||
If you are still having issues detecting plates, start with a basic configuration and see the debugging tips below.
|
||||
|
||||
### Can I run LPR without detecting `car` or `motorcycle` objects?
|
||||
</FaqItem>
|
||||
|
||||
<FaqItem id="can-i-run-lpr-without-detecting-car-or-motorcycle-objects" question={<>Can I run LPR without detecting <code>car</code> or <code>motorcycle</code> objects?</>}>
|
||||
|
||||
In normal LPR mode, Frigate requires a `car` or `motorcycle` to be detected first before recognizing a license plate. If you have a dedicated LPR camera, you can change the camera `type` to `"lpr"` to use the Dedicated LPR Camera algorithm. This comes with important caveats, though. See the [Dedicated LPR Cameras](#dedicated-lpr-cameras) section above.
|
||||
|
||||
### How can I improve detection accuracy?
|
||||
</FaqItem>
|
||||
|
||||
<FaqItem id="how-can-i-improve-detection-accuracy" question="How can I improve detection accuracy?">
|
||||
|
||||
- Use high-quality cameras with good resolution.
|
||||
- Adjust `detection_threshold` and `recognition_threshold` values.
|
||||
- Define a `format` regex to filter out invalid detections.
|
||||
|
||||
### Does LPR work at night?
|
||||
</FaqItem>
|
||||
|
||||
<FaqItem id="does-lpr-work-at-night" question="Does LPR work at night?">
|
||||
|
||||
Yes, but performance depends on camera quality, lighting, and infrared capabilities. Make sure your camera can capture clear images of plates at night.
|
||||
|
||||
### Can I limit LPR to specific zones?
|
||||
</FaqItem>
|
||||
|
||||
<FaqItem id="can-i-limit-lpr-to-specific-zones" question="Can I limit LPR to specific zones?">
|
||||
|
||||
LPR, like other Frigate enrichments, runs at the camera level rather than the zone level. While you can't restrict LPR to specific zones directly, you can control when recognition runs by setting a `min_area` value to filter out smaller detections.
|
||||
|
||||
### How can I match known plates with minor variations?
|
||||
</FaqItem>
|
||||
|
||||
<FaqItem id="how-can-i-match-known-plates-with-minor-variations" question="How can I match known plates with minor variations?">
|
||||
|
||||
Use `match_distance` to allow small character mismatches. Alternatively, define multiple variations in `known_plates`.
|
||||
|
||||
### How do I debug LPR issues?
|
||||
</FaqItem>
|
||||
|
||||
### Performance and Troubleshooting
|
||||
|
||||
<FaqItem id="how-do-i-debug-lpr-issues" question="How do I debug LPR issues?">
|
||||
|
||||
Start with ["Why isn't my license plate being detected and recognized?"](#why-isnt-my-license-plate-being-detected-and-recognized). If you are still having issues, work through these steps.
|
||||
|
||||
@@ -685,17 +702,23 @@ lpr:
|
||||
- Watch the debug view to see plates recognized in real-time. For non-dedicated LPR cameras, the `car` or `motorcycle` label will change to the recognized plate when LPR is enabled and working.
|
||||
- Adjust `recognition_threshold` settings per the suggestions [above](#advanced-configuration).
|
||||
|
||||
### Will LPR slow down my system?
|
||||
</FaqItem>
|
||||
|
||||
<FaqItem id="will-lpr-slow-down-my-system" question="Will LPR slow down my system?">
|
||||
|
||||
LPR's performance impact depends on your hardware. Ensure you have at least 4GB RAM and a capable CPU or GPU for optimal results. If you are running the Dedicated LPR Camera mode, resource usage will be higher compared to users who run a model that natively detects license plates. Tune your motion detection settings for your dedicated LPR camera so that the license plate detection model runs only when necessary.
|
||||
|
||||
### I am seeing a YOLOv9 plate detection metric in Enrichment Metrics, but I have a Frigate+ or custom model that detects `license_plate`. Why is the YOLOv9 model running?
|
||||
</FaqItem>
|
||||
|
||||
<FaqItem id="i-am-seeing-a-yolov9-plate-detection-metric-in-enrichment-metrics-but-i-have-a-frigate-or-custom-model-that-detects-license_plate-why-is-the-yolov9-model-running" question={<>I am seeing a YOLOv9 plate detection metric in Enrichment Metrics, but I have a Frigate+ or custom model that detects <code>license_plate</code>. Why is the YOLOv9 model running?</>}>
|
||||
|
||||
The YOLOv9 license plate detector model will run (and the metric will appear) if you've enabled LPR but haven't defined `license_plate` as an object to track, either at the global or camera level.
|
||||
|
||||
If you are detecting `car` or `motorcycle` on cameras where you don't want to run LPR, make sure you disable LPR it at the camera level. And if you do want to run LPR on those cameras, make sure you define `license_plate` as an object to track.
|
||||
|
||||
### It looks like Frigate picked up my camera's timestamp or overlay text as the license plate. How can I prevent this?
|
||||
</FaqItem>
|
||||
|
||||
<FaqItem id="it-looks-like-frigate-picked-up-my-cameras-timestamp-or-overlay-text-as-the-license-plate-how-can-i-prevent-this" question="It looks like Frigate picked up my camera's timestamp or overlay text as the license plate. How can I prevent this?">
|
||||
|
||||
This could happen if cars or motorcycles travel close to your camera's timestamp or overlay text. You could either move the text through your camera's firmware, or apply a mask to it in Frigate.
|
||||
|
||||
@@ -703,6 +726,10 @@ If you are using a model that natively detects `license_plate`, add an _object m
|
||||
|
||||
If you are not using a model that natively detects `license_plate` or you are using dedicated LPR camera mode, only a _motion mask_ over your text is required.
|
||||
|
||||
### I see "Error running ... model" in my logs, or my inference time is very high. How can I fix this?
|
||||
</FaqItem>
|
||||
|
||||
<FaqItem id="i-see-error-running--model-in-my-logs-or-my-inference-time-is-very-high-how-can-i-fix-this" question={'I see "Error running ... model" in my logs, or my inference time is very high. How can I fix this?'}>
|
||||
|
||||
This usually happens when your GPU is unable to compile or use one of the LPR models. Set your `device` to `CPU` and try again. GPU acceleration only provides a slight performance increase, and the models are lightweight enough to run without issue on most CPUs.
|
||||
|
||||
</FaqItem>
|
||||
|
||||
@@ -66,7 +66,7 @@ motion:
|
||||
</TabItem>
|
||||
</ConfigTabs>
|
||||
|
||||
Lower values mean motion detection is more sensitive to changes in color, making it more likely for example to detect motion when a brown dogs blends in with a brown fence or a person wearing a red shirt blends in with a red car. If the threshold is too low however, it may detect things like grass blowing in the wind, shadows, etc. to be detected as motion.
|
||||
Lower values mean motion detection is more sensitive to changes in color, making it more likely for example to detect motion when a brown dog blends in with a brown fence or a person wearing a red shirt blends in with a red car. If the threshold is too low however, it may detect things like grass blowing in the wind, shadows, etc. to be detected as motion.
|
||||
|
||||
Watching the motion boxes in the debug view, increase the threshold until you only see motion that is visible to the eye. Once this is done, it is important to test and ensure that desired motion is still detected.
|
||||
|
||||
|
||||
@@ -725,7 +725,7 @@ The inference time was determined on a rk3588 with 3 NPU cores.
|
||||
|
||||
To convert a onnx model to the rknn format using the [rknn-toolkit2](https://github.com/airockchip/rknn-toolkit2/) you have to:
|
||||
|
||||
- Place one ore more models in onnx format in the directory `config/model_cache/rknn_cache/onnx` on your docker host (this might require `sudo` privileges).
|
||||
- Place one or more models in onnx format in the directory `config/model_cache/rknn_cache/onnx` on your docker host (this might require `sudo` privileges).
|
||||
- Save the configuration file under `config/conv2rknn.yaml` (see below for details).
|
||||
- Run `docker exec <frigate_container_id> python3 /opt/conv2rknn.py`. If the conversion was successful, the rknn models will be placed in `config/model_cache/rknn_cache`.
|
||||
|
||||
@@ -743,13 +743,13 @@ config:
|
||||
quant_img_RGB2BGR: true
|
||||
```
|
||||
|
||||
Explanation of the paramters:
|
||||
Explanation of the parameters:
|
||||
|
||||
- `soc`: A list of all SoCs you want to build the rknn model for. If you don't specify this parameter, the script tries to find out your SoC and builds the rknn model for this one.
|
||||
- `quantization`: true: 8 bit integer (i8) quantization, false: 16 bit float (fp16). Default: false.
|
||||
- `output_name`: The output name of the model. The following variables are available:
|
||||
- `quant`: "i8" or "fp16" depending on the config
|
||||
- `input_basename`: the basename of the input model (e.g. "my_model" if the input model is calles "my_model.onnx")
|
||||
- `input_basename`: the basename of the input model (e.g. "my_model" if the input model is called "my_model.onnx")
|
||||
- `soc`: the SoC this model was build for (e.g. "rk3588")
|
||||
- `tk_version`: Version of `rknn-toolkit2` (e.g. "2.3.0")
|
||||
- **example**: Specifying `output_name = "frigate-{quant}-{input_basename}-{soc}-v{tk_version}"` could result in a model called `frigate-i8-my_model-rk3588-v2.3.0.rknn`.
|
||||
|
||||
@@ -36,7 +36,7 @@ Any detection below `min_score` will be immediately thrown out and never tracked
|
||||
|
||||
### Threshold
|
||||
|
||||
`threshold` is used to determine that the object is a true positive. Once an object is detected with a score >= `threshold` object is considered a true positive. If `threshold` is too low then some higher scoring false positives may create an tracked object. If `threshold` is too high then true positive tracked objects may be missed due to the object never scoring high enough.
|
||||
`threshold` is used to determine that the object is a true positive. Once an object is detected with a score >= `threshold` object is considered a true positive. If `threshold` is too low then some higher scoring false positives may create a tracked object. If `threshold` is too high then true positive tracked objects may be missed due to the object never scoring high enough.
|
||||
|
||||
## Configuring Object Scores
|
||||
|
||||
|
||||
@@ -226,7 +226,7 @@ For tips on getting the best results from Semantic Search (choosing between thum
|
||||
|
||||
## Triggers
|
||||
|
||||
Triggers utilize Semantic Search to automate actions when a tracked object matches a specified image or description. Triggers can be configured so that Frigate executes a specific actions when a tracked object's image or description matches a predefined image or text, based on a similarity threshold. Triggers are managed per camera and can be configured via the Frigate UI in the Settings page under the Triggers tab.
|
||||
Triggers utilize Semantic Search to automate actions when a tracked object matches a specified image or description. Triggers can be configured so that Frigate executes specific actions when a tracked object's image or description matches a predefined image or text, based on a similarity threshold. Triggers are managed per camera and can be configured via the Frigate UI in the Settings page under the Triggers tab.
|
||||
|
||||
:::note
|
||||
|
||||
|
||||
@@ -43,7 +43,7 @@ Let's look at an example use case: I want to record any cars that enter my drive
|
||||
|
||||
One might simply think "Why not just run object detection any time there is motion around the driveway area and notify if the bounding box is in that zone?"
|
||||
|
||||
With that approach, what video is related to the car that entered the driveway? Did it come from the left or right? Was it parked across the street for an hour before turning into the driveway? One approach is to just record 24/7 or for motion (on any changed changed pixels) and not attempt to do that at all. This is what most other NVRs do. Just don't even try to identify a start and end for that object since it's hard and you will be wrong some portion of the time.
|
||||
With that approach, what video is related to the car that entered the driveway? Did it come from the left or right? Was it parked across the street for an hour before turning into the driveway? One approach is to just record 24/7 or for motion (on any changed pixels) and not attempt to do that at all. This is what most other NVRs do. Just don't even try to identify a start and end for that object since it's hard and you will be wrong some portion of the time.
|
||||
|
||||
Couldn't you just look at when motion stopped and started? Motion for a video feed is nothing more than looking for pixels that are different than they were in previous frames. If the car entered the driveway while someone was mowing the grass, how would you know which motion was for the car and which was for the person when they mow along the driveway or street? What if another car was driving the other direction on the street? Or what if its a windy day and the bush by your mailbox is blowing around?
|
||||
|
||||
@@ -61,4 +61,4 @@ Now you have to determine which of the bounding boxes in this frame should be ma
|
||||
|
||||
Now let's assume that those other 3 cars were already being tracked as stationary objects, so the car driving down the street is a new 4th car. The object tracker knows we have had 3 cars and we now have 4. As the new car approaches the parked cars, the bounding boxes for all 4 cars is predicted based on the previous frames. The predicted boxes for the parked cars is pretty much a 100% overlap with the bounding boxes in the new frame. The parked cars are slam dunk matches to the tracking ids they had before and the only one left is the remaining bounding box which gets assigned to the new car. This results in a much lower error rate. Not perfect, but better.
|
||||
|
||||
The most difficult scenario that causes IDs to be assigned incorrectly is when an object completely occludes another object. When a car drives in front of another car and its no longer visible, a bounding box disappeared and it's a bit of a toss up when assigning the id since it's difficult to know which one is in front of the other. This happens for cars passing in front of other cars fairly often. It's something that we want to improve in the future.
|
||||
The most difficult scenario that causes IDs to be assigned incorrectly is when an object completely occludes another object. When a car drives in front of another car and it's no longer visible, a bounding box disappeared and it's a bit of a toss up when assigning the id since it's difficult to know which one is in front of the other. This happens for cars passing in front of other cars fairly often. It's something that we want to improve in the future.
|
||||
|
||||
@@ -94,7 +94,7 @@ The following sections contain additional setup steps that are only required if
|
||||
|
||||
By default, the Raspberry Pi limits the amount of memory available to the GPU. In order to use ffmpeg hardware acceleration, you must increase the available memory by setting `gpu_mem` to the maximum recommended value in `config.txt` as described in the [official docs](https://www.raspberrypi.org/documentation/computers/config_txt.html#memory-options).
|
||||
|
||||
Additionally, the USB Coral draws a considerable amount of power. If using any other USB devices such as an SSD, you will experience instability due to the Pi not providing enough power to USB devices. You will need to purchase an external USB hub with it's own power supply. Some have reported success with <a href="https://amzn.to/3a2mH0P" target="_blank" rel="nofollow noopener sponsored">this</a> (affiliate link).
|
||||
Additionally, the USB Coral draws a considerable amount of power. If using any other USB devices such as an SSD, you will experience instability due to the Pi not providing enough power to USB devices. You will need to purchase an external USB hub with its own power supply. Some have reported success with <a href="https://amzn.to/3a2mH0P" target="_blank" rel="nofollow noopener sponsored">this</a> (affiliate link).
|
||||
|
||||
### Hailo-8
|
||||
|
||||
|
||||
@@ -122,7 +122,7 @@ Use `http://<frigate_device_ip>:8971` as the URL for the integration so that aut
|
||||
|
||||
The above URL assumes you have [disabled TLS](../configuration/tls).
|
||||
By default, TLS is enabled and Frigate will be using a self-signed certificate. HomeAssistant will fail to connect HTTPS to port 8971 since it fails to verify the self-signed certificate.
|
||||
Either disable TLS and use HTTP from HomeAssistant, or configure Frigate to be acessible with a valid certificate.
|
||||
Either disable TLS and use HTTP from HomeAssistant, or configure Frigate to be accessible with a valid certificate.
|
||||
|
||||
:::
|
||||
|
||||
|
||||
@@ -280,7 +280,7 @@ Same data available at `/api/stats` published at a configurable interval.
|
||||
|
||||
### `frigate/camera_activity`
|
||||
|
||||
Returns data about each camera, its current features, and if it is detecting motion, objects, etc. Can be triggered by publising to `frigate/onConnect`
|
||||
Returns data about each camera, its current features, and if it is detecting motion, objects, etc. Can be triggered by publishing to `frigate/onConnect`
|
||||
|
||||
### `frigate/profile/set`
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@ The [Advanced Camera Card](https://card.camera/#/README) is a Home Assistant das
|
||||
|
||||
## [Double Take](https://github.com/skrashevich/double-take)
|
||||
|
||||
[Double Take](https://github.com/skrashevich/double-take) provides an unified UI and API for processing and training images for facial recognition.
|
||||
[Double Take](https://github.com/skrashevich/double-take) provides a unified UI and API for processing and training images for facial recognition.
|
||||
It supports automatically setting the sub labels in Frigate for person objects that are detected and recognized.
|
||||
This is a fork (with fixed errors and new features) of [original Double Take](https://github.com/jakowenko/double-take) project which, unfortunately, isn't being maintained by author.
|
||||
|
||||
@@ -53,7 +53,7 @@ This is a fork (with fixed errors and new features) of [original Double Take](ht
|
||||
|
||||
## [Scrypted - Frigate bridge plugin](https://github.com/apocaliss92/scrypted-frigate-bridge)
|
||||
|
||||
[Scrypted - Frigate bridge](https://github.com/apocaliss92/scrypted-frigate-bridge) is an plugin that allows to ingest Frigate detections, motion, videoclips on Scrypted as well as provide templates to export rebroadcast configurations on Frigate.
|
||||
[Scrypted - Frigate bridge](https://github.com/apocaliss92/scrypted-frigate-bridge) is a plugin that allows you to ingest Frigate detections, motion, videoclips on Scrypted as well as provide templates to export rebroadcast configurations on Frigate.
|
||||
|
||||
## [Strix](https://github.com/eduard256/Strix)
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@ For the best results, follow these guidelines. You may also want to review the d
|
||||
|
||||
## AI suggested labels
|
||||
|
||||
If you have an active Frigate+ subscription, new uploads will be scanned for the objects configured for you camera and you will see suggested labels as light blue boxes when annotating in Frigate+. These suggestions are processed via a queue and typically complete within a minute after uploading, but processing times can be longer.
|
||||
If you have an active Frigate+ subscription, new uploads will be scanned for the objects configured for your camera and you will see suggested labels as light blue boxes when annotating in Frigate+. These suggestions are processed via a queue and typically complete within a minute after uploading, but processing times can be longer.
|
||||
|
||||

|
||||
|
||||
|
||||
@@ -3,6 +3,10 @@ id: first_model
|
||||
title: Requesting your first model
|
||||
---
|
||||
|
||||
import ConfigTabs from "@site/src/components/ConfigTabs";
|
||||
import TabItem from "@theme/TabItem";
|
||||
import NavPath from "@site/src/components/NavPath";
|
||||
|
||||
## Step 1: Upload and annotate your images
|
||||
|
||||
Before requesting your first model, you will need to upload and verify at least 10 images to Frigate+. The more images you upload, annotate, and verify the better your results will be. Most users start to see very good results once they have at least 100 verified images per camera. Keep in mind that varying conditions should be included. You will want images from cloudy days, sunny days, dawn, dusk, and night. Refer to the [integration docs](../integrations/plus.md#generate-an-api-key) for instructions on how to easily submit images to Frigate+ directly from Frigate.
|
||||
@@ -16,13 +20,21 @@ For more detailed recommendations, you can refer to the docs on [annotating](./a
|
||||
Once you have an initial set of verified images, you can request a model on the Models page. For guidance on choosing a model type, refer to [this part of the documentation](./index.md#available-model-types). If you are unsure which type to request, you can test the base model for each version from the "Base Models" tab. Each model request requires 1 of the 12 trainings that you receive with your annual subscription. This model will support all [label types available](./index.md#available-label-types) even if you do not submit any examples for those labels. Model creation can take up to 36 hours.
|
||||

|
||||
|
||||
## Step 3: Set your model id in the config
|
||||
## Step 3: Set your model
|
||||
|
||||
You will receive an email notification when your Frigate+ model is ready.
|
||||

|
||||
|
||||
Models available in Frigate+ can be used with a special model path. No other information needs to be configured because it fetches the remaining config from Frigate+ automatically.
|
||||
|
||||
<ConfigTabs>
|
||||
<TabItem value="ui">
|
||||
|
||||
Navigate to <NavPath path="Settings > System > Detectors and model" />. In the **Detection Model** section, choose the **Frigate+** tab. Select your new Frigate+ model from the **Available Frigate+ models** dropdown, then click **Save**. Restart Frigate to apply the change.
|
||||
|
||||
</TabItem>
|
||||
<TabItem value="yaml">
|
||||
|
||||
```yaml
|
||||
detectors: ...
|
||||
|
||||
@@ -30,22 +42,46 @@ model:
|
||||
path: plus://<your_model_id>
|
||||
```
|
||||
|
||||
:::note
|
||||
|
||||
Model IDs are not secret values and can be shared freely. Access to your model is protected by your API key.
|
||||
|
||||
:::
|
||||
|
||||
:::tip
|
||||
|
||||
When setting the plus model id, all other fields should be removed as these are configured automatically with the Frigate+ model config
|
||||
|
||||
:::
|
||||
|
||||
</TabItem>
|
||||
</ConfigTabs>
|
||||
|
||||
:::note
|
||||
|
||||
Model IDs are not secret values and can be shared freely. Access to your model is protected by your API key.
|
||||
|
||||
:::
|
||||
|
||||
## Step 4: Adjust your object filters for higher scores
|
||||
|
||||
Frigate+ models generally have much higher scores than the default model provided in Frigate. You will likely need to increase your `threshold` and `min_score` values. Here is an example of how these values can be refined, but you should expect these to evolve as your model improves. For more information about how `threshold` and `min_score` are related, see the docs on [object filters](../configuration/object_filters.md#object-scores).
|
||||
|
||||
<ConfigTabs>
|
||||
<TabItem value="ui">
|
||||
|
||||
Navigate to <NavPath path="Settings > Global configuration > Objects" />. Under **Object filters**, set **Min Score** and **Threshold** for each object type, then click **Save**.
|
||||
|
||||
| Object | Min Score | Threshold |
|
||||
| ----------------- | --------- | --------- |
|
||||
| **dog** | .7 | .9 |
|
||||
| **cat** | .65 | .8 |
|
||||
| **face** | .7 | |
|
||||
| **package** | .65 | .9 |
|
||||
| **license_plate** | .6 | |
|
||||
| **amazon** | .75 | |
|
||||
| **ups** | .75 | |
|
||||
| **fedex** | .75 | |
|
||||
| **person** | .65 | .85 |
|
||||
| **car** | .65 | .85 |
|
||||
|
||||
</TabItem>
|
||||
<TabItem value="yaml">
|
||||
|
||||
```yaml
|
||||
objects:
|
||||
filters:
|
||||
@@ -75,3 +111,6 @@ objects:
|
||||
min_score: .65
|
||||
threshold: .85
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
</ConfigTabs>
|
||||
|
||||
@@ -12,7 +12,7 @@ There are many possible causes for a USB coral not being detected and some are O
|
||||
|
||||
:::tip
|
||||
|
||||
Using `lsusb` or checking the hardware page in HA OS will show as `1a6e:089a Global Unichip Corp.` until Frigate runs an inferance using the coral. So don't worry about the identification until after Frigate has attempted to detect the coral.
|
||||
Using `lsusb` or checking the hardware page in HA OS will show as `1a6e:089a Global Unichip Corp.` until Frigate runs an inference using the coral. So don't worry about the identification until after Frigate has attempted to detect the coral.
|
||||
|
||||
:::
|
||||
|
||||
@@ -43,13 +43,13 @@ Some users have reported that this older device runs an older kernel causing iss
|
||||
3. Start the docker container with Coral TPU enabled in the config
|
||||
4. The TPU would be detected but a few moments later it would disconnect.
|
||||
5. While leaving the TPU device plugged in, restart the NAS using the reboot command in the UI. Do NOT unplug the NAS/power it off etc.
|
||||
6. Open the control panel - info scree. The coral TPU will now be recognised as a USB Device - google inc
|
||||
6. Open the control panel - info screen. The coral TPU will now be recognized as a USB Device - google inc
|
||||
7. Start the frigate container. Everything should work now!
|
||||
|
||||
### QNAP NAS
|
||||
|
||||
QNAP NAS devices, such as the TS-253A, may use connected Coral TPU devices if [QuMagie](https://www.qnap.com/en/software/qumagie) is installed along with its QNAP AI Core extension. If any of the features (`facial recognition`, `object recognition`, or `similar photo recognition`) are enabled, Container Station applications such as `Frigate` or `CodeProject.AI Server` will be unable to initialize the TPU device in use.
|
||||
To allow the Coral TPU device to be discovered, the you must either:
|
||||
To allow the Coral TPU device to be discovered, you must either:
|
||||
|
||||
1. [Disable the AI recognition features in QuMagie](https://docs.qnap.com/application/qumagie/2.x/en-us/configuring-qnap-ai-core-settings-FB13CE03.html),
|
||||
2. Remove the QNAP AI Core extension or
|
||||
@@ -76,7 +76,7 @@ This is an issue due to outdated gasket driver when being used with new linux ke
|
||||
|
||||
### Not detected on Raspberry Pi5
|
||||
|
||||
A kernel update to the RPi5 means an upate to config.txt is required, see [the raspberry pi forum for more info](https://forums.raspberrypi.com/viewtopic.php?t=363682&sid=cb59b026a412f0dc041595951273a9ca&start=25)
|
||||
A kernel update to the RPi5 means an update to config.txt is required, see [the raspberry pi forum for more info](https://forums.raspberrypi.com/viewtopic.php?t=363682&sid=cb59b026a412f0dc041595951273a9ca&start=25)
|
||||
|
||||
Specifically, add the following to config.txt
|
||||
|
||||
@@ -87,7 +87,7 @@ dtoverlay=pcie-32bit-dma-pi5
|
||||
|
||||
## Only One PCIe Coral Is Detected With Coral Dual EdgeTPU
|
||||
|
||||
Coral Dual EdgeTPU is one card with two identical TPU cores. Each core has it's own PCIe interface and motherboard needs to have two PCIe busses on the m.2 slot to make them both work.
|
||||
Coral Dual EdgeTPU is one card with two identical TPU cores. Each core has its own PCIe interface and motherboard needs to have two PCIe busses on the m.2 slot to make them both work.
|
||||
|
||||
E-key slot implemented to full m.2 electromechanical specification has two PCIe busses. Most motherboard manufacturers implement only one PCIe bus in m.2 E-key connector (this is why only one TPU is working). Some SBCs can have only USB bus on m.2 connector, ie none of TPUs will work.
|
||||
|
||||
|
||||
@@ -29,7 +29,7 @@ You can open `chrome://media-internals/` in another tab and then try to playback
|
||||
|
||||
### What do I do if my cameras sub stream is not good enough?
|
||||
|
||||
Frigate generally [recommends cameras with configurable sub streams](/frigate/hardware.md). However, if your camera does not have a sub stream that a suitable resolution, the main stream can be resized.
|
||||
Frigate generally [recommends cameras with configurable sub streams](/frigate/hardware.md). However, if your camera does not have a sub stream that is a suitable resolution, the main stream can be resized.
|
||||
|
||||
To do this efficiently the following setup is required:
|
||||
|
||||
|
||||
@@ -91,7 +91,7 @@ To act on many objects at once, Ctrl/Cmd-click or right-click to start a selecti
|
||||
|
||||
1. Semantic Search is used in conjunction with the other filters available on the Explore page. Use a combination of traditional filtering and Semantic Search for the best results.
|
||||
2. Use the thumbnail search type when searching for particular objects in the scene. Use the description search type when attempting to discern the intent of your object.
|
||||
3. Because of how the AI models Frigate uses have been trained, the comparison between text and image embedding distances generally means that with multi-modal (`thumbnail` and `description`) searches, results matching `description` will appear first, even if a `thumbnail` embedding may be a better match. Play with the "Search Type" setting to help find what you are looking for. Note that if you are generating descriptions for specific objects or zones only, this may cause search results to prioritize the objects with descriptions even if the the ones without them are more relevant.
|
||||
3. Because of how the AI models Frigate uses have been trained, the comparison between text and image embedding distances generally means that with multi-modal (`thumbnail` and `description`) searches, results matching `description` will appear first, even if a `thumbnail` embedding may be a better match. Play with the "Search Type" setting to help find what you are looking for. Note that if you are generating descriptions for specific objects or zones only, this may cause search results to prioritize the objects with descriptions even if the ones without them are more relevant.
|
||||
4. Make your search language and tone closely match exactly what you're looking for. If you are using thumbnail search, **phrase your query as an image caption**. Searching for "red car" may not work as well as "red sedan driving down a residential street on a sunny day".
|
||||
5. Semantic search on thumbnails tends to return better results when matching large subjects that take up most of the frame. Small things like "cat" tend to not work well.
|
||||
6. Experiment! Find a tracked object you want to test and start typing keywords and phrases to see what works for you.
|
||||
|
||||
@@ -60,7 +60,7 @@ You can optionally overlay live streaming statistics (stream type, bandwidth, la
|
||||
|
||||
Right-clicking (or long-pressing) a camera tile opens a context menu with quick controls: an **audio volume** control for streams that support audio, **Mute / Unmute all cameras**, **show or hide streaming statistics**, the **debug view**, **notification** options, and, for admins, turning the camera on or off. If the audio control doesn't appear, see [Audio Support](/configuration/live#audio-support). Audio requires go2rtc configured with a compatible codec.
|
||||
|
||||
A **Low-bandwidth mode** notice may also appear in the context menu with a **Reset** option appears when Frigate has fallen back to the lower-quality jsmpeg stream. See the [Live view FAQ](/configuration/live#live-view-faq) for why this happens.
|
||||
A **Low-bandwidth mode** notice may also appear in the context menu with a **Reset** option when Frigate has fallen back to the lower-quality jsmpeg stream. See the [Live view FAQ](/configuration/live#live-view-faq) for why this happens.
|
||||
|
||||
For non-default groups, the context menu also exposes **Streaming Settings** for that camera, which let you choose:
|
||||
|
||||
|
||||
@@ -0,0 +1,66 @@
|
||||
import React, { useState, useEffect } from "react";
|
||||
import Heading from "@theme/Heading";
|
||||
import styles from "./styles.module.css";
|
||||
|
||||
// A single FAQ entry.
|
||||
//
|
||||
// The question is a real anchored heading (via @theme/Heading), so on desktop
|
||||
// it gets the standard hover "#" hash link and the answer is always shown. On
|
||||
// mobile the heading text is a button that toggles its answer, keeping long
|
||||
// FAQ pages short. The desktop/mobile split is pure CSS (Docusaurus breakpoint:
|
||||
// 996px), so there is no hydration flash. The answer is always rendered into
|
||||
// the DOM, so search engines and the docs AI bot can read it regardless of
|
||||
// layout or collapsed state. The heading id resolves deep links on both layouts
|
||||
// and auto-expands the entry on mobile when it is the link target.
|
||||
export default function FaqItem({ id, question, children }) {
|
||||
const [open, setOpen] = useState(false);
|
||||
|
||||
useEffect(() => {
|
||||
const openIfTargeted = () => {
|
||||
if (window.location.hash === `#${id}`) {
|
||||
setOpen(true);
|
||||
}
|
||||
};
|
||||
openIfTargeted();
|
||||
window.addEventListener("hashchange", openIfTargeted);
|
||||
return () => window.removeEventListener("hashchange", openIfTargeted);
|
||||
}, [id]);
|
||||
|
||||
const toggle = () => {
|
||||
const next = !open;
|
||||
setOpen(next);
|
||||
// Reflect the entry in the URL like clicking the heading anchor, so an
|
||||
// opened answer is shareable. Use replaceState to avoid history spam and
|
||||
// an abrupt scroll. Clear it on close if it currently points here.
|
||||
if (next) {
|
||||
if (window.location.hash !== `#${id}`) {
|
||||
window.history.replaceState(null, "", `#${id}`);
|
||||
}
|
||||
} else if (window.location.hash === `#${id}`) {
|
||||
window.history.replaceState(
|
||||
null,
|
||||
"",
|
||||
window.location.pathname + window.location.search,
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
return (
|
||||
<div className={styles.item} data-open={open || undefined}>
|
||||
<Heading as="h4" id={id} className={styles.heading}>
|
||||
<button
|
||||
type="button"
|
||||
className={styles.toggle}
|
||||
aria-expanded={open}
|
||||
aria-controls={`${id}-content`}
|
||||
onClick={toggle}
|
||||
>
|
||||
{question}
|
||||
</button>
|
||||
</Heading>
|
||||
<div id={`${id}-content`} className={styles.content}>
|
||||
{children}
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
@@ -0,0 +1,87 @@
|
||||
/*
|
||||
* FAQ entry: collapsible on mobile, static heading + expanded answer on
|
||||
* desktop. The split is pure CSS (Docusaurus breakpoint: 996px) so there is
|
||||
* no hydration flash. The answer is always rendered into the DOM, so search
|
||||
* engines and the docs AI bot can read it regardless of layout or state.
|
||||
*/
|
||||
|
||||
.item {
|
||||
scroll-margin-top: calc(var(--ifm-navbar-height) + 1rem);
|
||||
}
|
||||
|
||||
.heading {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
/* Mobile: the heading text is a full-width clickable toggle row. */
|
||||
.toggle {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 0.6rem;
|
||||
width: 100%;
|
||||
padding: 0.85rem 0;
|
||||
border: none;
|
||||
border-bottom: 1px solid var(--ifm-color-emphasis-200);
|
||||
background: none;
|
||||
color: inherit;
|
||||
font: inherit;
|
||||
text-align: left;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.toggle::before {
|
||||
content: "";
|
||||
flex: 0 0 auto;
|
||||
width: 0.5rem;
|
||||
height: 0.5rem;
|
||||
border-right: 2px solid currentColor;
|
||||
border-bottom: 2px solid currentColor;
|
||||
transform: rotate(-45deg);
|
||||
transition: transform var(--ifm-transition-fast, 200ms) ease;
|
||||
}
|
||||
|
||||
.item[data-open] .toggle::before {
|
||||
transform: rotate(45deg);
|
||||
}
|
||||
|
||||
.content {
|
||||
display: none;
|
||||
padding: 0 0 0.85rem;
|
||||
}
|
||||
|
||||
.item[data-open] .content {
|
||||
display: block;
|
||||
}
|
||||
|
||||
/* Hide the hover hash link on mobile (no hover; avoids a stray empty line). */
|
||||
.heading :global(.hash-link) {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* Desktop: render as a normal expanded heading + answer. */
|
||||
@media (min-width: 997px) {
|
||||
.heading {
|
||||
margin: 1.75rem 0 0.5rem;
|
||||
}
|
||||
|
||||
.toggle {
|
||||
display: inline;
|
||||
width: auto;
|
||||
padding: 0;
|
||||
border: none;
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
.toggle::before {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.content {
|
||||
display: block;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.heading :global(.hash-link) {
|
||||
display: inline;
|
||||
}
|
||||
}
|
||||
@@ -493,6 +493,9 @@
|
||||
"max_concurrent": {
|
||||
"label": "Màxim d'exportacions concurrents",
|
||||
"description": "Nombre màxim de treballs d'exportació a processar al mateix temps."
|
||||
},
|
||||
"chapters": {
|
||||
"label": "Metadades de capítol per incrustar en els enregistraments exportats"
|
||||
}
|
||||
},
|
||||
"preview": {
|
||||
|
||||
@@ -380,6 +380,9 @@
|
||||
"max_concurrent": {
|
||||
"label": "Màxim d'exportacions concurrents",
|
||||
"description": "Nombre màxim de treballs d'exportació a processar al mateix temps."
|
||||
},
|
||||
"chapters": {
|
||||
"label": "Metadades de capítol per incrustar en els enregistraments exportats"
|
||||
}
|
||||
},
|
||||
"preview": {
|
||||
|
||||
@@ -123,7 +123,7 @@
|
||||
"error": {
|
||||
"failed": "Failed to queue export: {{error}}",
|
||||
"endTimeMustAfterStartTime": "End time must be after start time",
|
||||
"noVaildTimeSelected": "No valid time range selected"
|
||||
"noValidTimeSelected": "No valid time range selected"
|
||||
}
|
||||
},
|
||||
"fromTimeline": {
|
||||
|
||||
@@ -76,7 +76,7 @@
|
||||
},
|
||||
"offset": {
|
||||
"label": "Annotation Offset",
|
||||
"desc": "This data comes from your camera's detect feed but is overlayed on images from the the record feed. It is unlikely that the two streams are perfectly in sync. As a result, the bounding box and the footage will not line up perfectly. You can use this setting to offset the annotations forward or backward in time to better align them with the recorded footage.",
|
||||
"desc": "This data comes from your camera's detect feed but is overlaid on images from the record feed. It is unlikely that the two streams are perfectly in sync. As a result, the bounding box and the footage will not line up perfectly. You can use this setting to offset the annotations forward or backward in time to better align them with the recorded footage.",
|
||||
"millisecondsToOffset": "Milliseconds to offset detect annotations by. <em>Default: 0</em>",
|
||||
"tips": "Lower the value if the video playback is ahead of the boxes and path points, and increase the value if the video playback is behind them. This value can be negative.",
|
||||
"toast": {
|
||||
|
||||
@@ -1053,7 +1053,7 @@
|
||||
},
|
||||
"createUser": {
|
||||
"title": "Create New User",
|
||||
"desc": "Add a new user account and specify an role for access to areas of the Frigate UI.",
|
||||
"desc": "Add a new user account and specify a role for access to areas of the Frigate UI.",
|
||||
"usernameOnlyInclude": "Username may only include letters, numbers, . or _",
|
||||
"confirmPassword": "Please confirm your password"
|
||||
},
|
||||
|
||||
@@ -273,5 +273,69 @@
|
||||
"sailboat": "Purjekas",
|
||||
"soundtrack_music": "Filmimuusika",
|
||||
"jingle": "Kõlisemine/tilisemine",
|
||||
"theme_music": "Tunnusmuusika"
|
||||
"theme_music": "Tunnusmuusika",
|
||||
"steel_guitar": "Steel Kitarr",
|
||||
"tapping": "Koputamine",
|
||||
"strum": "Klimberdus",
|
||||
"drum_machine": "Trummimasin",
|
||||
"drum": "Trumm",
|
||||
"maraca": "Marakas",
|
||||
"bowed_string_instrument": "Poogenkeelpill",
|
||||
"singing_bowl": "Helikauss",
|
||||
"wind_noise": "Tuulemüra",
|
||||
"rustling_leaves": "Sahisevad lehed",
|
||||
"waves": "Lained",
|
||||
"steam": "Aur",
|
||||
"ship": "Laev",
|
||||
"motor_vehicle": "Mootorsõiduk",
|
||||
"rowboat": "Sõudepaat",
|
||||
"motorboat": "Mootorpaat",
|
||||
"waterfall": "Kosk",
|
||||
"ocean": "Ookean",
|
||||
"rain_on_surface": "Vihm pinnal",
|
||||
"stream": "Oja",
|
||||
"fire": "Tuli",
|
||||
"crackle": "Praksumine",
|
||||
"car_alarm": "Auto alarm",
|
||||
"truck": "Veoauto",
|
||||
"police_car": "Politseiauto",
|
||||
"ambulance": "Kiirabi",
|
||||
"fire_engine": "Tuletõrjeauto",
|
||||
"aircraft": "Lennuk",
|
||||
"aircraft_engine": "Lennukimootor",
|
||||
"jet_engine": "Reaktiivmootor",
|
||||
"propeller": "Propeller",
|
||||
"helicopter": "Helikopter",
|
||||
"fixed-wing_aircraft": "Fikseeritud tiivaga õhusõiduk",
|
||||
"train_horn": "Rongisignaal",
|
||||
"railroad_car": "Kaubavagun",
|
||||
"lawn_mower": "Muruniiduk",
|
||||
"chainsaw": "mootorsaag",
|
||||
"engine": "Mootor",
|
||||
"knock": "Koputus",
|
||||
"alarm": "Häire",
|
||||
"siren": "Sireen",
|
||||
"fire_alarm": "Tulekahjuhäire",
|
||||
"telephone": "Telefon",
|
||||
"telephone_bell_ringing": "Helisev telefon",
|
||||
"ringtone": "Telefonihelin",
|
||||
"smoke_detector": "Suitsuandur",
|
||||
"foghorn": "Udupasun",
|
||||
"whistle": "Vile",
|
||||
"printer": "Printer",
|
||||
"drill": "Puur",
|
||||
"explosion": "Plahvatus",
|
||||
"hammer": "Haamer",
|
||||
"air_conditioning": "Õhukonditsioneer",
|
||||
"gunshot": "Püssilask",
|
||||
"glass": "Klaas",
|
||||
"boom": "Pauk",
|
||||
"fireworks": "Ilutulestik",
|
||||
"static": "Staatiline",
|
||||
"white_noise": "Valge müra",
|
||||
"radio": "Raadio",
|
||||
"television": "Televiisor",
|
||||
"scream": "Karjumine",
|
||||
"pour": "Valamine",
|
||||
"drip": "Tilkumine"
|
||||
}
|
||||
|
||||
@@ -37,6 +37,9 @@
|
||||
"ask_an": "Kas see objekt on <code>{{label}}</code>?",
|
||||
"ask_full": "Kas see objekt on <code>{{untranslatedLabel}}</code> ({{translatedLabel}})?",
|
||||
"label": "Kinnita see silt Frigate+ teenuse jaoks"
|
||||
},
|
||||
"toast": {
|
||||
"error": "Frigate+ teenusesse saatmine ebaõnnestus. Palun kontrolli oma võrguühendust ja proovi uuesti."
|
||||
}
|
||||
},
|
||||
"submitToPlus": {
|
||||
@@ -70,18 +73,78 @@
|
||||
"success": "Eksportimise käivitamine õnnestus. Faili leiad eksportimise lehelt.",
|
||||
"view": "Vaata",
|
||||
"error": {
|
||||
"failed": "Eksportimise käivitamine ei õnnestunud: {{error}}",
|
||||
"failed": "Eksportimise järjekorda lisamine ei õnnestunud: {{error}}",
|
||||
"endTimeMustAfterStartTime": "Ajavahemiku lõpp peab olema peale algust",
|
||||
"noVaildTimeSelected": "Ühtegi kehtivat ajavahemikku pole valitud"
|
||||
}
|
||||
},
|
||||
"queued": "Eksport on järjekorda lisatud. Vaata progressi eksportide lehelt.",
|
||||
"batchSuccess_one": "Alustasin 1 ekspordiga. Avan juhtumi kohe.",
|
||||
"batchSuccess_other": "Alustasin {{count}} ekspordiga. Avan juhtumi kohe.",
|
||||
"batchPartial": "Alustasin {{successful}}/{{total}} ekspordiga. Ebaõnnestunud kaamerad: {{failedCameras}}",
|
||||
"batchFailed": "{{total}} eksporti ebaõnnestus algatada. Ebaõnnestunud kaamerad: {{failedCameras}}",
|
||||
"batchQueuedSuccess_one": "1 eksport järjekorda lisatud. Avan juhtumi kohe.",
|
||||
"batchQueuedSuccess_other": "{{count}} eksporti järjekorda lisatud. Avan juhtumi kohe.",
|
||||
"batchQueuedPartial": "{{successful}}/{{total}} ekspordist on järjekorda lisatud. Ebaõnnestunud kaamerad: {{failedCameras}}",
|
||||
"batchQueueFailed": "{{total}} eksporti ebaõnnestus järjekorda lisada. Ebaõnnestunud kaamerad: {{failedCameras}}"
|
||||
},
|
||||
"fromTimeline": {
|
||||
"saveExport": "Salvesta eksporditud sisu",
|
||||
"previewExport": "Eksporditud sisu eelvaade"
|
||||
"previewExport": "Eksporditud sisu eelvaade",
|
||||
"queueingExport": "Ekspordi järjekorda lisamine...",
|
||||
"useThisRange": "Kasuta seda vahemikku"
|
||||
},
|
||||
"case": {
|
||||
"label": "Juhtum",
|
||||
"placeholder": "Vali juhtum"
|
||||
"placeholder": "Vali juhtum",
|
||||
"newCaseOption": "Ava uus juhtum",
|
||||
"newCaseNamePlaceholder": "Uue juhtumi nimi",
|
||||
"newCaseDescriptionPlaceholder": "Juhtumi kirjeldus",
|
||||
"nonAdminHelp": "Uus juhtum avatakse järnevatele eksportidele."
|
||||
},
|
||||
"queueing": "Ekspordi järjekorda lisamine...",
|
||||
"tabs": {
|
||||
"export": "Üksik kaamera",
|
||||
"multiCamera": "Mitu kaamerat"
|
||||
},
|
||||
"multiCamera": {
|
||||
"timeRange": "Ajavahemik",
|
||||
"selectFromTimeline": "Vali ajajoonelt",
|
||||
"cameraSelection": "Kaamerad",
|
||||
"cameraSelectionHelp": "Selles ajavahemikus tuvastatud objektidega kaamerad on eelvalitud",
|
||||
"searchOrSelectGroup": "Otsi või vali kaamera grupp...",
|
||||
"selectAll": "Vali kõik kaamerad",
|
||||
"clearSelection": "Tühista valik",
|
||||
"selectWithActivity": "Jälgitud objektidega kaamerad",
|
||||
"selectGroup": "Vali grupp",
|
||||
"noMatchingCameras": "Ükski kaamera ei sobitunud otsinguga",
|
||||
"selectedCount": "{{selected}} / {{total}} valitud",
|
||||
"checkingActivity": "Kaamera aktiivsuse kontrollimine...",
|
||||
"noCameras": "Ühtegi kaamerat pole saadaval",
|
||||
"detectionCount_one": "1 jälgitav objekt",
|
||||
"detectionCount_other": "{{count}} jälgitavat objekti",
|
||||
"nameLabel": "Ekspordi nimi",
|
||||
"namePlaceholder": "Valikuline baasnimi nendele eksportidele",
|
||||
"queueingButton": "Ekspordi järjekorda lisamine...",
|
||||
"exportButton_one": "Ekspordi 1 kaamera",
|
||||
"exportButton_other": "Ekspordi {{count}} kaamerat"
|
||||
},
|
||||
"multi": {
|
||||
"title_one": "Ekspordi 1 ülevaade",
|
||||
"title_other": "Espordi {{count}} ülevaadet",
|
||||
"description": "Ekspordi valitud ülevaated. Kõik ekspordid on grupeeritud ühte juhtumisse.",
|
||||
"descriptionNoCase": "Ekspordi kõik valitud juhtumid.",
|
||||
"caseNamePlaceholder": "Ülevaate eksport - {{date}}",
|
||||
"exportButton_one": "Ekspordi 1 ülevaade",
|
||||
"exportButton_other": "Ekspordi {{count}} ülevaadet",
|
||||
"exportingButton": "Ekspordin...",
|
||||
"toast": {
|
||||
"started_one": "Alustasin 1 eksporti. Avan juhtumi kohe.",
|
||||
"started_other": "Alustasin {{count}} ekspordiga. Avan juhtumi kohe.",
|
||||
"startedNoCase_one": "Alustasin 1 ekspordiga.",
|
||||
"startedNoCase_other": "Alustasin {{count}} ekspordiga.",
|
||||
"partial": "Alustasin {{successful}}/{{total}} ekspordiga. Ebaõnnestusid: {{failedItems}}",
|
||||
"failed": "{{total}} ekspordi algatamine ebaõnnestus. Ebaõnnestunud: {{failedItems}}"
|
||||
}
|
||||
}
|
||||
},
|
||||
"streaming": {
|
||||
@@ -114,6 +177,14 @@
|
||||
"success": "Selle ülevaadatava objektiga seotud videosisu on kustutatud.",
|
||||
"error": "Kustutamine ei õnnestunud: {{error}}"
|
||||
}
|
||||
},
|
||||
"shareTimestamp": {
|
||||
"label": "Jaotise ajatempel",
|
||||
"title": "Jaotise ajatempel",
|
||||
"description": "Jaga praeguse esituskoha ajatempliga URL-i või vali kohandatud ajatempel. Arvesta, et see ei ole avalik jagamislink ja on kättesaadav ainult kasutajatele, kellel on ligipääs Frigate'ile ja sellele kaamerale.",
|
||||
"custom": "Kohandatud ajatempel",
|
||||
"button": "Jaga ajatempliga linki",
|
||||
"shareTitle": "Frigate ülevaate ajatempel: {{camera}}"
|
||||
}
|
||||
},
|
||||
"imagePicker": {
|
||||
|
||||
@@ -12,11 +12,20 @@
|
||||
"description": "Kasutusel"
|
||||
},
|
||||
"audio": {
|
||||
"label": "Helisündmused"
|
||||
"label": "Heli tuvastus",
|
||||
"min_volume": {
|
||||
"label": "Minimaalne helitase"
|
||||
},
|
||||
"filters": {
|
||||
"label": "Audio filtrid"
|
||||
}
|
||||
},
|
||||
"birdseye": {
|
||||
"mode": {
|
||||
"label": "Jälgimisrežiim"
|
||||
},
|
||||
"order": {
|
||||
"label": "Positsioon"
|
||||
}
|
||||
},
|
||||
"label": "Kaameraseadistus",
|
||||
@@ -25,7 +34,8 @@
|
||||
"threshold": {
|
||||
"description": "Minimaalne sarnasuse punktiskoor (0-1), mis on vajalik selle päästiku käivitamiseks."
|
||||
}
|
||||
}
|
||||
},
|
||||
"label": "Semantiline otsing"
|
||||
},
|
||||
"lpr": {
|
||||
"label": "Sõidukite numbrimärkide tuvastus",
|
||||
@@ -34,6 +44,168 @@
|
||||
"review": {
|
||||
"genai": {
|
||||
"description": "Kontrollib generatiivse tehisaru kasutamist kirjelduste ja kokkuvõtete koostamiseks ülevaatamisele kuuluvate objektide jaoks."
|
||||
},
|
||||
"alerts": {
|
||||
"enabled": {
|
||||
"label": "Luba häired"
|
||||
}
|
||||
}
|
||||
},
|
||||
"audio_transcription": {
|
||||
"label": "Audio transkriptsioon",
|
||||
"live_enabled": {
|
||||
"label": "Reaalajas transkriptsioon"
|
||||
}
|
||||
},
|
||||
"detect": {
|
||||
"label": "Objekti tuvastus",
|
||||
"enabled": {
|
||||
"label": "Luba objektituvastus"
|
||||
},
|
||||
"height": {
|
||||
"label": "Tuvastamise kõrgus"
|
||||
},
|
||||
"width": {
|
||||
"label": "Tuvastamise laius"
|
||||
},
|
||||
"fps": {
|
||||
"label": "Tuvastamise kaadrisagedus"
|
||||
},
|
||||
"stationary": {
|
||||
"label": "Püsivate objektide sätted"
|
||||
}
|
||||
},
|
||||
"face_recognition": {
|
||||
"label": "Näotuvastus"
|
||||
},
|
||||
"ffmpeg": {
|
||||
"path": {
|
||||
"label": "FFmpeg asukoht"
|
||||
},
|
||||
"gpu": {
|
||||
"label": "GPU indeks"
|
||||
},
|
||||
"inputs": {
|
||||
"global_args": {
|
||||
"label": "FFmpeg globaalsed argumendid"
|
||||
}
|
||||
}
|
||||
},
|
||||
"live": {
|
||||
"label": "Reaalajas mahamängimine",
|
||||
"height": {
|
||||
"label": "Otseülekande kõrgus"
|
||||
},
|
||||
"quality": {
|
||||
"label": "Otseülekande kvaliteet"
|
||||
},
|
||||
"streams": {
|
||||
"label": "Otseülekande voo nimed"
|
||||
}
|
||||
},
|
||||
"motion": {
|
||||
"label": "Liikumistuvastus",
|
||||
"frame_height": {
|
||||
"label": "Kaadri kõrgus"
|
||||
},
|
||||
"enabled": {
|
||||
"label": "Luba liikumistuvastus"
|
||||
}
|
||||
},
|
||||
"objects": {
|
||||
"label": "Objektid",
|
||||
"filters": {
|
||||
"min_area": {
|
||||
"label": "Minimaalne objekti ala"
|
||||
},
|
||||
"max_area": {
|
||||
"label": "Maksimaalne objekti ala"
|
||||
}
|
||||
},
|
||||
"genai": {
|
||||
"label": "GenAI objekti konfiguratsioon",
|
||||
"required_zones": {
|
||||
"label": "Nõutud tsoonid"
|
||||
},
|
||||
"debug_save_thumbnails": {
|
||||
"label": "Salvesta pisipildid"
|
||||
},
|
||||
"enabled": {
|
||||
"label": "Luba GenAI"
|
||||
},
|
||||
"use_snapshot": {
|
||||
"label": "Kasuta hetktõmmiseid"
|
||||
}
|
||||
}
|
||||
},
|
||||
"mqtt": {
|
||||
"label": "MQTT"
|
||||
},
|
||||
"notifications": {
|
||||
"enabled": {
|
||||
"label": "Luba teavitused"
|
||||
},
|
||||
"email": {
|
||||
"label": "Teavituste email"
|
||||
},
|
||||
"label": "Teavitused"
|
||||
},
|
||||
"ui": {
|
||||
"label": "Kaamera kasutajaliides"
|
||||
},
|
||||
"record": {
|
||||
"label": "Salvestus",
|
||||
"enabled": {
|
||||
"label": "Luba salvestamine"
|
||||
}
|
||||
},
|
||||
"snapshots": {
|
||||
"enabled": {
|
||||
"label": "Luba hetktõmmised"
|
||||
}
|
||||
},
|
||||
"timestamp_style": {
|
||||
"color": {
|
||||
"red": {
|
||||
"label": "Punane",
|
||||
"description": "Punase komponent (0–255) ajatempli värvi jaoks."
|
||||
},
|
||||
"green": {
|
||||
"label": "Roheline",
|
||||
"description": "Rohelise komponent (0–255) ajatempli värvi jaoks."
|
||||
},
|
||||
"blue": {
|
||||
"label": "Sinine",
|
||||
"description": "Sinise komponent (0–255) ajatempli värvi jaoks."
|
||||
},
|
||||
"label": "Ajatempli värv",
|
||||
"description": "Ajatempli teksti RGB värviväärtused (kõik väärtused 0–255)."
|
||||
},
|
||||
"thickness": {
|
||||
"label": "Ajatempli paksus",
|
||||
"description": "Ajatempli teksti joone paksus."
|
||||
},
|
||||
"effect": {
|
||||
"label": "Ajatempli efekt",
|
||||
"description": "Ajatempli teksti visuaalne efekt (puudub, ühtlane, vari)."
|
||||
}
|
||||
},
|
||||
"onvif": {
|
||||
"user": {
|
||||
"label": "ONVIF kasutajanimi"
|
||||
},
|
||||
"password": {
|
||||
"label": "ONVIF parool"
|
||||
},
|
||||
"port": {
|
||||
"label": "ONVIF port"
|
||||
},
|
||||
"label": "ONVIF",
|
||||
"host": {
|
||||
"label": "ONVIF host"
|
||||
}
|
||||
},
|
||||
"profiles": {
|
||||
"label": "Profiilid"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,10 +1,31 @@
|
||||
{
|
||||
"audio": {
|
||||
"label": "Helisündmused"
|
||||
"label": "Heli tuvastus",
|
||||
"min_volume": {
|
||||
"label": "Minimaalne helitase"
|
||||
},
|
||||
"filters": {
|
||||
"label": "Audio filtrid"
|
||||
}
|
||||
},
|
||||
"birdseye": {
|
||||
"mode": {
|
||||
"label": "Jälgimisrežiim"
|
||||
},
|
||||
"order": {
|
||||
"label": "Positsioon"
|
||||
},
|
||||
"height": {
|
||||
"label": "Kõrgus"
|
||||
},
|
||||
"width": {
|
||||
"label": "Laius"
|
||||
},
|
||||
"layout": {
|
||||
"label": "Paigutus",
|
||||
"scaling_factor": {
|
||||
"label": "Skaleerimistegur"
|
||||
}
|
||||
}
|
||||
},
|
||||
"version": {
|
||||
@@ -22,6 +43,15 @@
|
||||
"threshold": {
|
||||
"label": "Punktiskoori lävend",
|
||||
"description": "Punktiskoori lävend, mida kasutatakse klassifitseerimise oleku muutmiseks."
|
||||
},
|
||||
"enabled": {
|
||||
"label": "Luba mudel"
|
||||
},
|
||||
"name": {
|
||||
"label": "Mudeli nimi"
|
||||
},
|
||||
"save_attempts": {
|
||||
"label": "Salvestamiskatsed"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -30,11 +60,25 @@
|
||||
"threshold": {
|
||||
"description": "Minimaalne sarnasuse punktiskoor (0-1), mis on vajalik selle päästiku käivitamiseks."
|
||||
}
|
||||
},
|
||||
"label": "Semantiline otsing",
|
||||
"model_size": {
|
||||
"label": "Mudeli suurus"
|
||||
},
|
||||
"device": {
|
||||
"label": "Seade"
|
||||
}
|
||||
},
|
||||
"face_recognition": {
|
||||
"unknown_score": {
|
||||
"label": "Tundmatu punktiskoori lävend"
|
||||
},
|
||||
"label": "Näotuvastus",
|
||||
"model_size": {
|
||||
"label": "Mudeli suurus"
|
||||
},
|
||||
"device": {
|
||||
"label": "Seade"
|
||||
}
|
||||
},
|
||||
"lpr": {
|
||||
@@ -42,15 +86,393 @@
|
||||
"description": "Sõidukite numbrimärkide tuvastuse seadistus sisaldab tuvastuse lävendeid, vormindust ja teadaolevaid numbrimärke.",
|
||||
"enabled": {
|
||||
"description": "Lülita sõidukite numbrimärkide tuvastus kõikide kaamerate jaoks sisse; seda saad kaamerakohaselt ka sürjutada."
|
||||
},
|
||||
"model_size": {
|
||||
"label": "Mudeli suurus"
|
||||
},
|
||||
"device": {
|
||||
"label": "Seade"
|
||||
}
|
||||
},
|
||||
"genai": {
|
||||
"label": "Generatiivse tehisaru seadistus",
|
||||
"description": "Seadistsued generatiivse tehisaru teenusepakkujate kasutamisel kirjelduste ja kokkuvõtete loomiseks ülevaatamisele kuuluvate objektide jaoks."
|
||||
"description": "Seadistsued generatiivse tehisaru teenusepakkujate kasutamisel kirjelduste ja kokkuvõtete loomiseks ülevaatamisele kuuluvate objektide jaoks.",
|
||||
"model": {
|
||||
"label": "Mudel"
|
||||
},
|
||||
"roles": {
|
||||
"label": "Rollid"
|
||||
},
|
||||
"api_key": {
|
||||
"label": "API võti"
|
||||
},
|
||||
"base_url": {
|
||||
"label": "Baas-URL"
|
||||
}
|
||||
},
|
||||
"review": {
|
||||
"genai": {
|
||||
"description": "Kontrollib generatiivse tehisaru kasutamist kirjelduste ja kokkuvõtete koostamiseks ülevaatamisele kuuluvate objektide jaoks."
|
||||
},
|
||||
"alerts": {
|
||||
"enabled": {
|
||||
"label": "Luba häired",
|
||||
"description": "Luba või keela kõigi kaamerate häirete genereerimine; seda saab kaamerati eraldi muuta."
|
||||
}
|
||||
}
|
||||
},
|
||||
"audio_transcription": {
|
||||
"label": "Audio transkriptsioon",
|
||||
"live_enabled": {
|
||||
"label": "Reaalajas transkriptsioon"
|
||||
},
|
||||
"enabled": {
|
||||
"label": "Luba audio transkriptsioon",
|
||||
"description": "Luba või keela automaatne audio transkriptsioon kõigi kaamerate jaoks; seda saab kaamerati eraldi muuta."
|
||||
},
|
||||
"language": {
|
||||
"label": "Transkriptsioonikeel",
|
||||
"description": "Transkriptsiooni/tõlkimise jaoks kasutatav keelekood (näiteks „en” inglise keele puhul). Toetatud keelekoodid leiad lehelt https://whisper-api.com/docs/languages/."
|
||||
},
|
||||
"device": {
|
||||
"label": "Transkriptsiooniseade"
|
||||
},
|
||||
"model_size": {
|
||||
"label": "Mudeli suurus"
|
||||
}
|
||||
},
|
||||
"detect": {
|
||||
"label": "Objekti tuvastus",
|
||||
"enabled": {
|
||||
"label": "Luba objektituvastus"
|
||||
},
|
||||
"height": {
|
||||
"label": "Tuvastamise kõrgus"
|
||||
},
|
||||
"width": {
|
||||
"label": "Tuvastamise laius"
|
||||
},
|
||||
"fps": {
|
||||
"label": "Tuvastamise kaadrisagedus"
|
||||
},
|
||||
"stationary": {
|
||||
"label": "Püsivate objektide sätted"
|
||||
}
|
||||
},
|
||||
"ffmpeg": {
|
||||
"path": {
|
||||
"label": "FFmpeg asukoht"
|
||||
},
|
||||
"gpu": {
|
||||
"label": "GPU indeks"
|
||||
},
|
||||
"inputs": {
|
||||
"global_args": {
|
||||
"label": "FFmpeg globaalsed argumendid"
|
||||
}
|
||||
},
|
||||
"label": "FFmpeg"
|
||||
},
|
||||
"live": {
|
||||
"label": "Reaalajas mahamängimine",
|
||||
"height": {
|
||||
"label": "Otseülekande kõrgus"
|
||||
},
|
||||
"quality": {
|
||||
"label": "Otseülekande kvaliteet"
|
||||
},
|
||||
"streams": {
|
||||
"label": "Otseülekande voo nimed"
|
||||
}
|
||||
},
|
||||
"motion": {
|
||||
"label": "Liikumistuvastus",
|
||||
"frame_height": {
|
||||
"label": "Kaadri kõrgus"
|
||||
},
|
||||
"enabled": {
|
||||
"label": "Luba liikumistuvastus"
|
||||
}
|
||||
},
|
||||
"objects": {
|
||||
"label": "Objektid",
|
||||
"filters": {
|
||||
"min_area": {
|
||||
"label": "Minimaalne objekti ala"
|
||||
},
|
||||
"max_area": {
|
||||
"label": "Maksimaalne objekti ala"
|
||||
}
|
||||
},
|
||||
"genai": {
|
||||
"label": "GenAI objekti konfiguratsioon",
|
||||
"required_zones": {
|
||||
"label": "Nõutud tsoonid"
|
||||
},
|
||||
"debug_save_thumbnails": {
|
||||
"label": "Salvesta pisipildid"
|
||||
},
|
||||
"enabled": {
|
||||
"label": "Luba GenAI"
|
||||
},
|
||||
"use_snapshot": {
|
||||
"label": "Kasuta hetktõmmiseid"
|
||||
}
|
||||
}
|
||||
},
|
||||
"auth": {
|
||||
"reset_admin_password": {
|
||||
"label": "Lähtesta administraatori parool"
|
||||
},
|
||||
"cookie_name": {
|
||||
"label": "JWT küpsise nimi"
|
||||
},
|
||||
"enabled": {
|
||||
"label": "Luba autentimine"
|
||||
},
|
||||
"label": "Autentimine",
|
||||
"session_length": {
|
||||
"label": "Sessiooni pikkus"
|
||||
}
|
||||
},
|
||||
"database": {
|
||||
"label": "Andmebaas"
|
||||
},
|
||||
"mqtt": {
|
||||
"label": "MQTT",
|
||||
"enabled": {
|
||||
"label": "Luba MQTT"
|
||||
},
|
||||
"user": {
|
||||
"label": "MQTT kasutajanimi"
|
||||
},
|
||||
"tls_ca_certs": {
|
||||
"label": "TLS CA sertifikaat"
|
||||
},
|
||||
"tls_client_cert": {
|
||||
"label": "Kliendi sertifikaat"
|
||||
},
|
||||
"host": {
|
||||
"label": "MQTT host",
|
||||
"description": "MQTT maakleri hostinimi või IP-aadress."
|
||||
},
|
||||
"port": {
|
||||
"label": "MQTT port"
|
||||
},
|
||||
"client_id": {
|
||||
"label": "Kliendi ID"
|
||||
},
|
||||
"stats_interval": {
|
||||
"label": "Statistika intervall"
|
||||
},
|
||||
"tls_client_key": {
|
||||
"label": "Kliendi võti"
|
||||
},
|
||||
"qos": {
|
||||
"label": "MQTT QoS"
|
||||
}
|
||||
},
|
||||
"go2rtc": {
|
||||
"label": "go2rtc"
|
||||
},
|
||||
"notifications": {
|
||||
"enabled": {
|
||||
"label": "Luba teavitused"
|
||||
},
|
||||
"email": {
|
||||
"label": "Teavituste email"
|
||||
},
|
||||
"label": "Teavitused"
|
||||
},
|
||||
"networking": {
|
||||
"ipv6": {
|
||||
"label": "IPv6 sätted",
|
||||
"enabled": {
|
||||
"label": "Luba IPv6"
|
||||
}
|
||||
},
|
||||
"label": "Võrguühendus",
|
||||
"listen": {
|
||||
"internal": {
|
||||
"label": "Sisemine port"
|
||||
},
|
||||
"external": {
|
||||
"label": "Välimine port"
|
||||
}
|
||||
}
|
||||
},
|
||||
"proxy": {
|
||||
"label": "Vaheserver",
|
||||
"logout_url": {
|
||||
"label": "Väljalogimise url"
|
||||
},
|
||||
"default_role": {
|
||||
"label": "Vaikimisi roll"
|
||||
}
|
||||
},
|
||||
"telemetry": {
|
||||
"stats": {
|
||||
"label": "Süsteemi statistika",
|
||||
"amd_gpu_stats": {
|
||||
"label": "AMD GPU statistika"
|
||||
},
|
||||
"intel_gpu_stats": {
|
||||
"label": "Intel GPU statistika"
|
||||
},
|
||||
"intel_gpu_device": {
|
||||
"label": "Intel GPU seade"
|
||||
},
|
||||
"network_bandwidth": {
|
||||
"label": "Võrgu ribalaius"
|
||||
}
|
||||
},
|
||||
"label": "Telemeetria",
|
||||
"network_interfaces": {
|
||||
"label": "Võrguliides"
|
||||
},
|
||||
"version_check": {
|
||||
"label": "Versiooni kontroll",
|
||||
"description": "Luba väljaminev ühendus, et kontrollida uuema Frigate versooni olemasolu."
|
||||
}
|
||||
},
|
||||
"tls": {
|
||||
"label": "TLS",
|
||||
"enabled": {
|
||||
"label": "Luba TLS"
|
||||
}
|
||||
},
|
||||
"ui": {
|
||||
"timezone": {
|
||||
"label": "ajavöönd"
|
||||
},
|
||||
"label": "Kasutajaliides",
|
||||
"description": "Kasutajaliidese eelistused nagu ajavöönd, aja ja kuupäeva formaat ning ühikud.",
|
||||
"unit_system": {
|
||||
"label": "Ühikute süsteem"
|
||||
}
|
||||
},
|
||||
"detectors": {
|
||||
"label": "Detektori riistvara",
|
||||
"cpu": {
|
||||
"label": "CPU"
|
||||
},
|
||||
"deepstack": {
|
||||
"label": "DeepStack"
|
||||
},
|
||||
"edgetpu": {
|
||||
"label": "EdgeTPU"
|
||||
},
|
||||
"onnx": {
|
||||
"label": "ONNX",
|
||||
"device": {
|
||||
"label": "Seadme tüüp"
|
||||
}
|
||||
},
|
||||
"rknn": {
|
||||
"label": "RKNN"
|
||||
},
|
||||
"openvino": {
|
||||
"label": "OpenVINO"
|
||||
},
|
||||
"tensorrt": {
|
||||
"label": "TensorRT"
|
||||
},
|
||||
"teflon_tfl": {
|
||||
"label": "Teflon"
|
||||
},
|
||||
"synaptics": {
|
||||
"label": "Synaptics"
|
||||
},
|
||||
"memryx": {
|
||||
"device": {
|
||||
"label": "Seadme asukoht"
|
||||
},
|
||||
"label": "MemryX"
|
||||
},
|
||||
"hailo8l": {
|
||||
"label": "Hailo-8/Hailo-8L"
|
||||
},
|
||||
"zmq": {
|
||||
"label": "ZMQ IPC"
|
||||
},
|
||||
"axengine": {
|
||||
"label": "AXEngine NPU"
|
||||
},
|
||||
"degirum": {
|
||||
"label": "DeGirum"
|
||||
}
|
||||
},
|
||||
"logger": {
|
||||
"label": "Logimine"
|
||||
},
|
||||
"model": {
|
||||
"label": "Tuvastusmudel"
|
||||
},
|
||||
"record": {
|
||||
"label": "Salvestus",
|
||||
"enabled": {
|
||||
"label": "Luba salvestamine",
|
||||
"description": "Luba või keela salvestamine kõigi kaamerate jaoks; seda saab kaamerati eraldi muuta."
|
||||
}
|
||||
},
|
||||
"snapshots": {
|
||||
"enabled": {
|
||||
"label": "Luba hetktõmmised",
|
||||
"description": "Luba või keela kõigi kaamerate hetktõmmiste salvestamine; seda saab kaamerati eraldi muuta."
|
||||
}
|
||||
},
|
||||
"timestamp_style": {
|
||||
"color": {
|
||||
"red": {
|
||||
"label": "Punane",
|
||||
"description": "Punase komponent (0–255) ajatempli värvi jaoks."
|
||||
},
|
||||
"green": {
|
||||
"label": "Roheline",
|
||||
"description": "Rohelise komponent (0–255) ajatempli värvi jaoks."
|
||||
},
|
||||
"blue": {
|
||||
"label": "Sinine",
|
||||
"description": "Sinise komponent (0–255) ajatempli värvi jaoks."
|
||||
},
|
||||
"label": "Ajatempli värv",
|
||||
"description": "Ajatempli teksti RGB värviväärtused (kõik väärtused 0–255)."
|
||||
},
|
||||
"thickness": {
|
||||
"label": "Ajatempli paksus",
|
||||
"description": "Ajatempli teksti joone paksus."
|
||||
},
|
||||
"effect": {
|
||||
"label": "Ajatempli efekt",
|
||||
"description": "Ajatempli teksti visuaalne efekt (puudub, ühtlane, vari)."
|
||||
}
|
||||
},
|
||||
"onvif": {
|
||||
"user": {
|
||||
"label": "ONVIF kasutajanimi"
|
||||
},
|
||||
"password": {
|
||||
"label": "ONVIF parool"
|
||||
},
|
||||
"port": {
|
||||
"label": "ONVIF port"
|
||||
},
|
||||
"label": "ONVIF",
|
||||
"host": {
|
||||
"label": "ONVIF host"
|
||||
}
|
||||
},
|
||||
"camera_mqtt": {
|
||||
"quality": {
|
||||
"label": "JPEG kvaliteet",
|
||||
"description": "MQTT-sse saadetud piltide JPEG-kvaliteet (0–100)."
|
||||
},
|
||||
"enabled": {
|
||||
"label": "Saada pilt"
|
||||
},
|
||||
"label": "MQTT"
|
||||
},
|
||||
"profiles": {
|
||||
"label": "Profiilid"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,5 +6,67 @@
|
||||
"error": "Midagi läks valesti. Palun proovi uuesti.",
|
||||
"processing": "Töötlen…",
|
||||
"toolsUsed": "Kasutatud: {{tools}}",
|
||||
"similarity_score": "Sarnasus"
|
||||
"similarity_score": "Sarnasus",
|
||||
"showTools": "Näita tööriistu ({{count}})",
|
||||
"hideTools": "Peida tööriistad",
|
||||
"call": "Kutse",
|
||||
"result": "Tulemus",
|
||||
"arguments": "Argumendid:",
|
||||
"response": "Vastus:",
|
||||
"send": "Saada",
|
||||
"new_chat": "Uus vestlus",
|
||||
"settings": {
|
||||
"title": "Vestluse sätted",
|
||||
"show_stats": {
|
||||
"title": "Näita statistikat",
|
||||
"always": "Alati",
|
||||
"desc": "Kuva vastuste genereerimise kiirus ja konteksti suurus.",
|
||||
"while_generating": "Genereerimise ajal"
|
||||
},
|
||||
"auto_scroll": {
|
||||
"title": "Automaatne kerimine",
|
||||
"desc": "Jälgi uusi sõnumeid kohe, kui need saabuvad."
|
||||
}
|
||||
},
|
||||
"stats": {
|
||||
"context": "{{tokens}} tokenit",
|
||||
"tokens_per_second": "{{rate}} t/s"
|
||||
},
|
||||
"starting_requests_prompts": {
|
||||
"recap": "Mis juhtus kui ma olin ära?",
|
||||
"watch_camera": "Jälgi ust ja anna mulle teada kui keegi tuleb",
|
||||
"show_camera_status": "Milline on minu kaamerate praegune seis?",
|
||||
"show_recent_events": "Näita mulle viimase tunni viimaseid sündmusi"
|
||||
},
|
||||
"starting_requests": {
|
||||
"show_camera_status": "Näita kaamera olekut",
|
||||
"show_recent_events": "Kuva hiljutised sündmused",
|
||||
"recap": "Mis juhtus kui ma olin ära?",
|
||||
"watch_camera": "Jälgi kaamerat aktiivsuse osas"
|
||||
},
|
||||
"suggested_requests": "Proovi küsida:",
|
||||
"semantic_search_required": "Sarnaste objektide leidmiseks peab olema lubatud semantiline otsing.",
|
||||
"no_similar_objects_found": "Sarnaseid objekte ei leitud.",
|
||||
"quick_reply_when_else": "Millal seda veel nähti?",
|
||||
"quick_reply_find_similar_text": "Leia sarnaseid vaatepilte.",
|
||||
"quick_reply_tell_me_more_text": "Räägi mulle sellest lähemalt.",
|
||||
"quick_reply_when_else_text": "Millal seda veel nähtud on?",
|
||||
"attach_event_aria": "Lisa sündmus {{eventId}}",
|
||||
"attachment_picker_paste_label": "Või kleebi sündmuse ID",
|
||||
"attachment_picker_attach": "Lisa",
|
||||
"attachment_picker_placeholder": "Lisa sündmus",
|
||||
"quick_reply_find_similar": "Leia sarnaseid vaatlusi",
|
||||
"quick_reply_tell_me_more": "Räägi mulle sellest lähemalt",
|
||||
"attachment_chip_remove": "Eemalda manus",
|
||||
"attachment_chip_label": "{{label}} kaameras {{camera}}",
|
||||
"open_in_explore": "Ava uurimisvaates",
|
||||
"anchor": "Viide",
|
||||
"reasoning": {
|
||||
"active": "Otsin põhjendust…",
|
||||
"show": "Näita põhjendust",
|
||||
"hide": "Peida põhjendus"
|
||||
},
|
||||
"thinking": {
|
||||
"toggle": "Näita mõtlemise olekut või peida see"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -43,5 +43,8 @@
|
||||
},
|
||||
"tooltip": {
|
||||
"trainingInProgress": "Mudel on parasjagu õppimas"
|
||||
},
|
||||
"train": {
|
||||
"titleShort": "Hiljutised"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,7 +5,8 @@
|
||||
"noTrackedObjects": "Ühtegi jälgitavat objekti ei leidunud",
|
||||
"itemMenu": {
|
||||
"findSimilar": {
|
||||
"aria": "Otsi sarnaseid jälgitavaid objekte"
|
||||
"aria": "Otsi sarnaseid jälgitavaid objekte",
|
||||
"label": "Leia sarnane"
|
||||
},
|
||||
"downloadSnapshot": {
|
||||
"label": "Laadi hetkvõte alla",
|
||||
@@ -14,6 +15,14 @@
|
||||
"downloadCleanSnapshot": {
|
||||
"label": "Laadi puhas hetkvõte alla",
|
||||
"aria": "Laadi puhas hetkvõte alla"
|
||||
},
|
||||
"viewTrackingDetails": {
|
||||
"label": "Vaata jälgimise üksikasju",
|
||||
"aria": "Näita jälgimise üksikasju"
|
||||
},
|
||||
"downloadVideo": {
|
||||
"label": "Laadi video alla",
|
||||
"aria": "Laadi video alla"
|
||||
}
|
||||
},
|
||||
"trackingDetails": {
|
||||
@@ -21,11 +30,22 @@
|
||||
"showAllZones": {
|
||||
"title": "Näita kõiki tsoone",
|
||||
"desc": "Kui objekt on sisenenud tsooni, siis alati näida tsooni märgistust."
|
||||
},
|
||||
"title": "Annotatsioonide seaded",
|
||||
"offset": {
|
||||
"desc": "Need andmed pärinevad teie kaamera tuvastusvoost, kuid on salvestusvoo piltide peal. On ebatõenäoline, et need kaks voogu on ideaalselt sünkroonis. Seetõttu ei joondu piirav kast ja kaader ideaalselt. Selle säte abil saad annotatsioone ajas edasi või tagasi nihutada, et need salvestatud kaadriga paremini joonduks.",
|
||||
"millisecondsToOffset": "Millisekundid annotatsioonide tuvastuse nihutamiseks. <em>Vaikimisi: 0</em>",
|
||||
"tips": "Vähendage väärtust, kui video taasesitus on kastidest ja teekonnapunktidest ees, ning suurendage väärtust, kui video taasesitus on neist maas. See väärtus võib olla negatiivne.",
|
||||
"toast": {
|
||||
"success": "Kaamera '{{camera}}' annotatsiooni nihe on konfiguratsioonifaili salvestatud."
|
||||
},
|
||||
"label": "Annotatsiooni nihe"
|
||||
}
|
||||
},
|
||||
"lifecycleItemDesc": {
|
||||
"attribute": {
|
||||
"other": "{{label}} on tuvastatud kui {{attribute}}"
|
||||
"other": "{{label}} on tuvastatud kui {{attribute}}",
|
||||
"faceOrLicense_plate": "{{attribute}} tuvastatud objektil {{label}}"
|
||||
},
|
||||
"stationary": "{{label}} jäi paigale",
|
||||
"active": "{{label}} muutus aktiivseks",
|
||||
@@ -37,7 +57,8 @@
|
||||
"area": "Ala",
|
||||
"score": "Punktiskoor",
|
||||
"computedScore": "Arvutatud punktiskoor",
|
||||
"topScore": "Suuremad punktiskoorid"
|
||||
"topScore": "Suuremad punktiskoorid",
|
||||
"toggleAdvancedScores": "Täpsemate tulemuste sisse-/väljalülitamine"
|
||||
},
|
||||
"external": "{{label}} on tuvastatud",
|
||||
"heard": "{{label}} on kuuldud",
|
||||
@@ -50,7 +71,11 @@
|
||||
"previous": "Eelmine slaid",
|
||||
"next": "Järgmine slaid"
|
||||
},
|
||||
"count": "{{first}} / {{second}}"
|
||||
"count": "{{first}} / {{second}}",
|
||||
"adjustAnnotationSettings": "Korrigeeri annotatsioonide seadeid",
|
||||
"scrollViewTips": "Klõpsake selle objekti elutsükli oluliste hetkede vaatamiseks.",
|
||||
"autoTrackingTips": "Piirdekastide asukohad on automaatselt jälgivate kaamerate puhul ebatäpsed.",
|
||||
"trackedPoint": "Jälgitav punkt"
|
||||
},
|
||||
"documentTitle": "Avasta - Frigate",
|
||||
"generativeAI": "Generatiivne tehisaru",
|
||||
@@ -64,7 +89,22 @@
|
||||
},
|
||||
"startingUp": "Käivitun…",
|
||||
"estimatedTime": "Hinnanguliselt jäänud aega:",
|
||||
"finishingShortly": "Lõpetan õige pea"
|
||||
"finishingShortly": "Lõpetan õige pea",
|
||||
"context": "Avastamist saab kasutada pärast seda, kui jälgitavate objektide manustamine on uuesti indekseerimise lõpetanud."
|
||||
},
|
||||
"title": "Avastamine pole saadaval",
|
||||
"downloadingModels": {
|
||||
"context": "Frigate laadib alla semantilise otsingu funktsiooni toetamiseks vajalikke manustamismudeleid. See võib võtta mitu minutit, olenevalt teie võrguühenduse kiirusest.",
|
||||
"setup": {
|
||||
"visionModel": "Nägemismudel",
|
||||
"visionModelFeatureExtractor": "Nägemismudeli tunnuste eraldaja",
|
||||
"textModel": "Tekstimudel",
|
||||
"textTokenizer": "Teksti tokenisaator"
|
||||
},
|
||||
"tips": {
|
||||
"context": "Pärast mudelite allalaadimist tuleks oma jälgitavate objektide manused uuesti indekseerida."
|
||||
},
|
||||
"error": "Tekkis viga. Kontrollige Frigate'i logisid."
|
||||
}
|
||||
},
|
||||
"type": {
|
||||
@@ -107,8 +147,52 @@
|
||||
},
|
||||
"recognizedLicensePlate": "Tuvastatud sõiduki numbrimärk",
|
||||
"description": {
|
||||
"aiTips": "Frigate ei küsi sinu generatiivse tehisaru teenusepakkujalt kirjeldust enne, kui jälgitava objekti elutsükkel on lõppenud."
|
||||
"aiTips": "Frigate ei küsi sinu generatiivse tehisaru teenusepakkujalt kirjeldust enne, kui jälgitava objekti elutsükkel on lõppenud.",
|
||||
"label": "Kirjeldus",
|
||||
"placeholder": "Jälgitava objekti kirjeldus"
|
||||
},
|
||||
"label": "Silt",
|
||||
"editSubLabel": {
|
||||
"title": "Muuda alamsilti",
|
||||
"desc": "Sisesta sildile '{{label}}' uus alamsilt",
|
||||
"descNoLabel": "Sisesta sellele jälgitavale objektile uus alamsilt"
|
||||
},
|
||||
"camera": "Kaamera",
|
||||
"zones": "Tsoonid",
|
||||
"title": {
|
||||
"label": "Pealkiri"
|
||||
},
|
||||
"button": {
|
||||
"findSimilar": "Leia sarnane",
|
||||
"regenerate": {
|
||||
"title": "Taasloomine",
|
||||
"label": "Jälgitava objekti kirjelduse uuesti genereerimine"
|
||||
}
|
||||
},
|
||||
"topScore": {
|
||||
"label": "Parim punktiskoor",
|
||||
"info": "Kõrgeim skoor on jälgitava objekti kõrgeim mediaanskoor, seega võib see erineda otsingutulemuste pisipildil kuvatavast skoorist."
|
||||
},
|
||||
"objects": "Objektid",
|
||||
"tips": {
|
||||
"descriptionSaved": "Kirjeldus salvestati edukalt",
|
||||
"saveDescriptionFailed": "Kirjelduse uuendamine ebaõnnestus: {{errorMessage}}"
|
||||
},
|
||||
"attributes": "Klassifikatsiooni atribuudid",
|
||||
"estimatedSpeed": "Hinnanguline kiirus",
|
||||
"editAttributes": {
|
||||
"title": "Atribuutide muutmine",
|
||||
"desc": "Valige selle sildi '{{label}}' jaoks klassifikatsiooniatribuudid"
|
||||
}
|
||||
},
|
||||
"trackedObjectDetails": "Jälgitava objekti üksikasjad"
|
||||
"trackedObjectDetails": "Jälgitava objekti üksikasjad",
|
||||
"aiAnalysis": {
|
||||
"title": "Tehisintellekti analüüs"
|
||||
},
|
||||
"concerns": {
|
||||
"label": "Mured"
|
||||
},
|
||||
"objectLifecycle": {
|
||||
"noImageFound": "Selle jälgitava objekti kohta ei leitud pilti."
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,12 +16,15 @@
|
||||
"downloadVideo": "Laadi video alla",
|
||||
"editName": "Muuda nime",
|
||||
"deleteExport": "Kustuta eksporditud sisu",
|
||||
"assignToCase": "Lisa juhtumile"
|
||||
"assignToCase": "Lisa juhtumile",
|
||||
"removeFromCase": "Eemalda juhtumist"
|
||||
},
|
||||
"toast": {
|
||||
"error": {
|
||||
"renameExportFailed": "Eksporditud sisu nime muutmine ei õnnestunud: {{errorMessage}}",
|
||||
"assignCaseFailed": "Juhtumiga seose uuendamine ei õnnestunud: {{errorMessage}}"
|
||||
"assignCaseFailed": "Juhtumiga seose uuendamine ei õnnestunud: {{errorMessage}}",
|
||||
"caseSaveFailed": "Juhtumi salvestamine ei õnnestunud: {{errorMessage}}",
|
||||
"caseDeleteFailed": "Juhtumi kustutamine ei õnnestunud: {{errorMessage}}"
|
||||
}
|
||||
},
|
||||
"headings": {
|
||||
@@ -35,5 +38,44 @@
|
||||
"nameLabel": "Juhtumi nimi",
|
||||
"descriptionLabel": "Kirjeldus",
|
||||
"description": "Vali olemasolev juhtum või lisa uus."
|
||||
},
|
||||
"toolbar": {
|
||||
"newCase": "Uus juhtum",
|
||||
"addExport": "Lisa eksportimiseks",
|
||||
"editCase": "Muuda juhtumit",
|
||||
"deleteCase": "Kustuta juhtum"
|
||||
},
|
||||
"deleteCase": {
|
||||
"label": "Kustuta juhtum",
|
||||
"desc": "Kas oled kindel, et soovid „{{caseName}}“ juhtumi kustutada?"
|
||||
},
|
||||
"caseCard": {
|
||||
"emptyCase": "Eksportimise veel pole"
|
||||
},
|
||||
"jobCard": {
|
||||
"defaultName": "Eksportimine kaamerast „{{camera}}“",
|
||||
"queued": "Lisatud järjekorda",
|
||||
"running": "Töös",
|
||||
"preparing": "Ettevalmistamisel",
|
||||
"copying": "Kopeerimisel",
|
||||
"encoding": "Kodeerimisel",
|
||||
"encodingRetry": "Kodeerimisel (uuesti)",
|
||||
"finalizing": "Lõpetamisel"
|
||||
},
|
||||
"caseView": {
|
||||
"noDescription": "Kirjeldust pole",
|
||||
"createdAt": "Loodud {{value}}",
|
||||
"exportCount_one": "1 eksportimine",
|
||||
"exportCount_other": "{{count}} eksportimist",
|
||||
"cameraCount_one": "1 kaamera",
|
||||
"cameraCount_other": "{{count}} kaamerat",
|
||||
"showMore": "Näita rohkem",
|
||||
"showLess": "Näita vähem",
|
||||
"emptyTitle": "See juhtum on tühi"
|
||||
},
|
||||
"caseEditor": {
|
||||
"namePlaceholder": "Juhtumi nimi",
|
||||
"editTitle": "Muuda juhtumit",
|
||||
"createTitle": "Lisa juhtum"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,11 @@
|
||||
{
|
||||
"button": {
|
||||
"uploadImage": "Laadi pilt üles"
|
||||
"uploadImage": "Laadi pilt üles",
|
||||
"deleteFaceAttempts": "Kustuta näod",
|
||||
"addFace": "Lisa nägu",
|
||||
"renameFace": "Nimeta nägu ümber",
|
||||
"deleteFace": "Kustuta nägu",
|
||||
"reprocessFace": "Käivita näotuvastus uuesti"
|
||||
},
|
||||
"collections": "Kogumikud",
|
||||
"description": {
|
||||
@@ -11,28 +16,41 @@
|
||||
},
|
||||
"documentTitle": "Näoteek - Frigate",
|
||||
"createFaceLibrary": {
|
||||
"new": "Lisa uus nägu"
|
||||
"new": "Lisa uus nägu",
|
||||
"nextSteps": "Tugeva tuvastusaluse loomiseks:<li>Kasuta vahekaarti \"Hiljutised tuvastused\", et valida pilte ja treenida isikutuvastust.</li><li>Parima tulemuse saavutamiseks keskendu otsepiltidele; väldi nurga all olevaid nägusid treenimiseks.</li></ul>"
|
||||
},
|
||||
"deleteFaceLibrary": {
|
||||
"title": "Kustuta nimi"
|
||||
"title": "Kustuta nimi",
|
||||
"desc": "Kas oled kindel, et soovid isiku '{{name}}' kollektsiooni kustutada? See kustutab jäädavalt kõik seotud näod."
|
||||
},
|
||||
"toast": {
|
||||
"error": {
|
||||
"addFaceLibraryFailed": "Näo sidumine nimega ei õnnestunud: {{errorMessage}}",
|
||||
"updateFaceScoreFailed": "Näo punktiskoori uuendamine ei õnnestunud: {{errorMessage}}"
|
||||
"updateFaceScoreFailed": "Näo punktiskoori uuendamine ei õnnestunud: {{errorMessage}}",
|
||||
"uploadingImageFailed": "Pildi üleslaadimine ebaõnnestus: {{errorMessage}}",
|
||||
"deleteFaceFailed": "Kustutamine ebaõnnestus: {{errorMessage}}",
|
||||
"deleteNameFailed": "Nime kustutamine ebaõnnestus: {{errorMessage}}",
|
||||
"renameFaceFailed": "Näo ümbernimetamine ebaõnnestus: {{errorMessage}}",
|
||||
"trainFailed": "Treenimine ebaõnnestus: {{errorMessage}}",
|
||||
"reclassifyFailed": "Näo ümberklassifitseerimine ebaõnnestus: {{errorMessage}}"
|
||||
},
|
||||
"success": {
|
||||
"addFaceLibrary": "Lisamine Näoteeki õnnestus: {{name}}!",
|
||||
"addFaceLibrary": "Lisamine nägude kogusse õnnestus: {{name}}!",
|
||||
"deletedFace_one": "{{count}} näo kustutamine õnnestus.",
|
||||
"deletedFace_other": "{{count}} näo kustutamine õnnestus.",
|
||||
"deletedName_one": "{{count}} näo kustutamine õnnestus.",
|
||||
"deletedName_other": "{{count}} näo kustutamine õnnestus.",
|
||||
"updatedFaceScore": "Näo punktiskoori uuendamine õnnestus: {{name}} ({{score}})."
|
||||
"updatedFaceScore": "Näo punktiskoori uuendamine õnnestus: {{name}} ({{score}}).",
|
||||
"uploadedImage": "Pildi üleslaadimine õnnestus.",
|
||||
"renamedFace": "Näo ümbernimetamine õnnestus, uus nimi on {{name}}",
|
||||
"trainedFace": "Edukalt treenitud nägu.",
|
||||
"reclassifiedFace": "Näo ümberklassifitseerimine õnnestus."
|
||||
}
|
||||
},
|
||||
"deleteFaceAttempts": {
|
||||
"desc_one": "Kas oled kindel, et soovid kustutada {{count}} näo? Seda tegevust ei saa tagasi pöörata.",
|
||||
"desc_other": "Kas oled kindel, et soovid kustutada {{count}} nägu? Seda tegevust ei saa tagasi pöörata."
|
||||
"desc_other": "Kas oled kindel, et soovid kustutada {{count}} nägu? Seda tegevust ei saa tagasi pöörata.",
|
||||
"title": "Kustuta näod"
|
||||
},
|
||||
"details": {
|
||||
"timestamp": "Ajatampel",
|
||||
@@ -42,5 +60,40 @@
|
||||
"uploadFaceImage": {
|
||||
"title": "Laadi näopilt üles",
|
||||
"desc": "Laadi üles pilt, et otsida sellelt nägusid ja lisada see {{pageToggle}}'i jaoks"
|
||||
}
|
||||
},
|
||||
"steps": {
|
||||
"faceName": "Lisa näole nimi",
|
||||
"uploadFace": "Lae näopilt üles",
|
||||
"nextSteps": "Järgmised sammud",
|
||||
"description": {
|
||||
"uploadFace": "Laadi üles pilt isikust '{{name}}', mis näitab tema nägu eestvaates. Ainult nägu ei pea pildilt välja lõikama."
|
||||
}
|
||||
},
|
||||
"train": {
|
||||
"title": "Hiljutised tuvastamised",
|
||||
"titleShort": "Hiljutised",
|
||||
"aria": "Vali hiljutised tuvastamised",
|
||||
"empty": "Hiljutisi näotuvastuse katseid pole",
|
||||
"emptyNoLibrary": {
|
||||
"title": "Laadi üles nägu",
|
||||
"description": "Näotuvastuse toimimiseks peate lisama vähemalt ühe näo kogusse."
|
||||
}
|
||||
},
|
||||
"renameFace": {
|
||||
"title": "Nimeta nägu ümber",
|
||||
"desc": "Sisesta uus nimi isiku '{{name}}' jaoks"
|
||||
},
|
||||
"imageEntry": {
|
||||
"validation": {
|
||||
"selectImage": "Palun vali pildifail."
|
||||
},
|
||||
"dropActive": "Lohista pilt siia…",
|
||||
"dropInstructions": "Lohistage või kleepige pilt siia või klõpsake valimiseks",
|
||||
"maxSize": "Maksimum suurus: {{size}}MB"
|
||||
},
|
||||
"nofaces": "Nägusid pole saadaval",
|
||||
"trainFaceAs": "Treeni nägu kui:",
|
||||
"trainFace": "Treeni nägu",
|
||||
"reclassifyFaceAs": "Liigita nägu ümber järgmiselt:",
|
||||
"reclassifyFace": "Näo ümberklassifitseerimine"
|
||||
}
|
||||
|
||||
@@ -1,4 +1,78 @@
|
||||
{
|
||||
"documentTitle": "Liikumise tuvastus - Frigate",
|
||||
"title": "Liikumise otsing"
|
||||
"title": "Liikumise otsing",
|
||||
"cancelSearch": "Tühista",
|
||||
"startSearch": "Alusta otsingut",
|
||||
"selectCamera": "Liikumisotsingut laaditakse",
|
||||
"description": "Joonesta hulknurk, et määratleda huvipakkuv piirkond, ja määra ajavahemik, mille jooksul otsida liikumise muutusi selles piirkonnas.",
|
||||
"searchStarted": "Otsing alustatud",
|
||||
"searchCancelled": "Otsing tühistatud",
|
||||
"searching": "Otsing on pooleli.",
|
||||
"searchComplete": "Otsing lõpetatud",
|
||||
"noResultsYet": "Käivita otsing valitud piirkonnas liikumise muutuste leidmiseks",
|
||||
"noChangesFound": "Valitud piirkonnas ei tuvastatud pikslimuutusi",
|
||||
"results": "Tulemused",
|
||||
"polygonControls": {
|
||||
"drawMode": "Joonista",
|
||||
"moveMode": "Liiguta",
|
||||
"reset": "Lähtesta hulknurk",
|
||||
"undo": "Tühista viimane punkt",
|
||||
"points_one": "{{count}} punkt",
|
||||
"points_other": "{{count}} punkti"
|
||||
},
|
||||
"newSearch": "Uus otsing",
|
||||
"clearResults": "Tühista tulemused",
|
||||
"clearROI": "Tühista hulknurk",
|
||||
"dialog": {
|
||||
"cameraLabel": "Kaamera",
|
||||
"title": "Liikumisotsing",
|
||||
"previewAlt": "Kaamera '{{camera}}' eelvaade"
|
||||
},
|
||||
"timeRange": {
|
||||
"title": "Otsinguvahemik",
|
||||
"start": "Algusaeg",
|
||||
"end": "Lõppaeg"
|
||||
},
|
||||
"settings": {
|
||||
"title": "Otsinguseaded",
|
||||
"parallelMode": "Paralleelrežiim",
|
||||
"parallelModeDesc": "Skanni mitut salvestusvahemikku korraga (kiirem; kasutab rohkem dekodeerimisressursse)",
|
||||
"threshold": "Tundlikkuse lävi",
|
||||
"thresholdDesc": "Väiksemad väärtused tuvastavad väiksemaid muutusi (1–255)",
|
||||
"minArea": "Minimaalne muutusala",
|
||||
"minAreaDesc": "Ühe liikuva piirkonna minimaalne suurus protsentides huvipakkuvast piirkonnast",
|
||||
"maxResults": "Maksimaalselt tulemusi",
|
||||
"maxResultsDesc": "Peata pärast nii paljude ajatemplite sobivust"
|
||||
},
|
||||
"errors": {
|
||||
"noCamera": "Palun vali kaamera",
|
||||
"noROI": "Palun joonistage huvipakkuv piirkond",
|
||||
"noTimeRange": "Palun valige ajavahemik",
|
||||
"invalidTimeRange": "Lõppaeg peab olema pärast algusaega",
|
||||
"searchFailed": "Otsing ebaõnnestus: {{message}}",
|
||||
"polygonTooSmall": "Hulknurgal peab olema vähemalt 3 punkti",
|
||||
"unknown": "Tundmatu viga"
|
||||
},
|
||||
"changePercentage": "{{percentage}}% muutus",
|
||||
"metrics": {
|
||||
"title": "Otsingumõõdikud",
|
||||
"segmentsScanned": "Skannitud segmente",
|
||||
"segmentsProcessed": "Töödeldud",
|
||||
"segmentsSkippedInactive": "Vahele jäetud (tegevust pole)",
|
||||
"segmentsSkippedHeatmap": "Vahele jäetud (kattuvaid piirkondi pole)",
|
||||
"fallbackFullRange": "Varurežiimis täisulatusega skaneerimine",
|
||||
"framesDecoded": "Kaadreid dekodeeritud",
|
||||
"wallTime": "Otsingu aeg",
|
||||
"seconds": "{{seconds}}s",
|
||||
"minutesSeconds": "{{minutes}}m {{seconds}}s",
|
||||
"segmentErrors": "Segmendi vead",
|
||||
"scanSummary": "{{segments}} segmenti · {{time}}"
|
||||
},
|
||||
"jumpToTime": "Hüppa sellele ajale",
|
||||
"framesProcessed": "{{count}} kaadrit töödeldud",
|
||||
"changesFound_one": "Tuvastatud {{count}} liikumine",
|
||||
"changesFound_other": "Tuvastatud {{count}} liikumist",
|
||||
"motionHeatmapLabel": "Liikumise soojakaart",
|
||||
"showSegmentHeatmap": "Soojakaart",
|
||||
"scanning": "Skannimine {{time}}"
|
||||
}
|
||||
|
||||
@@ -12,7 +12,48 @@
|
||||
"selectFromTimeline": "Vali",
|
||||
"starting": "Käivitan kordust…",
|
||||
"startLabel": "Algus",
|
||||
"endLabel": "Lõpp"
|
||||
"endLabel": "Lõpp",
|
||||
"title": "Alusta silumise taasesitust",
|
||||
"description": "Looge ajutine taasesituskaamera, mis kordab ajaloolist salvestist objektide tuvastamise ja jälgimise probleemide silumiseks. Taasesituskaameral on sama tuvastusseadistus mis lähtekaameral. Valige algusaeg.",
|
||||
"toast": {
|
||||
"error": "Silumise taasesitus ebaõnnestus: {{error}}",
|
||||
"alreadyActive": "Kordusseanss on juba aktiivne",
|
||||
"stopError": "Silumise taasesituse peatamine ebaõnnestus: {{error}}",
|
||||
"goToReplay": "Mine kordusesse"
|
||||
}
|
||||
},
|
||||
"title": "Kordus veaotsinguks"
|
||||
"title": "Kordus veaotsinguks",
|
||||
"websocket_messages": "Sõnumid",
|
||||
"description": "Mängi kaamera salvestisi veaotsinguks. Objektide loend näitab tuvastatud objektide ajalist viivitust ja vahekaart „Sõnumid” näitab Fregati sisemiste sõnumite voogu taasesituse materjalist.",
|
||||
"page": {
|
||||
"noSession": "Aktiivset silumis- ja taasesitusseanssi pole",
|
||||
"noSessionDesc": "Alusta silumissalvestise taasesitust ajaloo vaates, klõpsates tööriistaribal nupul \"Toimingud\" ja valides silumissalvestise taasesituse.",
|
||||
"goToRecordings": "Mine ajaloo vaatesse",
|
||||
"preparingClip": "Klipi ettevalmistamine…",
|
||||
"preparingClipDesc": "Frigate koondab valitud ajavahemiku salvestisi. Pikemate vahemike puhul võib see võtta kauem.",
|
||||
"startingCamera": "Silumise taasesituse käivitamine…",
|
||||
"startError": {
|
||||
"title": "Silumise taasesituse käivitamine ebaõnnestus",
|
||||
"back": "Tagasi ajaloo vaatesse"
|
||||
},
|
||||
"sourceCamera": "Lähtekaamera",
|
||||
"replayCamera": "Taasesituse kaamera",
|
||||
"initializingReplay": "Silumise taasesituse initsialiseerimine...",
|
||||
"stoppingReplay": "Silumise taasesituse peatamine...",
|
||||
"stopReplay": "Peata kordusesitus",
|
||||
"confirmStop": {
|
||||
"title": "Peata silumise kordusesitus?",
|
||||
"description": "See peatab seansi ja kustutab kõik ajutised andmed. Kas oled kindel?",
|
||||
"confirm": "Peata kordusesitus",
|
||||
"cancel": "Tühista"
|
||||
},
|
||||
"activity": "Toimingud",
|
||||
"objects": "Objekti loend",
|
||||
"audioDetections": "Audio tuvastused",
|
||||
"noActivity": "Ühtegi tegevust ei tuvastatud",
|
||||
"activeTracking": "Aktiivne jälgimine",
|
||||
"noActiveTracking": "Aktiivset jälgimist pole",
|
||||
"configuration": "Seaded",
|
||||
"configurationDesc": "Peenhäälesta liikumistuvastuse ja objektide jälgimise sätteid silumis- ja taasesituskaamera jaoks. Frigate'i konfiguratsiooni faili muudatusi ei salvestata."
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,7 +7,28 @@
|
||||
"connectionSettings": "Ühenduse seadistused",
|
||||
"port": "Port",
|
||||
"username": "Kasutajanimi",
|
||||
"usernamePlaceholder": "Valikuline"
|
||||
"usernamePlaceholder": "Valikuline",
|
||||
"cameraName": "Kaamera nimi",
|
||||
"cameraNamePlaceholder": "näiteks: eesmine_uks või Hoovi ülevaade",
|
||||
"host": "Host/IP-aadress",
|
||||
"cameraBrand": "Kaamera bränd",
|
||||
"selectBrand": "Vali URL malli jaoks kaamera bränd",
|
||||
"customUrl": "Kohandatud voo URL",
|
||||
"brandInformation": "Brändi teave",
|
||||
"brandUrlFormat": "Kaamerate puhul, mille RTSP URL-i vorming on järgmine: {{exampleUrl}}",
|
||||
"selectTransport": "Valige transpordiprotokoll",
|
||||
"description": "Sisestage oma kaamera andmed ja valige, kas soovite kaamerat tuvastada või valida tootja käsitsi.",
|
||||
"onvifPort": "ONVIF port",
|
||||
"probeMode": "Tuvasta kaamera",
|
||||
"manualMode": "Manuaalne valik",
|
||||
"errors": {
|
||||
"nameRequired": "Kaamera nimi on kohustuslik",
|
||||
"nameLength": "Kaamera nimi peab olema kuni 64 tähemärki pikk",
|
||||
"invalidCharacters": "Kaamera nimi sisaldab sobimatuid märke",
|
||||
"nameExists": "Kaamera nimi on juba olemas",
|
||||
"brandOrCustomUrlRequired": "Valige kas kaamera bränd koos hosti/IP-aadressiga või valige „Muu” kohandatud URL-iga"
|
||||
},
|
||||
"detectionMethod": "Vootuvastus meetod"
|
||||
},
|
||||
"step3": {
|
||||
"streamUrlPlaceholder": "rtsp://kasutajanimi:salasõna@host:port/asukoht",
|
||||
@@ -17,17 +38,37 @@
|
||||
"roles": "Rollid",
|
||||
"roleLabels": {
|
||||
"record": "Salvestamine",
|
||||
"audio": "Heliriba"
|
||||
"audio": "Heliriba",
|
||||
"detect": "Objektituvastus"
|
||||
},
|
||||
"connected": "Ühendatud",
|
||||
"featuresTitle": "Funktsionaalsused"
|
||||
"featuresTitle": "Funktsionaalsused",
|
||||
"selectStream": "Vali voog",
|
||||
"selectQuality": "Valige kvaliteet",
|
||||
"notConnected": "Pole ühendatud",
|
||||
"testFailedTitle": "Test ebaõnnestus",
|
||||
"testStream": "Testi ühendust",
|
||||
"testSuccess": "Voo test edukas!",
|
||||
"testFailed": "Voo test ebaõnnestus",
|
||||
"selectResolution": "Vali resolutsioon",
|
||||
"noStreamFound": "Voogu ei leitud",
|
||||
"addAnotherStream": "Lisa järgmine voog",
|
||||
"streamTitle": "Voog {{number}}",
|
||||
"streamUrl": "Voo URL",
|
||||
"addStream": "Lisa voog",
|
||||
"description": "Seadista voogedastusrolle ja lisa oma kaamerale täiendavaid vooge.",
|
||||
"streamsTitle": "Kaamera vood"
|
||||
},
|
||||
"steps": {
|
||||
"probeOrSnapshot": "Võta proov või tee hetkvõte"
|
||||
"probeOrSnapshot": "Võta proov või tee hetkvõte",
|
||||
"nameAndConnection": "Nimi ja ühendus",
|
||||
"streamConfiguration": "Voo seaded",
|
||||
"validationAndTesting": "Valideerimine ja testimine"
|
||||
},
|
||||
"step2": {
|
||||
"testing": {
|
||||
"fetchingSnapshot": "Laadin kaamera hetkvõtet alla..."
|
||||
"fetchingSnapshot": "Laadin kaamera hetkvõtet alla...",
|
||||
"probingMetadata": "Tuvastan kaamera metaandmeid..."
|
||||
},
|
||||
"retry": "Proovi uuesti",
|
||||
"manufacturer": "Tootja",
|
||||
@@ -37,7 +78,30 @@
|
||||
"presets": "Eelseadistused",
|
||||
"useCandidate": "Kasuta",
|
||||
"uriCopy": "Kopeeri",
|
||||
"connected": "Ühendatud"
|
||||
"connected": "Ühendatud",
|
||||
"testSuccess": "Ühenduse test õnnestus!",
|
||||
"testFailed": "Ühenduse test ebaõnnestus. Palun kontrollige sisestatud andmeid ja proovige uuesti.",
|
||||
"testFailedTitle": "Test ebaõnnestus",
|
||||
"streamDetails": "Voo üksikasjad",
|
||||
"probing": "Tuvastan kaamerat...",
|
||||
"ptzSupport": "PTZ tugi",
|
||||
"testConnection": "Testi ühendust",
|
||||
"toggleUriView": "Klõpsake täieliku URI vaate sisse/välja lülitamiseks",
|
||||
"notConnected": "Pole ühendatud",
|
||||
"errors": {
|
||||
"hostRequired": "Hosti/IP-aadress on kohustuslik"
|
||||
},
|
||||
"candidateStreamTitle": "Kandidaat {{number}}",
|
||||
"probeSuccessful": "Tuvastamine õnnestus",
|
||||
"probeError": "Tuvastamise viga",
|
||||
"probeNoSuccess": "Tuvastamine ebaõnnestus",
|
||||
"deviceInfo": "Seadme info",
|
||||
"autotrackingSupport": "Automaatse jälgimise tugi",
|
||||
"uriCopied": "URI kopeeriti lõikelauale",
|
||||
"rtspCandidates": "RTSP kandidaadid",
|
||||
"probingDevice": "Tuvastan seadet...",
|
||||
"description": "Tuvasta kaamera vooge või seadista käsitsi seaded vastavalt valitud tuvastusmeetodile.",
|
||||
"probeFailed": "Kaamera tuvastamine ebaõnnestus: {{error}}"
|
||||
},
|
||||
"testResultLabels": {
|
||||
"resolution": "Resolutsioon",
|
||||
@@ -56,7 +120,17 @@
|
||||
"roles": "Rollid",
|
||||
"none": "Määramata",
|
||||
"error": "Viga"
|
||||
}
|
||||
},
|
||||
"commonErrors": {
|
||||
"noUrl": "Palun sisestage kehtiv voogesituse URL",
|
||||
"testFailed": "Voo test ebaõnnestus: {{error}}"
|
||||
},
|
||||
"save": {
|
||||
"success": "Uue kaamera '{{cameraName}}' salvestamine õnnestus.",
|
||||
"failure": "Viga kaamera '{{cameraName}}' salvestamisel."
|
||||
},
|
||||
"title": "Lisa kaamera",
|
||||
"description": "Uue kaamera lisamiseks oma Frigate paigaldisesse järgige alltoodud samme."
|
||||
},
|
||||
"users": {
|
||||
"updatePassword": "Lähtesta salasõna",
|
||||
@@ -172,24 +246,32 @@
|
||||
},
|
||||
"documentTitle": {
|
||||
"default": "Seadistused - Frigate",
|
||||
"authentication": "Autentimise seadistused - Frigate",
|
||||
"cameraReview": "Kaamerate kordusvaatuste seadistused - Frigate",
|
||||
"general": "Profiili seadistused - Frigate",
|
||||
"frigatePlus": "Frigate+ seadistused - Frigate",
|
||||
"notifications": "Teavituste seadistused - Frigate",
|
||||
"authentication": "Autentimise seaded - Frigate",
|
||||
"cameraReview": "Kaamerate kordusvaatuste seaded - Frigate",
|
||||
"general": "Profiili seaded - Frigate",
|
||||
"frigatePlus": "Frigate+ seaded - Frigate",
|
||||
"notifications": "Teavituste seaded - Frigate",
|
||||
"cameraManagement": "Kaamerate haldus - Frigate",
|
||||
"masksAndZones": "Maskide ja tsoonide haldus - Frigate",
|
||||
"object": "Silumine ja veaotsing - Frigate"
|
||||
"object": "Silumine ja veaotsing - Frigate",
|
||||
"enrichments": "Rikastamise seaded - Frigate",
|
||||
"motionTuner": "Liikumise häälestaja – Frigate",
|
||||
"globalConfig": "Globaalsed seaded – Frigate",
|
||||
"cameraConfig": "Kaamera seaded - Frigate",
|
||||
"detectorsAndModel": "Detektorid ja mudel – Frigate",
|
||||
"maintenance": "Hooldus – Frigate",
|
||||
"profiles": "Profiilid - Frigate"
|
||||
},
|
||||
"general": {
|
||||
"title": "Profiili seadistused",
|
||||
"title": "Kasutajaliidese seadistused",
|
||||
"cameraGroupStreaming": {
|
||||
"clearAll": "Kustuta kõik voogedastuse seadistused"
|
||||
},
|
||||
"liveDashboard": {
|
||||
"title": "Töölaud reaalajas",
|
||||
"automaticLiveView": {
|
||||
"label": "Automaatne otseülekande vaade"
|
||||
"label": "Automaatne otseülekande vaade",
|
||||
"desc": "Aktiveerib automaatselt kaamera reaalajas vaate, kui tuvastatakse tegevus. Selle valiku keelamisel uuendatakse kaamerapilti töölaual ainult üks kord minutis."
|
||||
}
|
||||
},
|
||||
"calendar": {
|
||||
@@ -335,7 +417,7 @@
|
||||
},
|
||||
"menu": {
|
||||
"ui": "Kasutajaliides",
|
||||
"cameraManagement": "Haldus",
|
||||
"cameraManagement": "Kaamera haldus",
|
||||
"masksAndZones": "Maskid ja tsoonid",
|
||||
"triggers": "Päästikud",
|
||||
"debug": "Silumine ja veaotsing",
|
||||
@@ -373,7 +455,37 @@
|
||||
"systemMqtt": "MQTT",
|
||||
"systemGo2rtcStreams": "go2rtc voogedastus",
|
||||
"integrationSemanticSearch": "Semantiline otsing",
|
||||
"integrationGenerativeAi": "Generatiivne tehisaru"
|
||||
"integrationGenerativeAi": "Generatiivne tehisaru",
|
||||
"general": "Üldine",
|
||||
"globalConfig": "Globaalsed seaded",
|
||||
"system": "Süsteem",
|
||||
"integrations": "Integratsioonid",
|
||||
"cameras": "Kaamera seaded",
|
||||
"integrationFaceRecognition": "Nöotuvastus",
|
||||
"cameraDetect": "Objektituvastus",
|
||||
"cameraFfmpeg": "Vood (FFmpeg)",
|
||||
"cameraRecording": "Salvestus",
|
||||
"cameraSnapshots": "Hetktõmmised",
|
||||
"cameraMotion": "Liikumistuvastus",
|
||||
"cameraObjects": "Objektid",
|
||||
"cameraConfigReview": "Ülevaade",
|
||||
"cameraAudioEvents": "audiotuvastus",
|
||||
"cameraAudioTranscription": "Audio transkriptsioon",
|
||||
"cameraNotifications": "Teated",
|
||||
"cameraLivePlayback": "Otseülekanne",
|
||||
"integrationAudioTranscription": "Audio transkriptsioon",
|
||||
"integrationObjectClassification": "Objektide klassifitseerimine",
|
||||
"cameraFaceRecognition": "Näotuvastus",
|
||||
"cameraMqttConfig": "MQTT",
|
||||
"cameraOnvif": "ONVIF",
|
||||
"cameraUi": "Kaamera kasutajaliides",
|
||||
"cameraTimestampStyle": "Ajatempli stiil",
|
||||
"cameraMqtt": "Kaamera MQTT",
|
||||
"maintenance": "Hooldus",
|
||||
"mediaSync": "Meedia sünkroonimine",
|
||||
"regionGrid": "Regioonide ruudustik",
|
||||
"enrichments": "Andmete rikastamine",
|
||||
"motionTuner": "Liikumistuvastuse seadistaja"
|
||||
},
|
||||
"dialog": {
|
||||
"unsavedChanges": {
|
||||
@@ -389,7 +501,11 @@
|
||||
"semanticSearch": {
|
||||
"reindexNow": {
|
||||
"confirmButton": "Indekseeri uuesti",
|
||||
"label": "Indekseeri uuesti kohe"
|
||||
"label": "Indekseeri kohe uuesti",
|
||||
"alreadyInProgress": "Ümberindekseerimine on juba käimas.",
|
||||
"error": "Uuesti indekseerimise alustamine ebaõnnestus: {{errorMessage}}",
|
||||
"success": "Ümberindekseerimine algas edukalt.",
|
||||
"confirmTitle": "Kinnita uuesti indekseerimine"
|
||||
},
|
||||
"modelSize": {
|
||||
"small": {
|
||||
@@ -397,7 +513,9 @@
|
||||
},
|
||||
"large": {
|
||||
"title": "suur"
|
||||
}
|
||||
},
|
||||
"label": "Mudeli suurus",
|
||||
"desc": "Semantilise otsingu manustamiseks kasutatava mudeli suurus."
|
||||
},
|
||||
"title": "Semantiline otsing"
|
||||
},
|
||||
@@ -408,14 +526,23 @@
|
||||
},
|
||||
"large": {
|
||||
"title": "suur"
|
||||
}
|
||||
}
|
||||
},
|
||||
"label": "Mudeli suurus",
|
||||
"desc": "Näotuvastuseks kasutatava mudeli suurus."
|
||||
},
|
||||
"title": "Näotuvastus"
|
||||
},
|
||||
"birdClassification": {
|
||||
"title": "Lindude klassifikatsioon"
|
||||
},
|
||||
"licensePlateRecognition": {
|
||||
"title": "Sõidukite numbrimärkide tuvastus"
|
||||
},
|
||||
"title": "Andmerikastuse seaded",
|
||||
"restart_required": "Taaskäivitamine on vajalik (Andmerikastuse seadeid on muudetud)",
|
||||
"toast": {
|
||||
"success": "Andmerikastamise seaded on salvestatud. Muudatuste rakendamiseks taaskäivitage Frigate.",
|
||||
"error": "Seadete muudatuste salvestamine ebaõnnestus: {{errorMessage}}"
|
||||
}
|
||||
},
|
||||
"cameraReview": {
|
||||
@@ -497,5 +624,29 @@
|
||||
"lpr": {
|
||||
"vehicleNotTracked": "Sõidukite numbrimärkide tuvastus eeldab, et auto või mootorratas on jälgitav. Lülita menüüst Objektid sell kaamera jaoks sisse valikud „auto“ või „mootorratas“."
|
||||
}
|
||||
},
|
||||
"button": {
|
||||
"overriddenGlobal": "Ülekirjutatud (Globaalne)",
|
||||
"overriddenGlobalTooltip": "Käesolev kaamera kirjutab selles jaotises üle globaalsed seaded"
|
||||
},
|
||||
"saveAllPreview": {
|
||||
"title": "Salvestatavad muudatused",
|
||||
"triggerLabel": "Vaadake üle ootel olevad muudatused",
|
||||
"empty": "Ootel muudatusi pole.",
|
||||
"scope": {
|
||||
"label": "Ulatus",
|
||||
"global": "Globaalne",
|
||||
"camera": "Kaamera: {{cameraName}}"
|
||||
},
|
||||
"profile": {
|
||||
"label": "Profiil"
|
||||
},
|
||||
"field": {
|
||||
"label": "Väli"
|
||||
},
|
||||
"value": {
|
||||
"label": "Uus väärtus",
|
||||
"reset": "Lähtesta"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,7 +2,14 @@
|
||||
"documentTitle": {
|
||||
"general": "Üldine statistika - Frigate",
|
||||
"cameras": "Kaamerate statistika - Frigate",
|
||||
"storage": "Andmeruumi statistika - Frigate"
|
||||
"storage": "Andmeruumi statistika - Frigate",
|
||||
"logs": {
|
||||
"frigate": "Frigate logid - Frigate",
|
||||
"go2rtc": "Go2RTC logid - Frigate",
|
||||
"nginx": "Nginx logid - Frigate",
|
||||
"websocket": "Sõnumite logid - Frigate"
|
||||
},
|
||||
"enrichments": "Rikastus statistika - Frigate"
|
||||
},
|
||||
"logs": {
|
||||
"download": {
|
||||
@@ -16,11 +23,29 @@
|
||||
"websocket": {
|
||||
"filter": {
|
||||
"cameras_count_one": "{{count}} kaamera",
|
||||
"cameras_count_other": "{{count}} kaamerat"
|
||||
"cameras_count_other": "{{count}} kaamerat",
|
||||
"camera": "Kaamera",
|
||||
"all_cameras": "Kõik kaamerad",
|
||||
"events": "Sündmused",
|
||||
"reviews": "Ülevaated",
|
||||
"system": "Süsteem",
|
||||
"topics": "Teemad",
|
||||
"all": "Kõik teemad",
|
||||
"face_recognition": "Näotuvastus",
|
||||
"classification": "Klassifikatsioon",
|
||||
"camera_activity": "Kaamera aktiivsus",
|
||||
"lpr": "Numbrimärgituvastus"
|
||||
},
|
||||
"empty": "Ühtegi sõnumit pole veel hõivatud",
|
||||
"count_one": "{{count}} sõnum",
|
||||
"count_other": "{{count}} sõnumit"
|
||||
"count_other": "{{count}} sõnumit",
|
||||
"pause": "Peata",
|
||||
"resume": "Jätka",
|
||||
"label": "Sõnumid",
|
||||
"clear": "Tühista",
|
||||
"expanded": {
|
||||
"payload": "Last"
|
||||
}
|
||||
},
|
||||
"type": {
|
||||
"label": "Tüüp",
|
||||
@@ -36,5 +61,170 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"title": "Süsteem"
|
||||
"title": "Süsteem",
|
||||
"enrichments": {
|
||||
"embeddings": {
|
||||
"object_description_events_per_second": "Objekti kirjeldus",
|
||||
"face_recognition": "Näotuvastus",
|
||||
"plate_recognition": "Numbrimärgi tuvastus",
|
||||
"object_description": "Objekti kirjeldus",
|
||||
"review_description_events_per_second": "Ülevaate kirjeldus",
|
||||
"review_description": "Ülevaate kirjeldus",
|
||||
"yolov9_plate_detection": "YOLOv9 numbrimärgi tuvastus",
|
||||
"yolov9_plate_detection_speed": "YOLOv9 numbrimärgi tuvastuskiirus",
|
||||
"plate_recognition_speed": "Numbrimärgituvastuse kiirus",
|
||||
"face_recognition_speed": "Näotuvastuse kiirus"
|
||||
},
|
||||
"title": "Andmerikastused"
|
||||
},
|
||||
"cameras": {
|
||||
"connectionQuality": {
|
||||
"reconnectsLastHour": "Uuesti ühendumisi (viimase tunni jooksul)",
|
||||
"stallsLastHour": "Seiskumisi (viimase tunni jooksul)",
|
||||
"title": "Ühenduse kvaliteet",
|
||||
"excellent": "Suurepärane",
|
||||
"fair": "Rahuldav",
|
||||
"poor": "Kehv",
|
||||
"unusable": "Mittekasutatav",
|
||||
"fps": "Kaadrisagedus",
|
||||
"expectedFps": "Eeldatav kaadrisagedus (FPS)"
|
||||
},
|
||||
"label": {
|
||||
"camera": "kaamera",
|
||||
"detect": "tuvasta",
|
||||
"skipped": "vahele jäetud",
|
||||
"ffmpeg": "FFmpeg",
|
||||
"cameraFfmpeg": "{{camName}} FFmpeg",
|
||||
"cameraGpu": "{{camName}} GPU",
|
||||
"cameraDetect": "{{camName}} tuvastus",
|
||||
"overallFramesPerSecond": "kaadreid sekundis kokku",
|
||||
"overallDetectionsPerSecond": "kogutuvastusi sekundis",
|
||||
"overallSkippedDetectionsPerSecond": "vahelejäänud tuvastusi sekundis kokku",
|
||||
"cameraFramesPerSecond": "{{camName}} kaadreid sekundis",
|
||||
"cameraDetectionsPerSecond": "{{camName}} tuvastusi sekundis",
|
||||
"cameraSkippedDetectionsPerSecond": "{{camName}} vahelejäänud tuvastusi sekundis",
|
||||
"capture": "jäädvustamine"
|
||||
},
|
||||
"noCameras": {
|
||||
"title": "Ühtegi kaamerat ei leitud"
|
||||
},
|
||||
"framesAndDetections": "Kaadreid / Tuvastusi",
|
||||
"info": {
|
||||
"keyframes": {
|
||||
"recordDisabled": "Selle kaamera salvestamine on välja lülitatud.",
|
||||
"segmentLength": "Salvestuse segmendi pikkus:",
|
||||
"recordStream": "Salvestusvoog:",
|
||||
"keyframeCount": "Vaadeldud võtmekaadrid:",
|
||||
"observedDuration": "Vaadeldud kestus:"
|
||||
},
|
||||
"audio": "Audio:",
|
||||
"error": "Viga: {{error}}",
|
||||
"codec": "Koodek:",
|
||||
"resolution": "Resolutsioon:",
|
||||
"video": "Video:",
|
||||
"aspectRatio": "kuvasuhe",
|
||||
"unknown": "Tundmatu",
|
||||
"fetching": "Kaameraandmete toomine",
|
||||
"stream": "Voog {{idx}}",
|
||||
"streamDataFromFFPROBE": "Vooandmed saadakse <code>ffprobe</code> abil.",
|
||||
"fps": "Kaadrisagedus (FPS):"
|
||||
},
|
||||
"title": "Kaamerad",
|
||||
"overview": "Ülevaade"
|
||||
},
|
||||
"lastRefreshed": "Viimati uuendatud: ",
|
||||
"stats": {
|
||||
"healthy": "Süsteem on töökorras",
|
||||
"detectIsSlow": "{{detect}} on aeglane ({{speed}} ms)",
|
||||
"detectIsVerySlow": "{{detect}} on väga aeglane ({{speed}} ms)",
|
||||
"cameraIsOffline": "{{camera}} on ühenduseta"
|
||||
},
|
||||
"storage": {
|
||||
"cameraStorage": {
|
||||
"camera": "Kaamera",
|
||||
"unused": {
|
||||
"title": "Kasutamata",
|
||||
"tips": "See väärtus ei pruugi Frigate'i jaoks saadaolevat vaba ruumi täpselt kajastada, kui teie draivil on lisaks Frigate'i salvestistele ka muid faile. Frigate ei jälgi salvestusruumi kasutamist väljaspool oma salvestisi."
|
||||
},
|
||||
"bandwidth": "Ribalaius",
|
||||
"storageUsed": "Salvestusmaht",
|
||||
"percentageOfTotalUsed": "protsent kogusummast",
|
||||
"unusedStorageInformation": "Kasutamata salvestusmahu info",
|
||||
"title": "Kaamera salvestusmaht"
|
||||
},
|
||||
"title": "Säilitus",
|
||||
"overview": "Ülevaade",
|
||||
"recordings": {
|
||||
"title": "Salvestused",
|
||||
"earliestRecording": "Varaseim saadaolev salvestis:"
|
||||
},
|
||||
"shm": {
|
||||
"title": "SHM (jagatud mälu) eraldus",
|
||||
"frameLifetime": {
|
||||
"title": "Kaadri eluiga"
|
||||
}
|
||||
}
|
||||
},
|
||||
"metrics": "Süsteemi mõõdikud",
|
||||
"general": {
|
||||
"title": "Üldine",
|
||||
"hardwareInfo": {
|
||||
"gpuUsage": "GPU kasutus",
|
||||
"gpuMemory": "GPU mälu",
|
||||
"gpuInfo": {
|
||||
"vainfoOutput": {
|
||||
"title": "Vainfo väljund",
|
||||
"processOutput": "Protsessi väljund:",
|
||||
"processError": "Protsessi viga:",
|
||||
"returnCode": "Tagastuskood: {{code}}"
|
||||
},
|
||||
"closeInfo": {
|
||||
"label": "Sulge GPU info"
|
||||
},
|
||||
"copyInfo": {
|
||||
"label": "Kopeeri GPU info"
|
||||
},
|
||||
"nvidiaSMIOutput": {
|
||||
"title": "Nvidia SMI väljund",
|
||||
"name": "Nimi: {{name}}",
|
||||
"driver": "Draiver: {{driver}}",
|
||||
"cudaComputerCapability": "CUDA arvutusvõimekus: {{cuda_compute}}",
|
||||
"vbios": "VBios info: {{vbios}}"
|
||||
},
|
||||
"toast": {
|
||||
"success": "GPU info kopeeriti lõikelauale"
|
||||
}
|
||||
},
|
||||
"gpuDecoder": "GPU dekooder",
|
||||
"gpuTemperature": "GPU temperatuur",
|
||||
"gpuEncoder": "GPU kodeerija",
|
||||
"gpuCompute": "GPU arvutus / kodeerimine",
|
||||
"title": "Riistvara info",
|
||||
"npuUsage": "NPU kasutus",
|
||||
"npuMemory": "NPU mälu",
|
||||
"npuTemperature": "NPU temperatuur",
|
||||
"intelGpuWarning": {
|
||||
"title": "Inteli GPU statistika hoiatus",
|
||||
"message": "GPU statistika pole saadaval"
|
||||
}
|
||||
},
|
||||
"otherProcesses": {
|
||||
"series": {
|
||||
"go2rtc": "go2rtc",
|
||||
"recording": "salvestus",
|
||||
"review_segment": "Segmendi ülevaade",
|
||||
"audio_detector": "audio detektor"
|
||||
},
|
||||
"processCpuUsage": "Protsessi CPU kasutus",
|
||||
"processMemoryUsage": "Protsessi mälukasutus"
|
||||
},
|
||||
"detector": {
|
||||
"title": "Detektorid",
|
||||
"memoryUsage": "Detektori mälukasutus",
|
||||
"cpuUsage": "Detektori CPU kasutus",
|
||||
"temperature": "Detektori temperatuur",
|
||||
"inferenceSpeed": "Detektori järelduskiirus",
|
||||
"cpuUsageInformation": "Protsessori võimsus, mida kasutatakse tuvastusmudelite sisend- ja väljundandmete ettevalmistamisel. See väärtus ei mõõda järelduste kasutamist isegi siis, kui kasutatakse graafikaprotsessorit või kiirendit."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -34,6 +34,9 @@
|
||||
"label": "Bevestig dit label voor Frigate Plus",
|
||||
"ask_a": "Is dit object een <code>{{label}}</code>?",
|
||||
"ask_full": "Is dit object een <code>{{untranslatedLabel}}</code> ({{translatedLabel}})?"
|
||||
},
|
||||
"toast": {
|
||||
"error": "Gefaald bij Frigate+ in te dienen. Controleer je netwerkverbinding en probeer opnieuw."
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -104,7 +107,14 @@
|
||||
"namePlaceholder": "Optionele basisnaam voor deze exporten",
|
||||
"queueingButton": "Exporten in wachtrij plaatsen...",
|
||||
"exportButton_one": "Export 1 Camera",
|
||||
"exportButton_other": "{{count}} camera's exporteren"
|
||||
"exportButton_other": "{{count}} camera's exporteren",
|
||||
"searchOrSelectGroup": "Zoek of selecteer een cameragroep...",
|
||||
"selectAll": "Selecteer alle camera's",
|
||||
"clearSelection": "Wis selectie",
|
||||
"selectWithActivity": "Camera's met gevolgde objecten",
|
||||
"selectGroup": "Selecteer groep",
|
||||
"noMatchingCameras": "Geen camera's komen overeen met je zoekopdracht",
|
||||
"selectedCount": "{{selected}} / {{total}} geselecteerd"
|
||||
},
|
||||
"multi": {
|
||||
"title_one": "Review 1 exporteren",
|
||||
|
||||
@@ -19,8 +19,8 @@
|
||||
"question": {
|
||||
"label": "Confirmar esse rótulo para Frigate Plus",
|
||||
"ask_a": "Este objeto é um <code>{{label}}</code>?",
|
||||
"ask_an": "Este objeto é um<code>{{label}}</code>?",
|
||||
"ask_full": "Este objeto é um<code>{{untranslatedLabel}}</code> ({{translatedLabel}})?"
|
||||
"ask_an": "Este objeto é um <code>{{label}}</code>?",
|
||||
"ask_full": "Este objeto é um <code>{{untranslatedLabel}}</code> ({{translatedLabel}})?"
|
||||
},
|
||||
"state": {
|
||||
"submitted": "Enviado"
|
||||
@@ -71,7 +71,10 @@
|
||||
"batchQueueFailed": "Falha ao enfileirar {{total}} exportações. Câmeras com falha: {{failedCameras}}",
|
||||
"batchPartial": "Iniciadas {{successful}} de {{total}} exportações. Câmeras com falha: {{failedCameras}}",
|
||||
"batchFailed": "Falha ao iniciar {{total}} exportações. Câmeras com falha: {{failedCameras}}",
|
||||
"queued": "Exportação na fila. Acompanhe o progresso na página de exportações."
|
||||
"queued": "Exportação na fila. Acompanhe o progresso na página de exportações.",
|
||||
"batchSuccess_one": "1 exportação iniciada. Abrindo o caso agora.",
|
||||
"batchSuccess_many": "{{count}} exportações iniciadas. Abrindo o caso agora.",
|
||||
"batchSuccess_other": "{{count}} exportações iniciadas. Abrindo o caso agora."
|
||||
},
|
||||
"fromTimeline": {
|
||||
"saveExport": "Salvar Exportação",
|
||||
@@ -132,7 +135,10 @@
|
||||
"started_many": "Iniciadas {{count}} exportações. Abrindo o caso agora.",
|
||||
"started_other": "",
|
||||
"failed": "Falha ao iniciar {{total}} exportações. Falhas: {{failedItems}}",
|
||||
"partial": "Iniciadas {{successful}} de {{total}} exportações. Falhas: {{failedItems}}"
|
||||
"partial": "Iniciadas {{successful}} de {{total}} exportações. Falhas: {{failedItems}}",
|
||||
"startedNoCase_one": "1 exportação iniciada.",
|
||||
"startedNoCase_many": "{{count}} exportações iniciadas.",
|
||||
"startedNoCase_other": "{{count}} exportações iniciadas."
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@@ -215,7 +215,8 @@
|
||||
"label": "Birdseye",
|
||||
"description": "Configurações para a visualização composta \"Birdseye\", que combina múltiplas transmissões de câmera em um único layout.",
|
||||
"enabled": {
|
||||
"label": "Ativar Birdseye"
|
||||
"label": "Ativar Birdseye",
|
||||
"description": "Habilita ou desabilita a função Birdseye."
|
||||
}
|
||||
},
|
||||
"live": {
|
||||
@@ -401,7 +402,9 @@
|
||||
"enhancement": {
|
||||
"label": "Nível de aprimoramento",
|
||||
"description": "Nível de aprimoramento (0-10) a ser aplicado aos recortes da placa antes do OCR; valores mais altos nem sempre melhoram os resultados, e níveis acima de 5 podem funcionar apenas com placas noturnas, devendo ser utilizados com cautela."
|
||||
}
|
||||
},
|
||||
"label": "Reconhecimento de placa veicular",
|
||||
"description": "Configurações de reconhecimento de placa veicular, incluindo limites de detecção, formatação e placas conhecidas."
|
||||
},
|
||||
"record": {
|
||||
"label": "Gravação",
|
||||
@@ -539,6 +542,18 @@
|
||||
"enabled": {
|
||||
"label": "Ativar detecções",
|
||||
"description": "Ative ou desative eventos de detecção para esta câmera."
|
||||
},
|
||||
"labels": {
|
||||
"label": "Rótulos de detecção",
|
||||
"description": "Lista de rótulos de objetos que são considerados eventos de detecção."
|
||||
},
|
||||
"required_zones": {
|
||||
"label": "Zonas requeridas",
|
||||
"description": "Zonas em que um objeto deve entrar para ser considerado detectado. Deixe em branco para permitir qualquer zona."
|
||||
},
|
||||
"cutoff_time": {
|
||||
"label": "Tempo limite de detecção",
|
||||
"description": "Segundos a esperar após o fim da atividade antes de encerrar a detecção."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -239,7 +239,8 @@
|
||||
"label": "Birdseye",
|
||||
"description": "Configurações para a visualização composta \"Birdseye\", que combina múltiplas transmissões de câmera em um único layout.",
|
||||
"enabled": {
|
||||
"label": "Ativar Birdseye"
|
||||
"label": "Ativar Birdseye",
|
||||
"description": "Habilita ou desabilita a função Birdseye."
|
||||
}
|
||||
},
|
||||
"live": {
|
||||
@@ -420,7 +421,9 @@
|
||||
"enhancement": {
|
||||
"label": "Nível de aprimoramento",
|
||||
"description": "Nível de aprimoramento (0-10) a ser aplicado aos recortes da placa antes do OCR; valores mais altos nem sempre melhoram os resultados, e níveis acima de 5 podem funcionar apenas com placas noturnas, devendo ser utilizados com cautela."
|
||||
}
|
||||
},
|
||||
"label": "Reconhecimento de placa veicular",
|
||||
"description": "Configurações de reconhecimento de placa veicular, incluindo limites de detecção, formatação e placas conhecidas."
|
||||
},
|
||||
"record": {
|
||||
"label": "Gravação",
|
||||
@@ -553,6 +556,18 @@
|
||||
"description": "Configurações que definem para quais objetos rastreados são geradas detecções (sem gerar alerta) e como essas detecções são retidas.",
|
||||
"enabled": {
|
||||
"label": "Ativar detecções"
|
||||
},
|
||||
"labels": {
|
||||
"label": "Rótulos de detecção",
|
||||
"description": "Lista de rótulos de objetos que são considerados eventos de detecção."
|
||||
},
|
||||
"required_zones": {
|
||||
"label": "Zonas requeridas",
|
||||
"description": "Zonas em que um objeto deve entrar para ser considerado detectado. Deixe em branco para permitir qualquer zona."
|
||||
},
|
||||
"cutoff_time": {
|
||||
"label": "Tempo limite de detecção",
|
||||
"description": "Segundos a esperar após o fim da atividade antes de encerrar a detecção."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,12 +12,12 @@
|
||||
},
|
||||
"toast": {
|
||||
"success": {
|
||||
"deletedCategory_one": "Classe Apagada",
|
||||
"deletedCategory_many": "Classes apagadas",
|
||||
"deletedCategory_other": "",
|
||||
"deletedImage_one": "Imagen Apagada",
|
||||
"deletedImage_many": "Imagens Apagadas",
|
||||
"deletedImage_other": "",
|
||||
"deletedCategory_one": "{{count}} classe removida",
|
||||
"deletedCategory_many": "{{count}} classes removidas",
|
||||
"deletedCategory_other": "{{count}} classes removidas",
|
||||
"deletedImage_one": "{{count}} imagem removida",
|
||||
"deletedImage_many": "{{count}} imagens removidas",
|
||||
"deletedImage_other": "{{count}} imagens removidas",
|
||||
"categorizedImage": "Imagem Classificada com Sucesso",
|
||||
"trainedModel": "Modelo treinado com sucesso.",
|
||||
"trainingModel": "Treinamento do modelo iniciado com sucesso.",
|
||||
|
||||
@@ -296,7 +296,7 @@
|
||||
}
|
||||
},
|
||||
"motionMaskLabel": "Máscara de Movimento {{number}}",
|
||||
"objectMaskLabel": "Máscara de Objeto {{number}} ({{label}})",
|
||||
"objectMaskLabel": "Máscara de Objeto {{number}}",
|
||||
"form": {
|
||||
"zoneName": {
|
||||
"error": {
|
||||
@@ -437,7 +437,7 @@
|
||||
"add": "Nova Máscara de Movimento",
|
||||
"edit": "Editar Máscara de Movimento",
|
||||
"context": {
|
||||
"title": "Máscaras de movimento são usadas para prevenir tipos de movimento não desejados de ativarem uma detecção (exemplo: galhos de árvores, timestamps de câmeras). Máscaras de movimento devem ser usadas <em> com moderação </em>. Excesso de mascaramento tornará o rastreamento de objetos mais difícil.",
|
||||
"title": "Máscaras de movimento são usadas para prevenir tipos de movimento não desejados de ativarem uma detecção (exemplo: galhos de árvores, timestamps de câmeras). Máscaras de movimento devem ser usadas <em>com moderação</em>. Excesso de mascaramento tornará o rastreamento de objetos mais difícil.",
|
||||
"documentation": "Leia a documentação"
|
||||
},
|
||||
"point_one": "{{count}} ponto",
|
||||
@@ -723,7 +723,7 @@
|
||||
"title": "Configuração de Captura de Imagem",
|
||||
"desc": "Envios ao Frigate+ requerem tanto a captura de imagem normais quanto a captura de imagem <code>clean_copy</code> estarem habilitadas na sua configuração.",
|
||||
"documentation": "Leia a documentação",
|
||||
"cleanCopyWarning": "Algumas câmeras possuem captura de imagem habilitada porém têm a cópia limpa desabilitada. Você precisa habilitar a <code>clean_copy</code> nas suas configurações de captura de imagem para poder submeter imagems dessa câmera ao Frigate+.",
|
||||
"cleanCopyWarning": "Algumas câmeras estão com os snapshots desativados",
|
||||
"table": {
|
||||
"camera": "Câmera",
|
||||
"snapshots": "Capturas de Imagem",
|
||||
|
||||
@@ -32,6 +32,9 @@
|
||||
"ask_a": "Este acest obiect un <code>{{label}}</code>?",
|
||||
"ask_an": "Este acest obiect un <code>{{label}}</code>?",
|
||||
"ask_full": "Este acest obiect un <code>{{untranslatedLabel}}</code> ({{translatedLabel}})?"
|
||||
},
|
||||
"toast": {
|
||||
"error": "Trimiterea către Frigate+ a eșuat. Te rog să verifici conexiunea la rețea și să încerci din nou."
|
||||
}
|
||||
},
|
||||
"submitToPlus": {
|
||||
@@ -145,7 +148,14 @@
|
||||
"queueingButton": "Se adaugă exporturile la coadă...",
|
||||
"exportButton_one": "Exportă 1 cameră",
|
||||
"exportButton_few": "Exportă {{count}} camere",
|
||||
"exportButton_other": "Exportă {{count}} de camere"
|
||||
"exportButton_other": "Exportă {{count}} de camere",
|
||||
"searchOrSelectGroup": "Caută sau selectează un grup de camere...",
|
||||
"selectAll": "Selectează toate camerele",
|
||||
"clearSelection": "Șterge selecția",
|
||||
"selectWithActivity": "Camere cu obiecte urmărite",
|
||||
"selectGroup": "Selectează grupul",
|
||||
"noMatchingCameras": "Nicio cameră nu corespunde căutării tale",
|
||||
"selectedCount": "{{selected}} / {{total}} selectate"
|
||||
},
|
||||
"multi": {
|
||||
"title_one": "Exportă o revizuire",
|
||||
|
||||
@@ -493,6 +493,9 @@
|
||||
"max_concurrent": {
|
||||
"description": "Numărul maxim de sarcini de export de procesat în același timp.",
|
||||
"label": "Număr maxim de exporturi simultane"
|
||||
},
|
||||
"chapters": {
|
||||
"label": "Metadate de capitol de încorporat în înregistrările exportate"
|
||||
}
|
||||
},
|
||||
"preview": {
|
||||
|
||||
@@ -637,6 +637,9 @@
|
||||
"max_concurrent": {
|
||||
"description": "Numărul maxim de sarcini de export de procesat în același timp.",
|
||||
"label": "Număr maxim de exporturi simultane"
|
||||
},
|
||||
"chapters": {
|
||||
"label": "Metadate de capitol de încorporat în înregistrările exportate"
|
||||
}
|
||||
},
|
||||
"preview": {
|
||||
|
||||
@@ -2098,6 +2098,10 @@
|
||||
},
|
||||
"ffmpeg": {
|
||||
"hwaccelManualNotRecommended": "Argumentele manuale pentru accelerarea hardware nu sunt recomandate. Dacă nu există o cerință specifică, selectează presetarea care se potrivește cu hardware-ul tău."
|
||||
},
|
||||
"model": {
|
||||
"optimizedFor320": "Frigate este optimizat pentru un model de 320x320, care este cea mai bună alegere pentru majoritatea configurațiilor. Un model de 640x640 este mai lent și ajută doar în scenarii specifice.",
|
||||
"inputDimensionsNotDetectResolution": "Lățimea și înălțimea de intrare ale modelului reprezintă dimensiunile de intrare ale modelului de detectare a obiectelor, nu rezoluția de detecție a camerei tale. Acestea ar trebui să se potrivească cu dimensiunile modelului pe care îl folosești — de obicei o dimensiune pătrată, cum ar fi 320x320 sau 640x640."
|
||||
}
|
||||
},
|
||||
"birdseye": {
|
||||
|
||||
@@ -75,5 +75,9 @@
|
||||
"24hour": "MM-dd-yy-HH-mm-ss"
|
||||
}
|
||||
},
|
||||
"readTheDocumentation": "Прочитајте документацију"
|
||||
"readTheDocumentation": "Прочитајте документацију",
|
||||
"menu": {
|
||||
"system": "Систем",
|
||||
"profiles": "Профили"
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -24,6 +24,9 @@
|
||||
},
|
||||
"state": {
|
||||
"submitted": "Inskickad"
|
||||
},
|
||||
"toast": {
|
||||
"error": "Misslyckades att skicka till Frigate+. Kontrollera din nätverksanslutning och försök igen."
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -106,7 +109,10 @@
|
||||
"selectAll": "Välj alla kameror",
|
||||
"selectWithActivity": "Kameror med spårade objekt",
|
||||
"selectGroup": "Välj grupp",
|
||||
"noMatchingCameras": "Ingen kamera matchar din sökning"
|
||||
"noMatchingCameras": "Ingen kamera matchar din sökning",
|
||||
"searchOrSelectGroup": "Sök, eller välj en kameragrupp...",
|
||||
"clearSelection": "Rensa val",
|
||||
"selectedCount": "{{selected}} / {{total}} valda"
|
||||
},
|
||||
"multi": {
|
||||
"title_one": "Exportera 1 recension",
|
||||
|
||||
@@ -20,10 +20,35 @@
|
||||
"description": "Aktivera eller avaktivera ljudbaserad detektering för denna kamera."
|
||||
},
|
||||
"max_not_heard": {
|
||||
"description": "Antal sekunder utan den konfigurerade ljudtypen innan en ljudbaserad händelse slutar."
|
||||
"description": "Antal sekunder utan den konfigurerade ljudtypen innan en ljudbaserad händelse slutar.",
|
||||
"label": "Avbryt paus"
|
||||
},
|
||||
"min_volume": {
|
||||
"label": "Minsta ljudvolym"
|
||||
"label": "Minsta ljudvolym",
|
||||
"description": "Lägsta RMS volym för ljuddetektion; lägre värde ökar känslighet (t.e.x. 200 högt, 500 medium, 1000 lågt)."
|
||||
},
|
||||
"listen": {
|
||||
"label": "Lyssningstyper",
|
||||
"description": "Lista på typer av ljudevent att detektera (till exempel: skälla, brandlarm, tal, skrik)."
|
||||
},
|
||||
"filters": {
|
||||
"label": "Ljudfilter",
|
||||
"description": "Filterinställningar per ljudtyp, till exempel konfidinströskel som används för att minska falska positiva resultat.",
|
||||
"threshold": {
|
||||
"label": "Lägsta ljud-konfidinströskel",
|
||||
"description": "Lägsta konfidinströskel för att ljudhändelsen ska räknas."
|
||||
}
|
||||
},
|
||||
"enabled_in_config": {
|
||||
"label": "Ursprungligt ljudtillstånd",
|
||||
"description": "Indikerar om ljuddetektion ursprungligen var aktiverat i den statiska konfigurationsfilen."
|
||||
},
|
||||
"num_threads": {
|
||||
"label": "Detekteringstrådar",
|
||||
"description": "Antal trådar att använda för bearbetning av ljuddetektering."
|
||||
}
|
||||
},
|
||||
"audio_transcription": {
|
||||
"label": "Ljudtranskribering"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,10 +8,35 @@
|
||||
"label": "Aktivera ljuddetektering"
|
||||
},
|
||||
"max_not_heard": {
|
||||
"description": "Antal sekunder utan den konfigurerade ljudtypen innan en ljudbaserad händelse slutar."
|
||||
"description": "Antal sekunder utan den konfigurerade ljudtypen innan en ljudbaserad händelse slutar.",
|
||||
"label": "Avbryt paus"
|
||||
},
|
||||
"min_volume": {
|
||||
"label": "Minsta ljudvolym"
|
||||
"label": "Minsta ljudvolym",
|
||||
"description": "Lägsta RMS volym för ljuddetektion; lägre värde ökar känslighet (t.e.x. 200 högt, 500 medium, 1000 lågt)."
|
||||
},
|
||||
"listen": {
|
||||
"label": "Lyssningstyper",
|
||||
"description": "Lista på typer av ljudevent att detektera (till exempel: skälla, brandlarm, tal, skrik)."
|
||||
},
|
||||
"filters": {
|
||||
"label": "Ljudfilter",
|
||||
"description": "Filterinställningar per ljudtyp, till exempel konfidinströskel som används för att minska falska positiva resultat.",
|
||||
"threshold": {
|
||||
"label": "Lägsta ljud-konfidinströskel",
|
||||
"description": "Lägsta konfidinströskel för att ljudhändelsen ska räknas."
|
||||
}
|
||||
},
|
||||
"enabled_in_config": {
|
||||
"label": "Ursprungligt ljudtillstånd",
|
||||
"description": "Indikerar om ljuddetektion ursprungligen var aktiverat i den statiska konfigurationsfilen."
|
||||
},
|
||||
"num_threads": {
|
||||
"label": "Detekteringstrådar",
|
||||
"description": "Antal trådar att använda för bearbetning av ljuddetektering."
|
||||
}
|
||||
},
|
||||
"audio_transcription": {
|
||||
"label": "Ljudtranskribering"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -452,15 +452,15 @@
|
||||
},
|
||||
"continuous": {
|
||||
"label": "持续保留",
|
||||
"description": "无论是否有追踪目标或动作,保留录像的天数。如果只想保留警报和检测的录像,请设置为 0。",
|
||||
"description": "无论是否有追踪目标或画面变动,保留录像的天数。如果只想保留警报和检测的录制,请设置为 0。",
|
||||
"days": {
|
||||
"label": "保留天数",
|
||||
"description": "保留录像的天数。"
|
||||
}
|
||||
},
|
||||
"motion": {
|
||||
"label": "动作保留",
|
||||
"description": "无论是否有追踪目标,由动作触发的录像保留天数。如果只想保留警报和检测的录像,请设置为 0。",
|
||||
"label": "画面变动录制保留",
|
||||
"description": "无论是否有追踪目标,只要画面变动触发保存的录制保留天数。如果只想保留警报和检测的录制,请设置为 0。",
|
||||
"days": {
|
||||
"label": "保留天数",
|
||||
"description": "保留录像的天数。"
|
||||
@@ -486,7 +486,7 @@
|
||||
},
|
||||
"mode": {
|
||||
"label": "保留模式",
|
||||
"description": "保留模式:all(保存所有片段)、motion(保存有动作的片段)或 active_objects(保存有活动目标的片段)。"
|
||||
"description": "保留模式:全部(保存所有片段)、画面变动(保存有画面变动的片段)或 活动目标(保存有活动目标的片段)。"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -510,7 +510,7 @@
|
||||
},
|
||||
"mode": {
|
||||
"label": "保留模式",
|
||||
"description": "保留模式:all(保存所有片段)、motion(保存有动作的片段)或 active_objects(保存有活动目标的片段)。"
|
||||
"description": "保留模式:全部(保存所有片段)、画面变动(保存有画面变动的片段)或 活动目标(保存有活动目标的片段)。"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@@ -1507,10 +1507,10 @@
|
||||
},
|
||||
"motion": {
|
||||
"label": "画面变动检测",
|
||||
"description": "应用于摄像头的默认动作检测设置,除非按摄像头覆盖。",
|
||||
"description": "默认情况下,画面变动检测配置统一应用于各摄像头,除非对特定摄像头单独进行自定义。",
|
||||
"enabled": {
|
||||
"label": "开启画面变动检测",
|
||||
"description": "为所有摄像头启用或禁用动作检测;可按摄像头覆盖。"
|
||||
"description": "为所有摄像头启用或禁用画面变动检测。可以给指定摄像头单独覆盖此设置。"
|
||||
},
|
||||
"threshold": {
|
||||
"label": "画面变动阈值",
|
||||
@@ -1706,15 +1706,15 @@
|
||||
},
|
||||
"continuous": {
|
||||
"label": "持续保留",
|
||||
"description": "无论是否有追踪目标或动作,保留录像的天数。如果只想保留警报和检测的录像,请设置为 0。",
|
||||
"description": "无论是否有追踪目标或画面变动,保留录像的天数。如果只想保留警报和检测的录制,请设置为 0。",
|
||||
"days": {
|
||||
"label": "保留天数",
|
||||
"description": "保留录像的天数。"
|
||||
}
|
||||
},
|
||||
"motion": {
|
||||
"label": "动作保留",
|
||||
"description": "无论是否有追踪目标,由动作触发的录像保留天数。如果只想保留警报和检测的录像,请设置为 0。",
|
||||
"label": "画面变动录制保留",
|
||||
"description": "无论是否有追踪目标,只要画面变动触发保存的录制保留天数。如果只想保留警报和检测的录制,请设置为 0。",
|
||||
"days": {
|
||||
"label": "保留天数",
|
||||
"description": "保留录像的天数。"
|
||||
@@ -1740,7 +1740,7 @@
|
||||
},
|
||||
"mode": {
|
||||
"label": "保留模式",
|
||||
"description": "保留模式:all(保存所有片段)、motion(保存有动作的片段)或 active_objects(保存有活动目标的片段)。"
|
||||
"description": "保留模式:全部(保存所有片段)、画面变动(保存有画面变动的片段)或 活动目标(保存有活动目标的片段)。"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -1764,7 +1764,7 @@
|
||||
},
|
||||
"mode": {
|
||||
"label": "保留模式",
|
||||
"description": "保留模式:all(保存所有片段)、motion(保存有动作的片段)或 active_objects(保存有活动目标的片段)。"
|
||||
"description": "保留模式:全部(保存所有片段)、画面变动(保存有画面变动的片段)或 活动目标(保存有活动目标的片段)。"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -2030,8 +2030,8 @@
|
||||
}
|
||||
},
|
||||
"motion": {
|
||||
"label": "动作时运行",
|
||||
"description": "启用后,当在指定裁剪区域内检测到动作时运行分类。"
|
||||
"label": "画面变动时运行",
|
||||
"description": "启用后,当在指定裁剪区域内检测到画面变动时进行分类。"
|
||||
},
|
||||
"interval": {
|
||||
"label": "分类间隔",
|
||||
|
||||
@@ -134,7 +134,7 @@ export default function ExportDialog({
|
||||
}
|
||||
|
||||
if (!range) {
|
||||
toast.error(t("export.toast.error.noVaildTimeSelected"), {
|
||||
toast.error(t("export.toast.error.noValidTimeSelected"), {
|
||||
position: "top-center",
|
||||
});
|
||||
return false;
|
||||
@@ -665,7 +665,7 @@ export function ExportContent({
|
||||
}
|
||||
|
||||
if (!range) {
|
||||
toast.error(t("export.toast.error.noVaildTimeSelected"), {
|
||||
toast.error(t("export.toast.error.noValidTimeSelected"), {
|
||||
position: "top-center",
|
||||
});
|
||||
return;
|
||||
|
||||
@@ -149,7 +149,7 @@ export default function MobileReviewSettingsDrawer({
|
||||
|
||||
if (!range) {
|
||||
toast.error(
|
||||
t("export.toast.error.noVaildTimeSelected", {
|
||||
t("export.toast.error.noValidTimeSelected", {
|
||||
ns: "components/dialog",
|
||||
}),
|
||||
{
|
||||
|
||||
@@ -305,7 +305,7 @@ export default function MotionSearchView({
|
||||
const handleExportPreview = useCallback(() => {
|
||||
if (!exportRange) {
|
||||
toast.error(
|
||||
t("export.toast.error.noVaildTimeSelected", {
|
||||
t("export.toast.error.noValidTimeSelected", {
|
||||
ns: "components/dialog",
|
||||
}),
|
||||
{
|
||||
@@ -351,7 +351,7 @@ export default function MotionSearchView({
|
||||
const handleExportSave = useCallback(() => {
|
||||
if (!exportRange || !selectedCamera) {
|
||||
toast.error(
|
||||
t("export.toast.error.noVaildTimeSelected", {
|
||||
t("export.toast.error.noValidTimeSelected", {
|
||||
ns: "components/dialog",
|
||||
}),
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user