mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-07-21 11:19:02 +03:00
Compare commits
26
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0b7a33d670 | ||
|
|
d697e4f354 | ||
|
|
4ad1f6e610 | ||
|
|
072d9fc111 | ||
|
|
9653aead10 | ||
|
|
e910f5c97c | ||
|
|
146de123b9 | ||
|
|
2586b8d299 | ||
|
|
24fd95cff4 | ||
|
|
7aa57ebcae | ||
|
|
d5ce0ba73e | ||
|
|
0c92c3ccfa | ||
|
|
480072b22d | ||
|
|
455423e7f2 | ||
|
|
6d5fb65a68 | ||
|
|
eb8eee038f | ||
|
|
7680b050b4 | ||
|
|
60923ac1e3 | ||
|
|
1763dba9c2 | ||
|
|
ca1c98eab8 | ||
|
|
3eb3797bc5 | ||
|
|
4a94b43e52 | ||
|
|
f81ac43be6 | ||
|
|
4c8f4ef9fa | ||
|
|
4b72c86e77 | ||
|
|
d574d1edae |
@@ -30,5 +30,7 @@ ADD https://github.com/MarcA711/rknn-toolkit2/releases/download/v2.3.2/librknnrt
|
||||
|
||||
ADD --chmod=111 https://github.com/MarcA711/Rockchip-FFmpeg-Builds/releases/download/6.1-11/ffmpeg /usr/lib/ffmpeg/6.0/bin/
|
||||
ADD --chmod=111 https://github.com/MarcA711/Rockchip-FFmpeg-Builds/releases/download/6.1-11/ffprobe /usr/lib/ffmpeg/6.0/bin/
|
||||
ADD --chmod=111 https://github.com/MarcA711/Rockchip-FFmpeg-Builds/releases/download/7.1-1/ffmpeg /usr/lib/ffmpeg/7.0/bin/
|
||||
ADD --chmod=111 https://github.com/MarcA711/Rockchip-FFmpeg-Builds/releases/download/7.1-1/ffprobe /usr/lib/ffmpeg/7.0/bin/
|
||||
ENV DEFAULT_FFMPEG_VERSION="6.0"
|
||||
ENV INCLUDED_FFMPEG_VERSIONS="${DEFAULT_FFMPEG_VERSION}:${INCLUDED_FFMPEG_VERSIONS}"
|
||||
|
||||
@@ -14,5 +14,5 @@ nvidia_cusparse_cu12==12.5.1.*; platform_machine == 'x86_64'
|
||||
nvidia_nccl_cu12==2.23.4; platform_machine == 'x86_64'
|
||||
nvidia_nvjitlink_cu12==12.5.82; platform_machine == 'x86_64'
|
||||
onnx==1.16.*; platform_machine == 'x86_64'
|
||||
onnxruntime-gpu==1.22.*; platform_machine == 'x86_64'
|
||||
onnxruntime-gpu==1.20.*; platform_machine == 'x86_64'
|
||||
protobuf==3.20.3; platform_machine == 'x86_64'
|
||||
|
||||
@@ -112,7 +112,7 @@ python3 -c 'import secrets; print(secrets.token_hex(64))'
|
||||
|
||||
### Header mapping
|
||||
|
||||
If you have disabled Frigate's authentication and your proxy supports passing a header with authenticated usernames and/or roles, you can use the `header_map` config to specify the header name so it is passed to Frigate. For example, the following will map the `X-Forwarded-User` and `X-Forwarded-Role` values. Header names are not case sensitive. Multiple values can be included in the role header. Frigate expects that the character separating the roles is a comma, but this can be specified using the `separator` config entry.
|
||||
If you have disabled Frigate's authentication and your proxy supports passing a header with authenticated usernames and/or roles, you can use the `header_map` config to specify the header name so it is passed to Frigate. For example, the following will map the `X-Forwarded-User` and `X-Forwarded-Groups` values. Header names are not case sensitive. Multiple values can be included in the role header. Frigate expects that the character separating the roles is a comma, but this can be specified using the `separator` config entry.
|
||||
|
||||
```yaml
|
||||
proxy:
|
||||
@@ -120,7 +120,7 @@ proxy:
|
||||
separator: "|" # This value defaults to a comma, but Authentik uses a pipe, for example.
|
||||
header_map:
|
||||
user: x-forwarded-user
|
||||
role: x-forwarded-role
|
||||
role: x-forwarded-groups
|
||||
```
|
||||
|
||||
Frigate supports both `admin` and `viewer` roles (see below). When using port `8971`, Frigate validates these headers and subsequent requests use the headers `remote-user` and `remote-role` for authorization.
|
||||
|
||||
@@ -176,16 +176,26 @@ For more information on the various values across different distributions, see h
|
||||
|
||||
Depending on your OS and kernel configuration, you may need to change the `/proc/sys/kernel/perf_event_paranoid` kernel tunable. You can test the change by running `sudo sh -c 'echo 2 >/proc/sys/kernel/perf_event_paranoid'` which will persist until a reboot. Make it permanent by running `sudo sh -c 'echo kernel.perf_event_paranoid=2 >> /etc/sysctl.d/local.conf'`
|
||||
|
||||
#### Stats for SR-IOV devices
|
||||
#### Stats for SR-IOV or other devices
|
||||
|
||||
When using virtualized GPUs via SR-IOV, additional args are needed for GPU stats to function. This can be enabled with the following config:
|
||||
When using virtualized GPUs via SR-IOV, you need to specify the device path to use to gather stats from `intel_gpu_top`. This example may work for some systems using SR-IOV:
|
||||
|
||||
```yaml
|
||||
telemetry:
|
||||
stats:
|
||||
sriov: True
|
||||
intel_gpu_device: "sriov"
|
||||
```
|
||||
|
||||
For other virtualized GPUs, try specifying the direct path to the device instead:
|
||||
|
||||
```yaml
|
||||
telemetry:
|
||||
stats:
|
||||
intel_gpu_device: "drm:/dev/dri/card0"
|
||||
```
|
||||
|
||||
If you are passing in a device path, make sure you've passed the device through to the container.
|
||||
|
||||
## AMD/ATI GPUs (Radeon HD 2000 and newer GPUs) via libva-mesa-driver
|
||||
|
||||
VAAPI supports automatic profile selection so it will work automatically with both H.264 and H.265 streams.
|
||||
@@ -376,13 +386,8 @@ Make sure to follow the [Rockchip specific installation instructions](/frigate/i
|
||||
Add one of the following FFmpeg presets to your `config.yml` to enable hardware video processing:
|
||||
|
||||
```yaml
|
||||
# if you try to decode a h264 encoded stream
|
||||
ffmpeg:
|
||||
hwaccel_args: preset-rk-h264
|
||||
|
||||
# if you try to decode a h265 (hevc) encoded stream
|
||||
ffmpeg:
|
||||
hwaccel_args: preset-rk-h265
|
||||
hwaccel_args: preset-rkmpp
|
||||
```
|
||||
|
||||
:::note
|
||||
@@ -390,3 +395,36 @@ ffmpeg:
|
||||
Make sure that your SoC supports hardware acceleration for your input stream. For example, if your camera streams with h265 encoding and a 4k resolution, your SoC must be able to de- and encode h265 with a 4k resolution or higher. If you are unsure whether your SoC meets the requirements, take a look at the datasheet.
|
||||
|
||||
:::
|
||||
|
||||
:::warning
|
||||
|
||||
If one or more of your cameras are not properly processed and this error is shown in the logs:
|
||||
|
||||
```
|
||||
[segment @ 0xaaaaff694790] Timestamps are unset in a packet for stream 0. This is deprecated and will stop working in the future. Fix your code to set the timestamps properly
|
||||
[Parsed_scale_rkrga_0 @ 0xaaaaff819070] No hw context provided on input
|
||||
[Parsed_scale_rkrga_0 @ 0xaaaaff819070] Failed to configure output pad on Parsed_scale_rkrga_0
|
||||
Error initializing filters!
|
||||
Error marking filters as finished
|
||||
[out#1/rawvideo @ 0xaaaaff3d8730] Nothing was written into output file, because at least one of its streams received no packets.
|
||||
Restarting ffmpeg...
|
||||
```
|
||||
|
||||
you should try to uprade to FFmpeg 7. This can be done using this config option:
|
||||
|
||||
```
|
||||
ffmpeg:
|
||||
path: "7.0"
|
||||
```
|
||||
|
||||
You can set this option globally to use FFmpeg 7 for all cameras or on camera level to use it only for specific cameras. Do not confuse this option with:
|
||||
|
||||
```
|
||||
cameras:
|
||||
name:
|
||||
ffmpeg:
|
||||
inputs:
|
||||
- path: rtsp://viewer:{FRIGATE_RTSP_PASSWORD}@10.0.10.10:554/cam/realmonitor?channel=1&subtype=2
|
||||
```
|
||||
|
||||
:::
|
||||
|
||||
@@ -894,7 +894,6 @@ model: # required
|
||||
width: 320
|
||||
height: 320
|
||||
input_tensor: nhwc
|
||||
input_dtype: float
|
||||
labelmap_path: /labelmap/coco-80.txt
|
||||
```
|
||||
|
||||
@@ -1033,22 +1032,23 @@ python3 yolo_to_onnx.py -m yolov7-320
|
||||
|
||||
#### YOLOv9
|
||||
|
||||
YOLOv9 models can be exported using the below code
|
||||
YOLOv9 model can be exported as ONNX using the command below. You can copy and paste the whole thing to your terminal and execute, altering `MODEL_SIZE=t` in the first line to the [model size](https://github.com/WongKinYiu/yolov9#performance) you would like to convert (available sizes are `t`, `s`, `m`, `c`, and `e`).
|
||||
|
||||
```sh
|
||||
git clone https://github.com/WongKinYiu/yolov9
|
||||
cd yolov9
|
||||
|
||||
# setup the virtual environment so installation doesn't affect main system
|
||||
# NOTE: Virtual environment must be using Python 3.11 or older.
|
||||
python3 -m venv ./
|
||||
bin/pip install -r requirements.txt
|
||||
bin/pip install onnx onnxruntime onnx-simplifier>=0.4.1
|
||||
|
||||
# download the weights
|
||||
wget -O yolov9-t.pt "https://github.com/WongKinYiu/yolov9/releases/download/v0.1/yolov9-t-converted.pt" # download the weights
|
||||
|
||||
# prepare and run export script
|
||||
sed -i "s/ckpt = torch.load(attempt_download(w), map_location='cpu')/ckpt = torch.load(attempt_download(w), map_location='cpu', weights_only=False)/g" ./models/experimental.py
|
||||
bin/python3 export.py --weights ./yolov9-t.pt --imgsz 320 --simplify --include onnx
|
||||
docker build . --build-arg MODEL_SIZE=t --output . -f- <<'EOF'
|
||||
FROM python:3.11 AS build
|
||||
RUN apt-get update && apt-get install --no-install-recommends -y libgl1 && rm -rf /var/lib/apt/lists/*
|
||||
COPY --from=ghcr.io/astral-sh/uv:0.8.0 /uv /bin/
|
||||
WORKDIR /yolov9
|
||||
ADD https://github.com/WongKinYiu/yolov9.git .
|
||||
RUN uv pip install --system -r requirements.txt
|
||||
RUN uv pip install --system onnx onnxruntime onnx-simplifier>=0.4.1
|
||||
ARG MODEL_SIZE
|
||||
ADD https://github.com/WongKinYiu/yolov9/releases/download/v0.1/yolov9-${MODEL_SIZE}-converted.pt yolov9-${MODEL_SIZE}.pt
|
||||
RUN sed -i "s/ckpt = torch.load(attempt_download(w), map_location='cpu')/ckpt = torch.load(attempt_download(w), map_location='cpu', weights_only=False)/g" models/experimental.py
|
||||
RUN python3 export.py --weights ./yolov9-${MODEL_SIZE}.pt --imgsz 320 --simplify --include onnx
|
||||
FROM scratch
|
||||
ARG MODEL_SIZE
|
||||
COPY --from=build /yolov9/yolov9-${MODEL_SIZE}.onnx /
|
||||
EOF
|
||||
```
|
||||
|
||||
@@ -903,7 +903,7 @@ telemetry:
|
||||
# Optional: Enable Intel GPU stats (default: shown below)
|
||||
intel_gpu_stats: True
|
||||
# Optional: Treat GPU as SR-IOV to fix GPU stats (default: shown below)
|
||||
sriov: False
|
||||
intel_gpu_device: None
|
||||
# Optional: Enable network bandwidth stats monitoring for camera ffmpeg processes, go2rtc, and object detectors. (default: shown below)
|
||||
# NOTE: The container must either be privileged or have cap_net_admin, cap_net_raw capabilities enabled.
|
||||
network_bandwidth: False
|
||||
|
||||
@@ -60,13 +60,13 @@ Frigate supports multiple different detectors that work on different types of ha
|
||||
|
||||
**AMD**
|
||||
|
||||
- [ROCm](#amd-gpus): ROCm can run on AMD Discrete GPUs to provide efficient object detection
|
||||
- [ROCm](#rocm---amd-gpu): ROCm can run on AMD Discrete GPUs to provide efficient object detection
|
||||
- [Supports limited model architectures](../../configuration/object_detectors#supported-models-1)
|
||||
- Runs best on discrete AMD GPUs
|
||||
|
||||
**Intel**
|
||||
|
||||
- [OpenVino](#openvino): OpenVino can run on Intel Arc GPUs, Intel integrated GPUs, and Intel CPUs to provide efficient object detection.
|
||||
- [OpenVino](#openvino---intel): OpenVino can run on Intel Arc GPUs, Intel integrated GPUs, and Intel CPUs to provide efficient object detection.
|
||||
- [Supports majority of model architectures](../../configuration/object_detectors#supported-models)
|
||||
- Runs best with tiny, small, or medium models
|
||||
|
||||
@@ -110,13 +110,22 @@ Frigate supports both the USB and M.2 versions of the Google Coral.
|
||||
|
||||
A single Coral can handle many cameras using the default model and will be sufficient for the majority of users. You can calculate the maximum performance of your Coral based on the inference speed reported by Frigate. With an inference speed of 10, your Coral will top out at `1000/10=100`, or 100 frames per second. If your detection fps is regularly getting close to that, you should first consider tuning motion masks. If those are already properly configured, a second Coral may be needed.
|
||||
|
||||
### OpenVINO
|
||||
### OpenVINO - Intel
|
||||
|
||||
The OpenVINO detector type is able to run on:
|
||||
|
||||
- 6th Gen Intel Platforms and newer that have an iGPU
|
||||
- x86 & Arm64 hosts with VPU Hardware (ex: Intel NCS2)
|
||||
- x86 hosts with an Intel Arc GPU
|
||||
- Most modern AMD CPUs (though this is officially not supported by Intel)
|
||||
- x86 & Arm64 hosts via CPU (generally not recommended)
|
||||
|
||||
:::note
|
||||
|
||||
Intel NPUs have seen [limited success in community deployments](https://github.com/blakeblackshear/frigate/discussions/13248#discussioncomment-12347357), although they remain officially unsupported.
|
||||
|
||||
In testing, the NPU delivered performance that was only comparable to — or in some cases worse than — the integrated GPU.
|
||||
|
||||
:::
|
||||
|
||||
More information is available [in the detector docs](/configuration/object_detectors#openvino-detector)
|
||||
|
||||
@@ -138,7 +147,7 @@ Inference speeds vary greatly depending on the CPU or GPU used, some known examp
|
||||
|
||||
Frigate is able to utilize an Nvidia GPU which supports the 12.x series of CUDA libraries.
|
||||
|
||||
### Minimum Hardware Support
|
||||
#### Minimum Hardware Support
|
||||
|
||||
12.x series of CUDA libraries are used which have minor version compatibility. The minimum driver version on the host system must be `>=545`. Also the GPU must support a Compute Capability of `5.0` or greater. This generally correlates to a Maxwell-era GPU or newer, check the NVIDIA GPU Compute Capability table linked below.
|
||||
|
||||
@@ -168,7 +177,7 @@ Inference speeds will vary greatly depending on the GPU and the model used.
|
||||
| Quadro P400 2GB | 20 - 25 ms | | |
|
||||
| Quadro P2000 | ~ 12 ms | | |
|
||||
|
||||
### AMD GPUs
|
||||
### ROCm - AMD GPU
|
||||
|
||||
With the [rocm](../configuration/object_detectors.md#amdrocm-gpu-detector) detector Frigate can take advantage of many discrete AMD GPUs.
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@ Suggestions are converted to labels when saving, so you should remove any errant
|
||||
|
||||
## False positive labels
|
||||
|
||||
False positives will be shown with a read box and the label will have a strike through. These can't be adjusted, but they can be deleted if you accidentally submit a true positive as a false positive from Frigate.
|
||||
False positives will be shown with a red box and the label will have a strike through. These can't be adjusted, but they can be deleted if you accidentally submit a true positive as a false positive from Frigate.
|
||||

|
||||
|
||||
Misidentified objects should have a correct label added. For example, if a person was mistakenly detected as a cat, you should submit it as a false positive in Frigate and add a label for the person. The boxes will overlap.
|
||||
|
||||
@@ -53,9 +53,9 @@ Some users may find that Frigate+ models result in more false positives initiall
|
||||
Frigate+ models support a more relevant set of objects for security cameras. The labels for annotation in Frigate+ are configurable by editing the camera in the Cameras section of Frigate+. Currently, the following objects are supported:
|
||||
|
||||
- **People**: `person`, `face`
|
||||
- **Vehicles**: `car`, `motorcycle`, `bicycle`, `boat`, `license_plate`
|
||||
- **Delivery Logos**: `amazon`, `usps`, `ups`, `fedex`, `dhl`, `an_post`, `purolator`, `postnl`, `nzpost`, `postnord`, `gls`, `dpd`
|
||||
- **Animals**: `dog`, `cat`, `deer`, `horse`, `bird`, `raccoon`, `fox`, `bear`, `cow`, `squirrel`, `goat`, `rabbit`
|
||||
- **Vehicles**: `car`, `motorcycle`, `bicycle`, `boat`, `school_bus`, `license_plate`
|
||||
- **Delivery Logos**: `amazon`, `usps`, `ups`, `fedex`, `dhl`, `an_post`, `purolator`, `postnl`, `nzpost`, `postnord`, `gls`, `dpd`, `canada_post`, `royal_mail`
|
||||
- **Animals**: `dog`, `cat`, `deer`, `horse`, `bird`, `raccoon`, `fox`, `bear`, `cow`, `squirrel`, `goat`, `rabbit`, `skunk`, `kangaroo`
|
||||
- **Other**: `package`, `waste_bin`, `bbq_grill`, `robot_lawnmower`, `umbrella`
|
||||
|
||||
Other object types available in the default Frigate model are not available. Additional object types will be added in future releases.
|
||||
@@ -66,7 +66,7 @@ Candidate labels are also available for annotation. These labels don't have enou
|
||||
|
||||
Where possible, these labels are mapped to existing labels during training. For example, any `baby` labels are mapped to `person` until support for new labels is added.
|
||||
|
||||
The candidate labels are: `baby`, `royal mail`, `canada post`, `bpost`, `skunk`, `badger`, `possum`, `rodent`, `kangaroo`, `chicken`, `groundhog`, `boar`, `hedgehog`, `school bus`, `tractor`, `golf cart`, `garbage truck`, `bus`, `sports ball`
|
||||
The candidate labels are: `baby`, `bpost`, `badger`, `possum`, `rodent`, `chicken`, `groundhog`, `boar`, `hedgehog`, `tractor`, `golf cart`, `garbage truck`, `bus`, `sports ball`
|
||||
|
||||
Candidate labels are not available for automatic suggestions.
|
||||
|
||||
|
||||
Vendored
+168
-62
@@ -105,7 +105,7 @@ paths:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/HTTPValidationError"
|
||||
"/users/{username}":
|
||||
/users/{username}:
|
||||
delete:
|
||||
tags:
|
||||
- Auth
|
||||
@@ -130,7 +130,7 @@ paths:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/HTTPValidationError"
|
||||
"/users/{username}/password":
|
||||
/users/{username}/password:
|
||||
put:
|
||||
tags:
|
||||
- Auth
|
||||
@@ -161,7 +161,7 @@ paths:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/HTTPValidationError"
|
||||
"/users/{username}/role":
|
||||
/users/{username}/role:
|
||||
put:
|
||||
tags:
|
||||
- Auth
|
||||
@@ -228,7 +228,7 @@ paths:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/HTTPValidationError"
|
||||
"/faces/train/{name}/classify":
|
||||
/faces/train/{name}/classify:
|
||||
post:
|
||||
tags:
|
||||
- Events
|
||||
@@ -259,7 +259,7 @@ paths:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/HTTPValidationError"
|
||||
"/faces/{name}/create":
|
||||
/faces/{name}/create:
|
||||
post:
|
||||
tags:
|
||||
- Events
|
||||
@@ -284,7 +284,7 @@ paths:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/HTTPValidationError"
|
||||
"/faces/{name}/register":
|
||||
/faces/{name}/register:
|
||||
post:
|
||||
tags:
|
||||
- Events
|
||||
@@ -340,7 +340,7 @@ paths:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/HTTPValidationError"
|
||||
"/faces/{name}/delete":
|
||||
/faces/{name}/delete:
|
||||
post:
|
||||
tags:
|
||||
- Events
|
||||
@@ -371,6 +371,37 @@ paths:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/HTTPValidationError"
|
||||
/faces/{old_name}/rename:
|
||||
put:
|
||||
tags:
|
||||
- Events
|
||||
summary: Rename Face
|
||||
operationId: rename_face_faces__old_name__rename_put
|
||||
parameters:
|
||||
- name: old_name
|
||||
in: path
|
||||
required: true
|
||||
schema:
|
||||
type: string
|
||||
title: Old Name
|
||||
requestBody:
|
||||
required: true
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/RenameFaceBody"
|
||||
responses:
|
||||
"200":
|
||||
description: Successful Response
|
||||
content:
|
||||
application/json:
|
||||
schema: {}
|
||||
"422":
|
||||
description: Validation Error
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/HTTPValidationError"
|
||||
/lpr/reprocess:
|
||||
put:
|
||||
tags:
|
||||
@@ -659,7 +690,7 @@ paths:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/HTTPValidationError"
|
||||
"/review/event/{event_id}":
|
||||
/review/event/{event_id}:
|
||||
get:
|
||||
tags:
|
||||
- Review
|
||||
@@ -685,7 +716,7 @@ paths:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/HTTPValidationError"
|
||||
"/review/{review_id}":
|
||||
/review/{review_id}:
|
||||
get:
|
||||
tags:
|
||||
- Review
|
||||
@@ -711,7 +742,7 @@ paths:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/HTTPValidationError"
|
||||
"/review/{review_id}/viewed":
|
||||
/review/{review_id}/viewed:
|
||||
delete:
|
||||
tags:
|
||||
- Review
|
||||
@@ -774,7 +805,7 @@ paths:
|
||||
content:
|
||||
application/json:
|
||||
schema: {}
|
||||
"/go2rtc/streams/{camera_name}":
|
||||
/go2rtc/streams/{camera_name}:
|
||||
get:
|
||||
tags:
|
||||
- App
|
||||
@@ -991,7 +1022,7 @@ paths:
|
||||
content:
|
||||
application/json:
|
||||
schema: {}
|
||||
"/logs/{service}":
|
||||
/logs/{service}:
|
||||
get:
|
||||
tags:
|
||||
- App
|
||||
@@ -1287,7 +1318,7 @@ paths:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/HTTPValidationError"
|
||||
"/preview/{camera_name}/start/{start_ts}/end/{end_ts}":
|
||||
/preview/{camera_name}/start/{start_ts}/end/{end_ts}:
|
||||
get:
|
||||
tags:
|
||||
- Preview
|
||||
@@ -1325,7 +1356,7 @@ paths:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/HTTPValidationError"
|
||||
"/preview/{year_month}/{day}/{hour}/{camera_name}/{tz_name}":
|
||||
/preview/{year_month}/{day}/{hour}/{camera_name}/{tz_name}:
|
||||
get:
|
||||
tags:
|
||||
- Preview
|
||||
@@ -1376,7 +1407,7 @@ paths:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/HTTPValidationError"
|
||||
"/preview/{camera_name}/start/{start_ts}/end/{end_ts}/frames":
|
||||
/preview/{camera_name}/start/{start_ts}/end/{end_ts}/frames:
|
||||
get:
|
||||
tags:
|
||||
- Preview
|
||||
@@ -1463,7 +1494,7 @@ paths:
|
||||
content:
|
||||
application/json:
|
||||
schema: {}
|
||||
"/export/{camera_name}/start/{start_time}/end/{end_time}":
|
||||
/export/{camera_name}/start/{start_time}/end/{end_time}:
|
||||
post:
|
||||
tags:
|
||||
- Export
|
||||
@@ -1507,7 +1538,7 @@ paths:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/HTTPValidationError"
|
||||
"/export/{event_id}/rename":
|
||||
/export/{event_id}/rename:
|
||||
patch:
|
||||
tags:
|
||||
- Export
|
||||
@@ -1538,7 +1569,7 @@ paths:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/HTTPValidationError"
|
||||
"/export/{event_id}":
|
||||
/export/{event_id}:
|
||||
delete:
|
||||
tags:
|
||||
- Export
|
||||
@@ -1563,7 +1594,7 @@ paths:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/HTTPValidationError"
|
||||
"/exports/{export_id}":
|
||||
/exports/{export_id}:
|
||||
get:
|
||||
tags:
|
||||
- Export
|
||||
@@ -1699,7 +1730,7 @@ paths:
|
||||
anyOf:
|
||||
- type: string
|
||||
- type: "null"
|
||||
default: "00:00,24:00"
|
||||
default: 00:00,24:00
|
||||
title: Time Range
|
||||
- name: has_clip
|
||||
in: query
|
||||
@@ -2007,7 +2038,7 @@ paths:
|
||||
anyOf:
|
||||
- type: string
|
||||
- type: "null"
|
||||
default: "00:00,24:00"
|
||||
default: 00:00,24:00
|
||||
title: Time Range
|
||||
- name: has_clip
|
||||
in: query
|
||||
@@ -2147,7 +2178,7 @@ paths:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/HTTPValidationError"
|
||||
"/events/{event_id}":
|
||||
/events/{event_id}:
|
||||
get:
|
||||
tags:
|
||||
- Events
|
||||
@@ -2198,7 +2229,7 @@ paths:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/HTTPValidationError"
|
||||
"/events/{event_id}/retain":
|
||||
/events/{event_id}/retain:
|
||||
post:
|
||||
tags:
|
||||
- Events
|
||||
@@ -2249,7 +2280,7 @@ paths:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/HTTPValidationError"
|
||||
"/events/{event_id}/plus":
|
||||
/events/{event_id}/plus:
|
||||
post:
|
||||
tags:
|
||||
- Events
|
||||
@@ -2280,7 +2311,7 @@ paths:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/HTTPValidationError"
|
||||
"/events/{event_id}/false_positive":
|
||||
/events/{event_id}/false_positive:
|
||||
put:
|
||||
tags:
|
||||
- Events
|
||||
@@ -2306,7 +2337,7 @@ paths:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/HTTPValidationError"
|
||||
"/events/{event_id}/sub_label":
|
||||
/events/{event_id}/sub_label:
|
||||
post:
|
||||
tags:
|
||||
- Events
|
||||
@@ -2338,7 +2369,39 @@ paths:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/HTTPValidationError"
|
||||
"/events/{event_id}/description":
|
||||
/events/{event_id}/recognized_license_plate:
|
||||
post:
|
||||
tags:
|
||||
- Events
|
||||
summary: Set Plate
|
||||
operationId: set_plate_events__event_id__recognized_license_plate_post
|
||||
parameters:
|
||||
- name: event_id
|
||||
in: path
|
||||
required: true
|
||||
schema:
|
||||
type: string
|
||||
title: Event Id
|
||||
requestBody:
|
||||
required: true
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/EventsLPRBody"
|
||||
responses:
|
||||
"200":
|
||||
description: Successful Response
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/GenericResponse"
|
||||
"422":
|
||||
description: Validation Error
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/HTTPValidationError"
|
||||
/events/{event_id}/description:
|
||||
post:
|
||||
tags:
|
||||
- Events
|
||||
@@ -2370,7 +2433,7 @@ paths:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/HTTPValidationError"
|
||||
"/events/{event_id}/description/regenerate":
|
||||
/events/{event_id}/description/regenerate:
|
||||
put:
|
||||
tags:
|
||||
- Events
|
||||
@@ -2430,7 +2493,7 @@ paths:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/HTTPValidationError"
|
||||
"/events/{camera_name}/{label}/create":
|
||||
/events/{camera_name}/{label}/create:
|
||||
post:
|
||||
tags:
|
||||
- Events
|
||||
@@ -2473,7 +2536,7 @@ paths:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/HTTPValidationError"
|
||||
"/events/{event_id}/end":
|
||||
/events/{event_id}/end:
|
||||
put:
|
||||
tags:
|
||||
- Events
|
||||
@@ -2505,7 +2568,7 @@ paths:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/HTTPValidationError"
|
||||
"/{camera_name}":
|
||||
/{camera_name}:
|
||||
get:
|
||||
tags:
|
||||
- Media
|
||||
@@ -2592,7 +2655,7 @@ paths:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/HTTPValidationError"
|
||||
"/{camera_name}/ptz/info":
|
||||
/{camera_name}/ptz/info:
|
||||
get:
|
||||
tags:
|
||||
- Media
|
||||
@@ -2617,7 +2680,7 @@ paths:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/HTTPValidationError"
|
||||
"/{camera_name}/latest.{extension}":
|
||||
/{camera_name}/latest.{extension}:
|
||||
get:
|
||||
tags:
|
||||
- Media
|
||||
@@ -2720,7 +2783,7 @@ paths:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/HTTPValidationError"
|
||||
"/{camera_name}/recordings/{frame_time}/snapshot.{format}":
|
||||
/{camera_name}/recordings/{frame_time}/snapshot.{format}:
|
||||
get:
|
||||
tags:
|
||||
- Media
|
||||
@@ -2767,7 +2830,7 @@ paths:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/HTTPValidationError"
|
||||
"/{camera_name}/plus/{frame_time}":
|
||||
/{camera_name}/plus/{frame_time}:
|
||||
post:
|
||||
tags:
|
||||
- Media
|
||||
@@ -2846,7 +2909,7 @@ paths:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/HTTPValidationError"
|
||||
"/{camera_name}/recordings/summary":
|
||||
/{camera_name}/recordings/summary:
|
||||
get:
|
||||
tags:
|
||||
- Media
|
||||
@@ -2879,13 +2942,13 @@ paths:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/HTTPValidationError"
|
||||
"/{camera_name}/recordings":
|
||||
/{camera_name}/recordings:
|
||||
get:
|
||||
tags:
|
||||
- Media
|
||||
summary: Recordings
|
||||
description: >-
|
||||
Return specific camera recordings between the given 'after'/'end' times.
|
||||
Return specific camera recordings between the given "after"/"end" times.
|
||||
If not provided the last hour will be used
|
||||
operationId: recordings__camera_name__recordings_get
|
||||
parameters:
|
||||
@@ -2900,14 +2963,14 @@ paths:
|
||||
required: false
|
||||
schema:
|
||||
type: number
|
||||
default: 1744227965.180043
|
||||
default: 1752611870.43948
|
||||
title: After
|
||||
- name: before
|
||||
in: query
|
||||
required: false
|
||||
schema:
|
||||
type: number
|
||||
default: 1744231565.180048
|
||||
default: 1752615470.43949
|
||||
title: Before
|
||||
responses:
|
||||
"200":
|
||||
@@ -2921,13 +2984,14 @@ paths:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/HTTPValidationError"
|
||||
"/{camera_name}/start/{start_ts}/end/{end_ts}/clip.mp4":
|
||||
/{camera_name}/start/{start_ts}/end/{end_ts}/clip.mp4:
|
||||
get:
|
||||
tags:
|
||||
- Media
|
||||
summary: Recording Clip
|
||||
description: >-
|
||||
For iOS devices, use the master.m3u8 HLS link instead of clip.mp4. Safari does not reliably process progressive mp4 files.
|
||||
For iOS devices, use the master.m3u8 HLS link instead of clip.mp4.
|
||||
Safari does not reliably process progressive mp4 files.
|
||||
operationId: recording_clip__camera_name__start__start_ts__end__end_ts__clip_mp4_get
|
||||
parameters:
|
||||
- name: camera_name
|
||||
@@ -2960,11 +3024,14 @@ paths:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/HTTPValidationError"
|
||||
"/vod/{camera_name}/start/{start_ts}/end/{end_ts}":
|
||||
/vod/{camera_name}/start/{start_ts}/end/{end_ts}:
|
||||
get:
|
||||
tags:
|
||||
- Media
|
||||
summary: Vod Ts
|
||||
description: >-
|
||||
Returns an HLS playlist for the specified timestamp-range on the
|
||||
specified camera. Append /master.m3u8 or /index.m3u8 for HLS playback.
|
||||
operationId: vod_ts_vod__camera_name__start__start_ts__end__end_ts__get
|
||||
parameters:
|
||||
- name: camera_name
|
||||
@@ -2997,12 +3064,14 @@ paths:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/HTTPValidationError"
|
||||
"/vod/{year_month}/{day}/{hour}/{camera_name}":
|
||||
/vod/{year_month}/{day}/{hour}/{camera_name}:
|
||||
get:
|
||||
tags:
|
||||
- Media
|
||||
summary: Vod Hour No Timezone
|
||||
description: VOD for specific hour. Uses the default timezone (UTC).
|
||||
description: >-
|
||||
Returns an HLS playlist for the specified date-time on the specified
|
||||
camera. Append /master.m3u8 or /index.m3u8 for HLS playback.
|
||||
operationId: vod_hour_no_timezone_vod__year_month___day___hour___camera_name__get
|
||||
parameters:
|
||||
- name: year_month
|
||||
@@ -3041,11 +3110,15 @@ paths:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/HTTPValidationError"
|
||||
"/vod/{year_month}/{day}/{hour}/{camera_name}/{tz_name}":
|
||||
/vod/{year_month}/{day}/{hour}/{camera_name}/{tz_name}:
|
||||
get:
|
||||
tags:
|
||||
- Media
|
||||
summary: Vod Hour
|
||||
description: >-
|
||||
Returns an HLS playlist for the specified date-time (with timezone) on
|
||||
the specified camera. Append /master.m3u8 or /index.m3u8 for HLS
|
||||
playback.
|
||||
operationId: vod_hour_vod__year_month___day___hour___camera_name___tz_name__get
|
||||
parameters:
|
||||
- name: year_month
|
||||
@@ -3090,11 +3163,14 @@ paths:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/HTTPValidationError"
|
||||
"/vod/event/{event_id}":
|
||||
/vod/event/{event_id}:
|
||||
get:
|
||||
tags:
|
||||
- Media
|
||||
summary: Vod Event
|
||||
description: >-
|
||||
Returns an HLS playlist for the specified object. Append /master.m3u8 or
|
||||
/index.m3u8 for HLS playback.
|
||||
operationId: vod_event_vod_event__event_id__get
|
||||
parameters:
|
||||
- name: event_id
|
||||
@@ -3115,11 +3191,15 @@ paths:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/HTTPValidationError"
|
||||
"/events/{event_id}/snapshot.jpg":
|
||||
/events/{event_id}/snapshot.jpg:
|
||||
get:
|
||||
tags:
|
||||
- Media
|
||||
summary: Event Snapshot
|
||||
description: >-
|
||||
Returns a snapshot image for the specified object id. NOTE: The query
|
||||
params only take affect while the event is in-progress. Once the event
|
||||
has ended the snapshot configuration is used.
|
||||
operationId: event_snapshot_events__event_id__snapshot_jpg_get
|
||||
parameters:
|
||||
- name: event_id
|
||||
@@ -3190,7 +3270,7 @@ paths:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/HTTPValidationError"
|
||||
"/events/{event_id}/thumbnail.{extension}":
|
||||
/events/{event_id}/thumbnail.{extension}:
|
||||
get:
|
||||
tags:
|
||||
- Media
|
||||
@@ -3240,7 +3320,7 @@ paths:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/HTTPValidationError"
|
||||
"/{camera_name}/grid.jpg":
|
||||
/{camera_name}/grid.jpg:
|
||||
get:
|
||||
tags:
|
||||
- Media
|
||||
@@ -3279,7 +3359,7 @@ paths:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/HTTPValidationError"
|
||||
"/events/{event_id}/snapshot-clean.png":
|
||||
/events/{event_id}/snapshot-clean.png:
|
||||
get:
|
||||
tags:
|
||||
- Media
|
||||
@@ -3311,7 +3391,7 @@ paths:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/HTTPValidationError"
|
||||
"/events/{event_id}/clip.mp4":
|
||||
/events/{event_id}/clip.mp4:
|
||||
get:
|
||||
tags:
|
||||
- Media
|
||||
@@ -3336,7 +3416,7 @@ paths:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/HTTPValidationError"
|
||||
"/events/{event_id}/preview.gif":
|
||||
/events/{event_id}/preview.gif:
|
||||
get:
|
||||
tags:
|
||||
- Media
|
||||
@@ -3361,7 +3441,7 @@ paths:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/HTTPValidationError"
|
||||
"/{camera_name}/start/{start_ts}/end/{end_ts}/preview.gif":
|
||||
/{camera_name}/start/{start_ts}/end/{end_ts}/preview.gif:
|
||||
get:
|
||||
tags:
|
||||
- Media
|
||||
@@ -3407,7 +3487,7 @@ paths:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/HTTPValidationError"
|
||||
"/{camera_name}/start/{start_ts}/end/{end_ts}/preview.mp4":
|
||||
/{camera_name}/start/{start_ts}/end/{end_ts}/preview.mp4:
|
||||
get:
|
||||
tags:
|
||||
- Media
|
||||
@@ -3453,7 +3533,7 @@ paths:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/HTTPValidationError"
|
||||
"/review/{event_id}/preview":
|
||||
/review/{event_id}/preview:
|
||||
get:
|
||||
tags:
|
||||
- Media
|
||||
@@ -3488,7 +3568,7 @@ paths:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/HTTPValidationError"
|
||||
"/preview/{file_name}/thumbnail.webp":
|
||||
/preview/{file_name}/thumbnail.webp:
|
||||
get:
|
||||
tags:
|
||||
- Media
|
||||
@@ -3514,7 +3594,7 @@ paths:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/HTTPValidationError"
|
||||
"/preview/{file_name}/thumbnail.jpg":
|
||||
/preview/{file_name}/thumbnail.jpg:
|
||||
get:
|
||||
tags:
|
||||
- Media
|
||||
@@ -3540,7 +3620,7 @@ paths:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/HTTPValidationError"
|
||||
"/{camera_name}/{label}/thumbnail.jpg":
|
||||
/{camera_name}/{label}/thumbnail.jpg:
|
||||
get:
|
||||
tags:
|
||||
- Media
|
||||
@@ -3571,7 +3651,7 @@ paths:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/HTTPValidationError"
|
||||
"/{camera_name}/{label}/best.jpg":
|
||||
/{camera_name}/{label}/best.jpg:
|
||||
get:
|
||||
tags:
|
||||
- Media
|
||||
@@ -3602,7 +3682,7 @@ paths:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/HTTPValidationError"
|
||||
"/{camera_name}/{label}/clip.mp4":
|
||||
/{camera_name}/{label}/clip.mp4:
|
||||
get:
|
||||
tags:
|
||||
- Media
|
||||
@@ -3633,7 +3713,7 @@ paths:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/HTTPValidationError"
|
||||
"/{camera_name}/{label}/snapshot.jpg":
|
||||
/{camera_name}/{label}/snapshot.jpg:
|
||||
get:
|
||||
tags:
|
||||
- Media
|
||||
@@ -3985,6 +4065,23 @@ components:
|
||||
title: End Time
|
||||
type: object
|
||||
title: EventsEndBody
|
||||
EventsLPRBody:
|
||||
properties:
|
||||
recognizedLicensePlate:
|
||||
type: string
|
||||
maxLength: 100
|
||||
title: Recognized License Plate
|
||||
recognizedLicensePlateScore:
|
||||
anyOf:
|
||||
- type: number
|
||||
maximum: 1
|
||||
exclusiveMinimum: 0
|
||||
- type: "null"
|
||||
title: Score for recognized license plate
|
||||
type: object
|
||||
required:
|
||||
- recognizedLicensePlate
|
||||
title: EventsLPRBody
|
||||
EventsSubLabelBody:
|
||||
properties:
|
||||
subLabel:
|
||||
@@ -4105,6 +4202,15 @@ components:
|
||||
- thumbnails
|
||||
- snapshot
|
||||
title: RegenerateDescriptionEnum
|
||||
RenameFaceBody:
|
||||
properties:
|
||||
new_name:
|
||||
type: string
|
||||
title: New Name
|
||||
type: object
|
||||
required:
|
||||
- new_name
|
||||
title: RenameFaceBody
|
||||
ReviewActivityMotionResponse:
|
||||
properties:
|
||||
start_time:
|
||||
|
||||
+1
-1
@@ -71,7 +71,7 @@ def get_remote_addr(request: Request):
|
||||
)
|
||||
if trusted_proxy.version == 4:
|
||||
ipv4 = ip.ipv4_mapped if ip.version == 6 else ip
|
||||
if ipv4 in trusted_proxy:
|
||||
if ipv4 is not None and ipv4 in trusted_proxy:
|
||||
trusted = True
|
||||
logger.debug(f"Trusted: {str(ip)} by {str(trusted_proxy)}")
|
||||
break
|
||||
|
||||
@@ -800,7 +800,10 @@ def vod_event(event_id: str):
|
||||
)
|
||||
|
||||
|
||||
@router.get("/events/{event_id}/snapshot.jpg")
|
||||
@router.get(
|
||||
"/events/{event_id}/snapshot.jpg",
|
||||
description="Returns a snapshot image for the specified object id. NOTE: The query params only take affect while the event is in-progress. Once the event has ended the snapshot configuration is used.",
|
||||
)
|
||||
def event_snapshot(
|
||||
request: Request,
|
||||
event_id: str,
|
||||
|
||||
@@ -241,6 +241,9 @@ class WebPushClient(Communicator): # type: ignore[misc]
|
||||
self.expired_subs.setdefault(notification.user, []).append(
|
||||
endpoint
|
||||
)
|
||||
logger.debug(
|
||||
f"Notification endpoint expired for {notification.user}, received {resp.status_code}"
|
||||
)
|
||||
elif resp.status_code != 201:
|
||||
logger.warning(
|
||||
f"Failed to send notification to {notification.user} :: {resp.status_code}"
|
||||
@@ -257,6 +260,8 @@ class WebPushClient(Communicator): # type: ignore[misc]
|
||||
|
||||
self.check_registrations()
|
||||
|
||||
logger.debug("Sending test notification")
|
||||
|
||||
for user in self.web_pushers:
|
||||
self.send_push_notification(
|
||||
user=user,
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
from typing import Optional
|
||||
|
||||
from pydantic import Field
|
||||
|
||||
from .base import FrigateBaseModel
|
||||
@@ -11,8 +13,8 @@ class StatsConfig(FrigateBaseModel):
|
||||
network_bandwidth: bool = Field(
|
||||
default=False, title="Enable network bandwidth for ffmpeg processes."
|
||||
)
|
||||
sriov: bool = Field(
|
||||
default=False, title="Treat device as SR-IOV to support GPU stats."
|
||||
intel_gpu_device: Optional[str] = Field(
|
||||
default=None, title="Define the device to use when gathering SR-IOV stats."
|
||||
)
|
||||
|
||||
|
||||
|
||||
@@ -26,6 +26,7 @@ DEFAULT_ATTRIBUTE_LABEL_MAP = {
|
||||
"car": [
|
||||
"amazon",
|
||||
"an_post",
|
||||
"canada_post",
|
||||
"dhl",
|
||||
"dpd",
|
||||
"fedex",
|
||||
@@ -35,6 +36,7 @@ DEFAULT_ATTRIBUTE_LABEL_MAP = {
|
||||
"postnl",
|
||||
"postnord",
|
||||
"purolator",
|
||||
"royal_mail",
|
||||
"ups",
|
||||
"usps",
|
||||
],
|
||||
@@ -70,6 +72,7 @@ LIBAVFORMAT_VERSION_MAJOR = int(os.environ.get("LIBAVFORMAT_VERSION_MAJOR", "59"
|
||||
FFMPEG_HWACCEL_NVIDIA = "preset-nvidia"
|
||||
FFMPEG_HWACCEL_VAAPI = "preset-vaapi"
|
||||
FFMPEG_HWACCEL_VULKAN = "preset-vulkan"
|
||||
FFMPEG_HWACCEL_RKMPP = "preset-rkmpp"
|
||||
FFMPEG_HVC1_ARGS = ["-tag:v", "hvc1"]
|
||||
|
||||
# Regex constants
|
||||
|
||||
@@ -119,7 +119,7 @@ class Rknn(DetectionApi):
|
||||
model_props["model_type"] = model_type
|
||||
|
||||
if model_matched:
|
||||
model_props["filename"] = model_path + f"-{soc}-v2.3.2-1.rknn"
|
||||
model_props["filename"] = model_path + f"-{soc}-v2.3.2-2.rknn"
|
||||
|
||||
model_props["path"] = model_cache_dir + model_props["filename"]
|
||||
|
||||
@@ -140,26 +140,10 @@ class Rknn(DetectionApi):
|
||||
os.mkdir(model_cache_dir)
|
||||
|
||||
urllib.request.urlretrieve(
|
||||
f"https://github.com/MarcA711/rknn-models/releases/download/v2.3.2/{filename}",
|
||||
f"https://github.com/MarcA711/rknn-models/releases/download/v2.3.2-2/{filename}",
|
||||
model_cache_dir + filename,
|
||||
)
|
||||
|
||||
def check_config(self, config):
|
||||
if (config.model.width != 320) or (config.model.height != 320):
|
||||
raise Exception(
|
||||
"Make sure to set the model width and height to 320 in your config."
|
||||
)
|
||||
|
||||
if config.model.input_pixel_format != "bgr":
|
||||
raise Exception(
|
||||
'Make sure to set the model input_pixel_format to "bgr" in your config.'
|
||||
)
|
||||
|
||||
if config.model.input_tensor != "nhwc":
|
||||
raise Exception(
|
||||
'Make sure to set the model input_tensor to "nhwc" in your config.'
|
||||
)
|
||||
|
||||
def post_process_yolonas(self, output: list[np.ndarray]):
|
||||
"""
|
||||
@param output: output of inference
|
||||
|
||||
@@ -334,27 +334,24 @@ class Embeddings:
|
||||
.paginate(current_page, batch_size)
|
||||
)
|
||||
|
||||
while len(events) > 0:
|
||||
while events:
|
||||
event: Event
|
||||
batch_thumbs = {}
|
||||
batch_descs = {}
|
||||
for event in events:
|
||||
thumbnail = get_event_thumbnail_bytes(event)
|
||||
|
||||
if thumbnail is None:
|
||||
continue
|
||||
|
||||
batch_thumbs[event.id] = thumbnail
|
||||
totals["thumbnails"] += 1
|
||||
totals["processed_objects"] += 1
|
||||
|
||||
if description := event.data.get("description", "").strip():
|
||||
batch_descs[event.id] = description
|
||||
totals["descriptions"] += 1
|
||||
|
||||
totals["processed_objects"] += 1
|
||||
if thumbnail := get_event_thumbnail_bytes(event):
|
||||
batch_thumbs[event.id] = thumbnail
|
||||
totals["thumbnails"] += 1
|
||||
|
||||
# run batch embedding
|
||||
self.batch_embed_thumbnail(batch_thumbs)
|
||||
if batch_thumbs:
|
||||
self.batch_embed_thumbnail(batch_thumbs)
|
||||
|
||||
if batch_descs:
|
||||
self.batch_embed_description(batch_descs)
|
||||
|
||||
@@ -8,6 +8,7 @@ from typing import Any
|
||||
from frigate.const import (
|
||||
FFMPEG_HVC1_ARGS,
|
||||
FFMPEG_HWACCEL_NVIDIA,
|
||||
FFMPEG_HWACCEL_RKMPP,
|
||||
FFMPEG_HWACCEL_VAAPI,
|
||||
FFMPEG_HWACCEL_VULKAN,
|
||||
LIBAVFORMAT_VERSION_MAJOR,
|
||||
@@ -70,8 +71,7 @@ PRESETS_HW_ACCEL_DECODE = {
|
||||
FFMPEG_HWACCEL_NVIDIA: "-hwaccel cuda -hwaccel_output_format cuda",
|
||||
"preset-jetson-h264": "-c:v h264_nvmpi -resize {1}x{2}",
|
||||
"preset-jetson-h265": "-c:v hevc_nvmpi -resize {1}x{2}",
|
||||
"preset-rk-h264": "-hwaccel rkmpp -hwaccel_output_format drm_prime",
|
||||
"preset-rk-h265": "-hwaccel rkmpp -hwaccel_output_format drm_prime",
|
||||
f"{FFMPEG_HWACCEL_RKMPP}-no-dump_extra": "-hwaccel rkmpp -hwaccel_output_format drm_prime",
|
||||
# experimental presets
|
||||
FFMPEG_HWACCEL_VULKAN: "-hwaccel vulkan -init_hw_device vulkan=gpu:0 -filter_hw_device gpu -hwaccel_output_format vulkan",
|
||||
}
|
||||
@@ -85,6 +85,16 @@ PRESETS_HW_ACCEL_DECODE["preset-nvidia-mjpeg"] = PRESETS_HW_ACCEL_DECODE[
|
||||
FFMPEG_HWACCEL_NVIDIA
|
||||
]
|
||||
|
||||
PRESETS_HW_ACCEL_DECODE[FFMPEG_HWACCEL_RKMPP] = (
|
||||
f"{PRESETS_HW_ACCEL_DECODE[f'{FFMPEG_HWACCEL_RKMPP}-no-dump_extra']}{' -bsf:v dump_extra' if LIBAVFORMAT_VERSION_MAJOR >= 61 else ''}"
|
||||
)
|
||||
PRESETS_HW_ACCEL_DECODE["preset-rk-h264"] = PRESETS_HW_ACCEL_DECODE[
|
||||
FFMPEG_HWACCEL_RKMPP
|
||||
]
|
||||
PRESETS_HW_ACCEL_DECODE["preset-rk-h265"] = PRESETS_HW_ACCEL_DECODE[
|
||||
FFMPEG_HWACCEL_RKMPP
|
||||
]
|
||||
|
||||
PRESETS_HW_ACCEL_SCALE = {
|
||||
"preset-rpi-64-h264": "-r {0} -vf fps={0},scale={1}:{2}",
|
||||
"preset-rpi-64-h265": "-r {0} -vf fps={0},scale={1}:{2}",
|
||||
@@ -94,8 +104,7 @@ PRESETS_HW_ACCEL_SCALE = {
|
||||
FFMPEG_HWACCEL_NVIDIA: "-r {0} -vf fps={0},scale_cuda=w={1}:h={2},hwdownload,format=nv12,eq=gamma=1.4:gamma_weight=0.5",
|
||||
"preset-jetson-h264": "-r {0}", # scaled in decoder
|
||||
"preset-jetson-h265": "-r {0}", # scaled in decoder
|
||||
"preset-rk-h264": "-r {0} -vf scale_rkrga=w={1}:h={2}:format=yuv420p:force_original_aspect_ratio=0,hwmap=mode=read,format=yuv420p",
|
||||
"preset-rk-h265": "-r {0} -vf scale_rkrga=w={1}:h={2}:format=yuv420p:force_original_aspect_ratio=0,hwmap=mode=read,format=yuv420p",
|
||||
FFMPEG_HWACCEL_RKMPP: "-r {0} -vf scale_rkrga=w={1}:h={2}:format=yuv420p:force_original_aspect_ratio=0,hwmap=mode=read,format=yuv420p",
|
||||
"default": "-r {0} -vf fps={0},scale={1}:{2}",
|
||||
# experimental presets
|
||||
FFMPEG_HWACCEL_VULKAN: "-r {0} -vf fps={0},hwupload,scale_vulkan=w={1}:h={2},hwdownload",
|
||||
@@ -107,6 +116,12 @@ PRESETS_HW_ACCEL_SCALE["preset-nvidia-h265"] = PRESETS_HW_ACCEL_SCALE[
|
||||
FFMPEG_HWACCEL_NVIDIA
|
||||
]
|
||||
|
||||
PRESETS_HW_ACCEL_SCALE[f"{FFMPEG_HWACCEL_RKMPP}-no-dump_extra"] = (
|
||||
PRESETS_HW_ACCEL_SCALE[FFMPEG_HWACCEL_RKMPP]
|
||||
)
|
||||
PRESETS_HW_ACCEL_SCALE["preset-rk-h264"] = PRESETS_HW_ACCEL_SCALE[FFMPEG_HWACCEL_RKMPP]
|
||||
PRESETS_HW_ACCEL_SCALE["preset-rk-h265"] = PRESETS_HW_ACCEL_SCALE[FFMPEG_HWACCEL_RKMPP]
|
||||
|
||||
PRESETS_HW_ACCEL_ENCODE_BIRDSEYE = {
|
||||
"preset-rpi-64-h264": "{0} -hide_banner {1} -c:v h264_v4l2m2m {2}",
|
||||
"preset-rpi-64-h265": "{0} -hide_banner {1} -c:v hevc_v4l2m2m {2}",
|
||||
@@ -116,7 +131,7 @@ PRESETS_HW_ACCEL_ENCODE_BIRDSEYE = {
|
||||
FFMPEG_HWACCEL_NVIDIA: "{0} -hide_banner {1} -c:v h264_nvenc -g 50 -profile:v high -level:v auto -preset:v p2 -tune:v ll {2}",
|
||||
"preset-jetson-h264": "{0} -hide_banner {1} -c:v h264_nvmpi -profile high {2}",
|
||||
"preset-jetson-h265": "{0} -hide_banner {1} -c:v h264_nvmpi -profile main {2}",
|
||||
"preset-rk-h264": "{0} -hide_banner {1} -c:v h264_rkmpp -profile:v high {2}",
|
||||
FFMPEG_HWACCEL_RKMPP: "{0} -hide_banner {1} -c:v h264_rkmpp -profile:v high {2}",
|
||||
"preset-rk-h265": "{0} -hide_banner {1} -c:v hevc_rkmpp -profile:v main {2}",
|
||||
"default": "{0} -hide_banner {1} -c:v libx264 -g 50 -profile:v high -level:v 4.1 -preset:v superfast -tune:v zerolatency {2}",
|
||||
}
|
||||
@@ -127,6 +142,13 @@ PRESETS_HW_ACCEL_ENCODE_BIRDSEYE["preset-nvidia-h265"] = (
|
||||
PRESETS_HW_ACCEL_ENCODE_BIRDSEYE[FFMPEG_HWACCEL_NVIDIA]
|
||||
)
|
||||
|
||||
PRESETS_HW_ACCEL_ENCODE_BIRDSEYE[f"{FFMPEG_HWACCEL_RKMPP}-no-dump_extra"] = (
|
||||
PRESETS_HW_ACCEL_ENCODE_BIRDSEYE[FFMPEG_HWACCEL_RKMPP]
|
||||
)
|
||||
PRESETS_HW_ACCEL_ENCODE_BIRDSEYE["preset-rk-h264"] = PRESETS_HW_ACCEL_ENCODE_BIRDSEYE[
|
||||
FFMPEG_HWACCEL_RKMPP
|
||||
]
|
||||
|
||||
PRESETS_HW_ACCEL_ENCODE_TIMELAPSE = {
|
||||
"preset-rpi-64-h264": "{0} -hide_banner {1} -c:v h264_v4l2m2m -pix_fmt yuv420p {2}",
|
||||
"preset-rpi-64-h265": "{0} -hide_banner {1} -c:v hevc_v4l2m2m -pix_fmt yuv420p {2}",
|
||||
@@ -137,7 +159,7 @@ PRESETS_HW_ACCEL_ENCODE_TIMELAPSE = {
|
||||
"preset-nvidia-h265": "{0} -hide_banner -hwaccel cuda -hwaccel_output_format cuda -extra_hw_frames 8 {1} -c:v hevc_nvenc {2}",
|
||||
"preset-jetson-h264": "{0} -hide_banner {1} -c:v h264_nvmpi -profile high {2}",
|
||||
"preset-jetson-h265": "{0} -hide_banner {1} -c:v hevc_nvmpi -profile main {2}",
|
||||
"preset-rk-h264": "{0} -hide_banner {1} -c:v h264_rkmpp -profile:v high {2}",
|
||||
FFMPEG_HWACCEL_RKMPP: "{0} -hide_banner {1} -c:v h264_rkmpp -profile:v high {2}",
|
||||
"preset-rk-h265": "{0} -hide_banner {1} -c:v hevc_rkmpp -profile:v main {2}",
|
||||
"default": "{0} -hide_banner {1} -c:v libx264 -preset:v ultrafast -tune:v zerolatency {2}",
|
||||
}
|
||||
@@ -145,6 +167,13 @@ PRESETS_HW_ACCEL_ENCODE_TIMELAPSE["preset-nvidia-h264"] = (
|
||||
PRESETS_HW_ACCEL_ENCODE_TIMELAPSE[FFMPEG_HWACCEL_NVIDIA]
|
||||
)
|
||||
|
||||
PRESETS_HW_ACCEL_ENCODE_TIMELAPSE[f"{FFMPEG_HWACCEL_RKMPP}-no-dump_extra"] = (
|
||||
PRESETS_HW_ACCEL_ENCODE_TIMELAPSE[FFMPEG_HWACCEL_RKMPP]
|
||||
)
|
||||
PRESETS_HW_ACCEL_ENCODE_TIMELAPSE["preset-rk-h264"] = PRESETS_HW_ACCEL_ENCODE_TIMELAPSE[
|
||||
FFMPEG_HWACCEL_RKMPP
|
||||
]
|
||||
|
||||
# encoding of previews is only done on CPU due to comparable encode times and better quality from libx264
|
||||
PRESETS_HW_ACCEL_ENCODE_PREVIEW = {
|
||||
"default": "{0} -hide_banner {1} -c:v libx264 -profile:v baseline -preset:v ultrafast {2}",
|
||||
|
||||
@@ -201,7 +201,7 @@ async def set_gpu_stats(
|
||||
continue
|
||||
|
||||
# intel QSV GPU
|
||||
intel_usage = get_intel_gpu_stats(config.telemetry.stats.sriov)
|
||||
intel_usage = get_intel_gpu_stats(config.telemetry.stats.intel_gpu_device)
|
||||
|
||||
if intel_usage is not None:
|
||||
stats["intel-qsv"] = intel_usage or {"gpu": "", "mem": ""}
|
||||
@@ -226,7 +226,9 @@ async def set_gpu_stats(
|
||||
continue
|
||||
|
||||
# intel VAAPI GPU
|
||||
intel_usage = get_intel_gpu_stats(config.telemetry.stats.sriov)
|
||||
intel_usage = get_intel_gpu_stats(
|
||||
config.telemetry.stats.intel_gpu_device
|
||||
)
|
||||
|
||||
if intel_usage is not None:
|
||||
stats["intel-vaapi"] = intel_usage or {"gpu": "", "mem": ""}
|
||||
|
||||
@@ -257,7 +257,7 @@ def get_amd_gpu_stats() -> Optional[dict[str, str]]:
|
||||
return results
|
||||
|
||||
|
||||
def get_intel_gpu_stats(sriov: bool) -> Optional[dict[str, str]]:
|
||||
def get_intel_gpu_stats(intel_gpu_device: Optional[str]) -> Optional[dict[str, str]]:
|
||||
"""Get stats using intel_gpu_top."""
|
||||
|
||||
def get_stats_manually(output: str) -> dict[str, str]:
|
||||
@@ -304,8 +304,8 @@ def get_intel_gpu_stats(sriov: bool) -> Optional[dict[str, str]]:
|
||||
"1",
|
||||
]
|
||||
|
||||
if sriov:
|
||||
intel_gpu_top_command += ["-d", "sriov"]
|
||||
if intel_gpu_device:
|
||||
intel_gpu_top_command += ["-d", intel_gpu_device]
|
||||
|
||||
try:
|
||||
p = sp.run(
|
||||
|
||||
@@ -1,3 +1,268 @@
|
||||
{
|
||||
"babbling": "Бърборене"
|
||||
"babbling": "Бърборене",
|
||||
"whispering": "Шепнене",
|
||||
"laughter": "Смях",
|
||||
"crying": "Плача",
|
||||
"sigh": "Въздишка",
|
||||
"singing": "Подписвам",
|
||||
"choir": "Хор",
|
||||
"yodeling": "Йоделинг",
|
||||
"mantra": "Мантра",
|
||||
"child_singing": "Дете пее",
|
||||
"rapping": "Рапиране",
|
||||
"humming": "Тананикане",
|
||||
"groan": "Пъшкане",
|
||||
"whistling": "Подсвиркване",
|
||||
"breathing": "Дишане",
|
||||
"snoring": "Хъркане",
|
||||
"cough": "Кашлица",
|
||||
"throat_clearing": "Прокашляне",
|
||||
"sneeze": "Кихане",
|
||||
"sniff": "Подсмърчане",
|
||||
"run": "Бяг",
|
||||
"shuffle": "Разбъркване",
|
||||
"footsteps": "Стъпки",
|
||||
"chewing": "Дъвчене",
|
||||
"biting": "Хапане",
|
||||
"gargling": "Гаргара",
|
||||
"burping": "Оригване",
|
||||
"hiccup": "Хълцане",
|
||||
"fart": "Пръдня",
|
||||
"hands": "Ръце",
|
||||
"finger_snapping": "Щтракане с пръсти",
|
||||
"clapping": "Ръкопляскане",
|
||||
"applause": "Овации",
|
||||
"chatter": "Говорене",
|
||||
"crowd": "Тълпа",
|
||||
"children_playing": "Деца си играят",
|
||||
"animal": "Животно",
|
||||
"pets": "Домашен любимец",
|
||||
"dog": "Куче",
|
||||
"bark": "Лай",
|
||||
"cat": "Котка",
|
||||
"purr": "Мър",
|
||||
"meow": "Мял",
|
||||
"hiss": "Съскане",
|
||||
"livestock": "Добитък",
|
||||
"horse": "Кон",
|
||||
"neigh": "Иииааа",
|
||||
"moo": "Муу",
|
||||
"cowbell": "Хлопка",
|
||||
"pig": "Прасе",
|
||||
"oink": "Грух",
|
||||
"goat": "Коза",
|
||||
"sheep": "Овца",
|
||||
"chicken": "Пиле",
|
||||
"cluck": "Ко-ко",
|
||||
"cock_a_doodle_doo": "Кукуригу",
|
||||
"turkey": "Пуйка",
|
||||
"gobble": "Пулюпулю",
|
||||
"duck": "Патка",
|
||||
"quack": "Ква",
|
||||
"goose": "Гъска",
|
||||
"wild_animals": "Диви животни",
|
||||
"roaring_cats": "Ревящи котки",
|
||||
"roar": "Рев",
|
||||
"bird": "Птица",
|
||||
"pigeon": "Гълъб",
|
||||
"coo": "Гуу",
|
||||
"crow": "Гарван",
|
||||
"caw": "Га",
|
||||
"owl": "Сова",
|
||||
"hoot": "Бухуу",
|
||||
"flapping_wings": "Плясък на крила",
|
||||
"dogs": "Кучета",
|
||||
"rats": "Плъхове",
|
||||
"mouse": "Мишка",
|
||||
"insect": "Насекомо",
|
||||
"cricket": "Щурец",
|
||||
"mosquito": "Комар",
|
||||
"fly": "Муха",
|
||||
"buzz": "Бръм",
|
||||
"frog": "Жаба",
|
||||
"croak": "Квак",
|
||||
"snake": "Змия",
|
||||
"whale_vocalization": "Вик на кит",
|
||||
"music": "Музика",
|
||||
"musical_instrument": "Музикален инструмент",
|
||||
"plucked_string_instrument": "Струнен инструмент",
|
||||
"guitar": "Китара",
|
||||
"electric_guitar": "Електрическа китара",
|
||||
"bass_guitar": "Бас китара",
|
||||
"acoustic_guitar": "Акустична китара",
|
||||
"steel_guitar": "Метална китара",
|
||||
"banjo": "Банджо",
|
||||
"sitar": "Ситар",
|
||||
"mandolin": "Мандолина",
|
||||
"ukulele": "Укулеле",
|
||||
"keyboard": "Клавир",
|
||||
"piano": "Пиано",
|
||||
"electric_piano": "Електрическо пиано",
|
||||
"organ": "Орган",
|
||||
"electronic_organ": "Електрически орган",
|
||||
"hammond_organ": "Хамонд орган",
|
||||
"synthesizer": "Синтезатор",
|
||||
"sampler": "Семплър",
|
||||
"percussion": "Перкуции",
|
||||
"drum_kit": "Сет барабани",
|
||||
"drum_machine": "Дръм машина",
|
||||
"drum": "Барабан",
|
||||
"drum_roll": "Туш",
|
||||
"timpani": "Тимпани",
|
||||
"tabla": "Табла",
|
||||
"cymbal": "Цимбал",
|
||||
"tambourine": "Тамбура",
|
||||
"maraca": "Маракас",
|
||||
"gong": "Гонг",
|
||||
"vibraphone": "Вибрафон",
|
||||
"orchestra": "Оркестър",
|
||||
"brass_instrument": "Брас инструмент",
|
||||
"french_horn": "Валдхорна",
|
||||
"trumpet": "Тромпет",
|
||||
"trombone": "Тромбон",
|
||||
"bowed_string_instrument": "Струнен инструмент с лък",
|
||||
"violin": "Цигулка",
|
||||
"pizzicato": "Пицикато",
|
||||
"cello": "Чело",
|
||||
"double_bass": "Контрабас",
|
||||
"wind_instrument": "Духов инструмент",
|
||||
"flute": "Флейта",
|
||||
"saxophone": "Саксофон",
|
||||
"clarinet": "Кларинет",
|
||||
"harp": "Арфа",
|
||||
"bell": "Камбана",
|
||||
"church_bell": "Църковна камбана",
|
||||
"bicycle_bell": "Вело звънец",
|
||||
"tuning_fork": "Камертон",
|
||||
"harmonica": "Хармоника",
|
||||
"accordion": "Акордеон",
|
||||
"bagpipes": "Гайда",
|
||||
"didgeridoo": "Диджириду",
|
||||
"theremin": "Теремин",
|
||||
"scratching": "Чесане",
|
||||
"pop_music": "Поп музика",
|
||||
"hip_hop_music": "Хип-хоп музика",
|
||||
"beatboxing": "Бийтбокс",
|
||||
"rock_music": "Рок музика",
|
||||
"heavy_metal": "Хеви метъл",
|
||||
"punk_rock": "Пънк рок",
|
||||
"grunge": "Гръндж",
|
||||
"progressive_rock": "Прогресивен рок",
|
||||
"rock_and_roll": "Рок енд рол",
|
||||
"psychedelic_rock": "Психаделичен рок",
|
||||
"rhythm_and_blues": "Ритъм и блуз",
|
||||
"soul_music": "Соул музика",
|
||||
"reggae": "Реге",
|
||||
"country": "Кънтри",
|
||||
"swing_music": "Суинг музика",
|
||||
"bluegrass": "Блуграс",
|
||||
"funk": "Фънк",
|
||||
"folk_music": "Фолк музика",
|
||||
"middle_eastern_music": "Маанета",
|
||||
"jazz": "Джаз",
|
||||
"disco": "Диско",
|
||||
"classical_music": "Класическа музика",
|
||||
"opera": "Опера",
|
||||
"electronic_music": "Електронна музика",
|
||||
"house_music": "Хаус музика",
|
||||
"techno": "Техно",
|
||||
"dubstep": "Дъбстеп",
|
||||
"drum_and_bass": "Дръм и бас",
|
||||
"electronica": "Електроника",
|
||||
"trance_music": "Транс музика",
|
||||
"music_of_latin_america": "Латино музика",
|
||||
"salsa_music": "Салса музика",
|
||||
"flamenco": "Фламенко",
|
||||
"blues": "Блус",
|
||||
"music_for_children": "Детска музика",
|
||||
"a_capella": "Акапела",
|
||||
"music_of_africa": "Африканска музика",
|
||||
"afrobeat": "Афроритъм",
|
||||
"gospel_music": "Госпел",
|
||||
"music_of_asia": "Азиатска музика",
|
||||
"ska": "Ска",
|
||||
"song": "Песен",
|
||||
"background_music": "Фонова музика",
|
||||
"jingle": "Джингъл",
|
||||
"thunderstorm": "Гръмотевична буря",
|
||||
"thunder": "Гръмотевица",
|
||||
"water": "Вода",
|
||||
"rain": "Дъжд",
|
||||
"raindrop": "Дъждовна капка",
|
||||
"stream": "Поток",
|
||||
"waterfall": "Водопад",
|
||||
"ocean": "Океан",
|
||||
"waves": "Вълни",
|
||||
"steam": "Пара",
|
||||
"fire": "Огън",
|
||||
"vehicle": "Превозно средство",
|
||||
"boat": "Лодка",
|
||||
"sailboat": "Ветроходна лодка",
|
||||
"rowboat": "Гребна лодка",
|
||||
"motorboat": "Моторна лодка",
|
||||
"ship": "Кораб",
|
||||
"motor_vehicle": "МПС",
|
||||
"car": "Кола",
|
||||
"car_alarm": "Аларма на кола",
|
||||
"skidding": "Поднасяне",
|
||||
"tire_squeal": "Скърцане на гуми",
|
||||
"car_passing_by": "Преминаваща кола",
|
||||
"race_car": "Състезателна кола",
|
||||
"truck": "Камион",
|
||||
"air_brake": "Въздушна спирачка",
|
||||
"air_horn": "Тромба",
|
||||
"reversing_beeps": "Звуков сигнал за задна скорост",
|
||||
"ice_cream_truck": "Камион за сладолед",
|
||||
"bus": "Автобус",
|
||||
"police_car": "Полицейска кола",
|
||||
"ambulance": "Линейка",
|
||||
"fire_engine": "Пожарна кола",
|
||||
"motorcycle": "Мотоциклет",
|
||||
"traffic_noise": "Шум от трафик",
|
||||
"rail_transport": "Железопътен транспорт",
|
||||
"train": "Влак",
|
||||
"train_whistle": "Влакова свирка",
|
||||
"train_horn": "Влаков клаксон",
|
||||
"railroad_car": "Вагон",
|
||||
"train_wheels_squealing": "Скърцане на ЖП спирачки",
|
||||
"subway": "Метро",
|
||||
"aircraft": "Самолет",
|
||||
"aircraft_engine": "Самолетен двигател",
|
||||
"jet_engine": "Реактивен двигател",
|
||||
"propeller": "Витло",
|
||||
"helicopter": "Хеликоптер",
|
||||
"fixed-wing_aircraft": "Самолет с твърди крила",
|
||||
"bicycle": "Велосипед",
|
||||
"skateboard": "Скейтборд",
|
||||
"engine": "Двигател",
|
||||
"dental_drill's_drill": "Зълболекарско борче",
|
||||
"lawn_mower": "Косачка",
|
||||
"chainsaw": "Моторен трион",
|
||||
"engine_starting": "Стартиране на двигател",
|
||||
"idling": "Празен ход",
|
||||
"accelerating": "Ускорение",
|
||||
"door": "Врата",
|
||||
"doorbell": "Звънец",
|
||||
"ding-dong": "Динг-донг",
|
||||
"sliding_door": "Плъзгаща врата",
|
||||
"slam": "Затръшване",
|
||||
"knock": "Чук",
|
||||
"tap": "Почукване",
|
||||
"squeak": "Скръц",
|
||||
"drawer_open_or_close": "Чекмедже отвори или затвори",
|
||||
"dishes": "Чинии",
|
||||
"cutlery": "Прибори за хранене",
|
||||
"chopping": "Рязане",
|
||||
"frying": "Пържене",
|
||||
"microwave_oven": "Микровълнова фурна",
|
||||
"blender": "Блендер",
|
||||
"water_tap": "Кран за вода",
|
||||
"speech": "Реч",
|
||||
"yell": "Викане",
|
||||
"bellow": "Под",
|
||||
"whoop": "Уупс",
|
||||
"pant": "Здъхване",
|
||||
"stomach_rumble": "Къркорене на стомах",
|
||||
"heartbeat": "Сърцебиене",
|
||||
"scream": "Вик"
|
||||
}
|
||||
|
||||
@@ -13,7 +13,50 @@
|
||||
"second_one": "{{time}} секунда",
|
||||
"second_other": "{{time}} секунди",
|
||||
"year_one": "{{time}} година",
|
||||
"year_other": "{{time}} години"
|
||||
"year_other": "{{time}} години",
|
||||
"justNow": "Сега",
|
||||
"last7": "Изминалите 7 дни",
|
||||
"last14": "Изминалите 14 дни",
|
||||
"last30": "Изминалите 30 дни",
|
||||
"thisWeek": "Тази седмица",
|
||||
"lastWeek": "Предходната седмица",
|
||||
"thisMonth": "Този месец",
|
||||
"lastMonth": "Предходния месец",
|
||||
"5minutes": "5 минути",
|
||||
"10minutes": "10 минути",
|
||||
"30minutes": "30 минути",
|
||||
"1hour": "1 час",
|
||||
"12hours": "12 часа",
|
||||
"24hours": "24 часа",
|
||||
"pm": "pm",
|
||||
"am": "am",
|
||||
"yr": "г",
|
||||
"d": "{{time}}д",
|
||||
"h": "{{time}}ч",
|
||||
"formattedTimestamp": {
|
||||
"12hour": "МММ д, ч:мм:сс ааа",
|
||||
"24hour": "МММ д, ЧЧ:мм:сс"
|
||||
},
|
||||
"formattedTimestamp2": {
|
||||
"12hour": "ММ/дд ч:мм:сса",
|
||||
"24hour": "д МММ ЧЧ:мм:сс"
|
||||
},
|
||||
"formattedTimestampHourMinute": {
|
||||
"12hour": "ч:мм ааа",
|
||||
"24hour": "ЧЧ:мм"
|
||||
},
|
||||
"formattedTimestampHourMinuteSecond": {
|
||||
"12hour": "ч:мм:сс ааа",
|
||||
"24hour": "ЧЧ:мм:сс"
|
||||
},
|
||||
"formattedTimestampMonthDayHourMinute": {
|
||||
"12hour": "МММ д, ч:мм ааа",
|
||||
"24hour": "МММ д, ЧЧ:мм"
|
||||
},
|
||||
"formattedTimestampMonthDayYear": {
|
||||
"12hour": "МММ д, гггг",
|
||||
"24hour": "МММ д, гггг"
|
||||
}
|
||||
},
|
||||
"button": {
|
||||
"apply": "Приложи",
|
||||
@@ -60,5 +103,8 @@
|
||||
"count_other": "{{count}} камери"
|
||||
}
|
||||
}
|
||||
},
|
||||
"label": {
|
||||
"back": "Върни се"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1 +1,45 @@
|
||||
{}
|
||||
{
|
||||
"group": {
|
||||
"add": "Добави група за камери",
|
||||
"label": "Групи камери",
|
||||
"edit": "Редактирай група за камери",
|
||||
"delete": {
|
||||
"label": "Изтрий група за камери",
|
||||
"confirm": {
|
||||
"title": "Потвърди изтриването",
|
||||
"desc": "Сигурни ли сте, че искате да изтриете група </em>{{name}}</em>?"
|
||||
}
|
||||
},
|
||||
"name": {
|
||||
"label": "Име",
|
||||
"placeholder": "Въведете име…",
|
||||
"errorMessage": {
|
||||
"mustLeastCharacters": "Името на групата камери трябва да е поне 2 символа.",
|
||||
"exists": "Групата камери вече съществува.",
|
||||
"nameMustNotPeriod": "Името на групата камери не трябва да съръжа точка.",
|
||||
"invalid": "Невалидно име за група камери."
|
||||
}
|
||||
},
|
||||
"cameras": {
|
||||
"label": "Камери",
|
||||
"desc": "Изберете камери за тази група."
|
||||
},
|
||||
"icon": "Икона",
|
||||
"success": "Група камери ({{name}}) беше записана.",
|
||||
"camera": {
|
||||
"setting": {
|
||||
"stream": "Поток",
|
||||
"placeholder": "Изберете поток",
|
||||
"streamMethod": {
|
||||
"label": "Метод на стийминг",
|
||||
"placeholder": "Избери метод на стрийминг",
|
||||
"method": {
|
||||
"noStreaming": {
|
||||
"label": "Без стрийминг"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1 +1,22 @@
|
||||
{}
|
||||
{
|
||||
"animal": "Животно",
|
||||
"dog": "Куче",
|
||||
"bark": "Лай",
|
||||
"cat": "Котка",
|
||||
"horse": "Кон",
|
||||
"goat": "Коза",
|
||||
"sheep": "Овца",
|
||||
"bird": "Птица",
|
||||
"mouse": "Мишка",
|
||||
"keyboard": "Клавир",
|
||||
"vehicle": "Превозно средство",
|
||||
"boat": "Лодка",
|
||||
"car": "Кола",
|
||||
"bus": "Автобус",
|
||||
"motorcycle": "Мотоциклет",
|
||||
"train": "Влак",
|
||||
"bicycle": "Велосипед",
|
||||
"skateboard": "Скейтборд",
|
||||
"door": "Врата",
|
||||
"blender": "Блендер"
|
||||
}
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
{}
|
||||
@@ -0,0 +1,258 @@
|
||||
{
|
||||
"time": {
|
||||
"untilForTime": "Indtil{{time}}",
|
||||
"untilForRestart": "Indtil Frigate genstarter.",
|
||||
"untilRestart": "Indtil genstart",
|
||||
"ago": "{{timeAgo}} siden",
|
||||
"justNow": "Lige nu",
|
||||
"today": "I dag",
|
||||
"yesterday": "I går",
|
||||
"last7": "Sidste 7 dage",
|
||||
"last14": "Sidste 14 dage",
|
||||
"last30": "Sidste 30 dage",
|
||||
"thisWeek": "Denne uge",
|
||||
"lastWeek": "Sidste uge",
|
||||
"thisMonth": "Denne måned",
|
||||
"lastMonth": "Sidste måned",
|
||||
"5minutes": "5 minutter",
|
||||
"10minutes": "10 minutter",
|
||||
"30minutes": "30 minutter",
|
||||
"1hour": "1 time",
|
||||
"12hours": "12 timer",
|
||||
"24hours": "24 timer",
|
||||
"pm": "pm",
|
||||
"am": "am",
|
||||
"year_one": "{{time}} år",
|
||||
"year_other": "{{time}} år",
|
||||
"mo": "{{time}}mo",
|
||||
"month_one": "{{time}} måned",
|
||||
"month_other": "{{time}} måneder",
|
||||
"d": "{{time}}d",
|
||||
"day_one": "{{time}} dag",
|
||||
"day_other": "{{time}} dage",
|
||||
"h": "{{time}}h",
|
||||
"yr": "{{time}}yr",
|
||||
"hour_one": "{{time}} time",
|
||||
"hour_other": "{{time}} timer",
|
||||
"m": "{{time}}m",
|
||||
"minute_one": "{{time}} minut",
|
||||
"minute_other": "{{time}} minutter",
|
||||
"s": "{{time}}s",
|
||||
"second_one": "{{time}} sekund",
|
||||
"second_other": "{{time}} sekunder",
|
||||
"formattedTimestamp": {
|
||||
"12hour": "MMM d, h:mm:ss aaa",
|
||||
"24hour": "MMM d, HH:mm:ss"
|
||||
},
|
||||
"formattedTimestamp2": {
|
||||
"12hour": "MM/dd h:mm:ssa",
|
||||
"24hour": "d MMM HH:mm:ss"
|
||||
},
|
||||
"formattedTimestampHourMinute": {
|
||||
"12hour": "h:mm aaa",
|
||||
"24hour": "HH:mm"
|
||||
},
|
||||
"formattedTimestampHourMinuteSecond": {
|
||||
"12hour": "h:mm:ss aaa",
|
||||
"24hour": "HH:mm:ss"
|
||||
},
|
||||
"formattedTimestampMonthDayHourMinute": {
|
||||
"12hour": "MMM d, h:mm aaa",
|
||||
"24hour": "MMM d, HH:mm"
|
||||
},
|
||||
"formattedTimestampMonthDayYear": {
|
||||
"12hour": "MMM d, yyyy",
|
||||
"24hour": "MMM d, yyyy"
|
||||
},
|
||||
"formattedTimestampMonthDayYearHourMinute": {
|
||||
"12hour": "MMM d yyyy, h:mm aaa",
|
||||
"24hour": "MMM d yyyy, HH:mm"
|
||||
},
|
||||
"formattedTimestampMonthDay": "MMM d",
|
||||
"formattedTimestampFilename": {
|
||||
"12hour": "MM-dd-yy-h-mm-ss-a",
|
||||
"24hour": "MM-dd-yy-HH-mm-ss"
|
||||
}
|
||||
},
|
||||
"unit": {
|
||||
"speed": {
|
||||
"mph": "mph",
|
||||
"kph": "km/t"
|
||||
},
|
||||
"length": {
|
||||
"feet": "fod",
|
||||
"meters": "meter"
|
||||
}
|
||||
},
|
||||
"label": {
|
||||
"back": "Gå tilbage"
|
||||
},
|
||||
"button": {
|
||||
"apply": "Anvend",
|
||||
"reset": "Reset",
|
||||
"done": "Udført",
|
||||
"enabled": "Aktiveret",
|
||||
"enable": "Aktiver",
|
||||
"disabled": "Deaktiveret",
|
||||
"disable": "Deaktiver",
|
||||
"save": "Gem",
|
||||
"saving": "Gemmer…",
|
||||
"cancel": "Fortryd",
|
||||
"close": "Luk",
|
||||
"copy": "Kopier",
|
||||
"back": "Tilbage",
|
||||
"history": "Historik",
|
||||
"fullscreen": "Fuldskærm",
|
||||
"exitFullscreen": "Afslut Fludskærm",
|
||||
"pictureInPicture": "Billede i Billede",
|
||||
"twoWayTalk": "2 vejs samtale",
|
||||
"cameraAudio": "Kamera Lyd",
|
||||
"on": "ON",
|
||||
"off": "OFF",
|
||||
"edit": "Rediger",
|
||||
"copyCoordinates": "Kopier koordinater",
|
||||
"delete": "Slet",
|
||||
"yes": "Ja",
|
||||
"no": "Nej",
|
||||
"download": "Download",
|
||||
"info": "Info",
|
||||
"suspended": "Suspenderet",
|
||||
"unsuspended": "Ophæv suspendering",
|
||||
"play": "Afspil",
|
||||
"unselect": "Fravælg",
|
||||
"export": "Eksporter",
|
||||
"deleteNow": "Slet nu",
|
||||
"next": "Næste"
|
||||
},
|
||||
"menu": {
|
||||
"system": "System",
|
||||
"systemMetrics": "System metrics",
|
||||
"configuration": "Konfiguration",
|
||||
"systemLogs": "System logs",
|
||||
"settings": "Indstillinger",
|
||||
"configurationEditor": "Konfiguratons Editor",
|
||||
"languages": "Sprog",
|
||||
"language": {
|
||||
"en": "English (Engelsk)",
|
||||
"es": "Español (Spansk)",
|
||||
"zhCN": "简体中文 (Forsimplet Kinesisk)",
|
||||
"hi": "हिन्दी (Hindi)",
|
||||
"fr": "Français (Fransk)",
|
||||
"ar": "العربية (Arabisk)",
|
||||
"pt": "Português (Portugisisk)",
|
||||
"ru": "Русский (Russisk)",
|
||||
"de": "Deutsch (Tysk)",
|
||||
"ja": "日本語 (Japansk)",
|
||||
"tr": "Türkçe (Tyrkisk)",
|
||||
"it": "Italiano (Italiensk)",
|
||||
"nl": "Nederlands (Hollandsk)",
|
||||
"sv": "Svenska (Svensk)",
|
||||
"cs": "Čeština (Tjekkisk)",
|
||||
"nb": "Norsk Bokmål (Norsk Bokmål)",
|
||||
"ko": "한국어 (Koreansk)",
|
||||
"vi": "Tiếng Việt (Vietnamesisk)",
|
||||
"fa": "فارسی (Persisk)",
|
||||
"pl": "Polski (Polsk)",
|
||||
"uk": "Українська (Ukrainsk)",
|
||||
"he": "עברית (Hebraisk)",
|
||||
"el": "Ελληνικά (Græsk)",
|
||||
"ro": "Română (Rumænsk)",
|
||||
"hu": "Magyar (Ungarsk)",
|
||||
"fi": "Suomi (Finsk)",
|
||||
"da": "Dansk (Dansk)",
|
||||
"sk": "Slovenčina (Slovakisk)",
|
||||
"yue": "粵語 (Kantonesisk)",
|
||||
"th": "ไทย (Thai)",
|
||||
"ca": "Català (Katalansk)",
|
||||
"withSystem": {
|
||||
"label": "Brug system indstillinger for sprog"
|
||||
}
|
||||
},
|
||||
"appearance": "Udseende",
|
||||
"darkMode": {
|
||||
"label": "Mørk tilstand",
|
||||
"light": "Lys",
|
||||
"dark": "Mørk",
|
||||
"withSystem": {
|
||||
"label": "Brug system indstillinger for mørk tilstand"
|
||||
}
|
||||
},
|
||||
"withSystem": "System",
|
||||
"theme": {
|
||||
"label": "Tema",
|
||||
"blue": "Blå",
|
||||
"green": "Grøn",
|
||||
"nord": "Nord",
|
||||
"red": "Rød",
|
||||
"highcontrast": "Høj Kontrast",
|
||||
"default": "Default"
|
||||
},
|
||||
"help": "Hjælp",
|
||||
"documentation": {
|
||||
"title": "Dokumentation",
|
||||
"label": "Frigate dokumentation"
|
||||
},
|
||||
"restart": "Genstart Frigate",
|
||||
"live": {
|
||||
"title": "Live",
|
||||
"allCameras": "Alle kameraer",
|
||||
"cameras": {
|
||||
"title": "Kameraer",
|
||||
"count_one": "{{count}} Kamera",
|
||||
"count_other": "{{count}} Kameraer"
|
||||
}
|
||||
},
|
||||
"review": "Review",
|
||||
"explore": "Udforsk",
|
||||
"export": "Eksporter",
|
||||
"uiPlayground": "UI sandkasse",
|
||||
"faceLibrary": "Face Library",
|
||||
"user": {
|
||||
"title": "Bruger",
|
||||
"account": "Konto",
|
||||
"current": "Aktiv bruger: {{user}}",
|
||||
"anonymous": "anonym",
|
||||
"logout": "Logout",
|
||||
"setPassword": "Set Password"
|
||||
}
|
||||
},
|
||||
"toast": {
|
||||
"copyUrlToClipboard": "Kopieret URL til klippebord.",
|
||||
"save": {
|
||||
"title": "Gem",
|
||||
"error": {
|
||||
"title": "Ændringer kan ikke gemmes: {{errorMessage}}",
|
||||
"noMessage": "Kan ikke gemme konfigurationsændringer"
|
||||
}
|
||||
}
|
||||
},
|
||||
"role": {
|
||||
"title": "Rolle",
|
||||
"admin": "Admin",
|
||||
"viewer": "Viewer",
|
||||
"desc": "Admins har fuld adgang til Frigate UI. Viewers er begrænset til at se kameraer, gennemse items, og historik i UI."
|
||||
},
|
||||
"pagination": {
|
||||
"label": "paginering",
|
||||
"previous": {
|
||||
"title": "Forrige",
|
||||
"label": "Gå til forrige side"
|
||||
},
|
||||
"next": {
|
||||
"title": "Næste",
|
||||
"label": "Gå til næste side"
|
||||
},
|
||||
"more": "Flere sider"
|
||||
},
|
||||
"accessDenied": {
|
||||
"documentTitle": "Adgang forbudt - Frigate",
|
||||
"title": "Adgang forbudt",
|
||||
"desc": "Du har ikke tiiladelse til at se denne side."
|
||||
},
|
||||
"notFound": {
|
||||
"documentTitle": "Ikke fundet - Frigate",
|
||||
"title": "404",
|
||||
"desc": "Side ikke fundet"
|
||||
},
|
||||
"selectItem": "Vælg {{item}}"
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
{}
|
||||
@@ -0,0 +1 @@
|
||||
{}
|
||||
@@ -0,0 +1 @@
|
||||
{}
|
||||
@@ -0,0 +1 @@
|
||||
{}
|
||||
@@ -0,0 +1 @@
|
||||
{}
|
||||
@@ -0,0 +1 @@
|
||||
{}
|
||||
@@ -0,0 +1 @@
|
||||
{}
|
||||
@@ -0,0 +1 @@
|
||||
{}
|
||||
@@ -0,0 +1 @@
|
||||
{}
|
||||
@@ -0,0 +1 @@
|
||||
{}
|
||||
@@ -0,0 +1 @@
|
||||
{}
|
||||
@@ -0,0 +1 @@
|
||||
{}
|
||||
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"selectItem": "Vælg {{item}}"
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
{}
|
||||
@@ -0,0 +1 @@
|
||||
{}
|
||||
@@ -0,0 +1 @@
|
||||
{}
|
||||
@@ -0,0 +1 @@
|
||||
{}
|
||||
@@ -0,0 +1 @@
|
||||
{}
|
||||
@@ -7,7 +7,21 @@
|
||||
"justNow": "Agora mesmo",
|
||||
"today": "Hoje",
|
||||
"yesterday": "Ontem",
|
||||
"last7": "Últimos 7 dias"
|
||||
"last7": "Últimos 7 dias",
|
||||
"last14": "Últimos 14 dias",
|
||||
"last30": "Últimos 30 dias",
|
||||
"thisWeek": "Essa semana",
|
||||
"lastWeek": "Semana passada",
|
||||
"thisMonth": "Este mês",
|
||||
"lastMonth": "Mês passado",
|
||||
"5minutes": "5 minutos",
|
||||
"10minutes": "10 minutos",
|
||||
"30minutes": "30 minutos",
|
||||
"1hour": "1 hora",
|
||||
"12hours": "12 horas",
|
||||
"24hours": "24 horas",
|
||||
"pm": "pm",
|
||||
"am": "am"
|
||||
},
|
||||
"selectItem": "Selecione {{item}}"
|
||||
}
|
||||
|
||||
@@ -12,7 +12,27 @@
|
||||
},
|
||||
"name": {
|
||||
"label": "Nome",
|
||||
"placeholder": "Digite um nome…"
|
||||
"placeholder": "Digite um nome…",
|
||||
"errorMessage": {
|
||||
"mustLeastCharacters": "O nome do grupo de câmeras deve ter pelo menos 2 caracteres.",
|
||||
"exists": "O nome do grupo de câmeras já existe.",
|
||||
"nameMustNotPeriod": "O nome do grupo de câmeras não deve conter ponto.",
|
||||
"invalid": "Nome de grupo de câmeras inválido."
|
||||
}
|
||||
},
|
||||
"cameras": {
|
||||
"label": "Câmeras",
|
||||
"desc": "Selecione as câmeras para este grupo."
|
||||
},
|
||||
"icon": "Ícone",
|
||||
"success": "O grupo de câmeras {{name}} foi salvo.",
|
||||
"camera": {
|
||||
"setting": {
|
||||
"label": "Configurações de Streaming da Câmera",
|
||||
"title": "Configurações de streaming da câmera {{cameraName}}",
|
||||
"audioIsAvailable": "Áudio está disponível para esta transmissão",
|
||||
"audioIsUnavailable": "Áudio indisponível para esta transmissão"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,9 +16,35 @@
|
||||
},
|
||||
"review": {
|
||||
"question": {
|
||||
"label": "Confirmar essa etiqueta para Frigate Plus"
|
||||
"label": "Confirmar essa etiqueta 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}})?"
|
||||
},
|
||||
"state": {
|
||||
"submitted": "Enviado"
|
||||
}
|
||||
}
|
||||
},
|
||||
"video": {
|
||||
"viewInHistory": "Ver no Histórico"
|
||||
}
|
||||
},
|
||||
"export": {
|
||||
"time": {
|
||||
"fromTimeline": "Selecione da Linha do tempo",
|
||||
"lastHour_one": "Última hora",
|
||||
"lastHour_many": "Últimas {{count}} horas",
|
||||
"lastHour_other": "Últimas {{count}} horas",
|
||||
"custom": "Personalizado",
|
||||
"start": {
|
||||
"title": "Hora de Início",
|
||||
"label": "Selecione a Hora de Início"
|
||||
},
|
||||
"end": {
|
||||
"title": "Hora de Término",
|
||||
"label": "Selecione a Hora de Término"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,7 +12,29 @@
|
||||
"zones": {
|
||||
"label": "Zonas",
|
||||
"all": {
|
||||
"title": "Todas as Zonas"
|
||||
"title": "Todas as Zonas",
|
||||
"short": "Zonas"
|
||||
}
|
||||
},
|
||||
"dates": {
|
||||
"selectPreset": "Selecione uma predefinição…",
|
||||
"all": {
|
||||
"title": "Todas as datas",
|
||||
"short": "Datas"
|
||||
}
|
||||
},
|
||||
"more": "Mais filtros",
|
||||
"reset": {
|
||||
"label": "Resetar filtros para valores padrão"
|
||||
},
|
||||
"timeRange": "Intervalo de Tempo",
|
||||
"subLabels": {
|
||||
"label": "Sub-etiquetas",
|
||||
"all": "Todas as Sub-etiquetas"
|
||||
},
|
||||
"score": "Pontuação",
|
||||
"estimatedSpeed": "Velocidade Estimada {{unit}}",
|
||||
"features": {
|
||||
"hasSnapshot": "Tem um snapshot"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,5 +10,31 @@
|
||||
"streamOffline": {
|
||||
"title": "Stream Offiline",
|
||||
"desc": "Nenhum quadro foi recebido na stream {{cameraName}}<code>detect</code>, checar registros de erros"
|
||||
},
|
||||
"cameraDisabled": "A câmera está desativada",
|
||||
"stats": {
|
||||
"streamType": {
|
||||
"title": "Tipo de fluxo:",
|
||||
"short": "Tipo"
|
||||
},
|
||||
"bandwidth": {
|
||||
"title": "Largura de banda:"
|
||||
},
|
||||
"latency": {
|
||||
"title": "Latência:",
|
||||
"value": "{{seconds}} segundos",
|
||||
"short": {
|
||||
"title": "Latência",
|
||||
"value": "{{seconds}} segundos"
|
||||
}
|
||||
},
|
||||
"totalFrames": "Total de Quadros:",
|
||||
"droppedFrames": {
|
||||
"title": "Quadros perdidos:",
|
||||
"short": {
|
||||
"title": "Perdidos",
|
||||
"value": "{{droppedFrames}} quadros"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,7 +7,32 @@
|
||||
"embeddingsReindexing": {
|
||||
"context": "Explorar pode ser usado depois da incorporação do objeto rastreado terminar a reindexação.",
|
||||
"startingUp": "Começando…",
|
||||
"estimatedTime": "Time estimado faltando:"
|
||||
"estimatedTime": "Time estimado faltando:",
|
||||
"finishingShortly": "Terminando em breve",
|
||||
"step": {
|
||||
"thumbnailsEmbedded": "Miniaturas incorporadas: ",
|
||||
"descriptionsEmbedded": "Descrições incorporadas: ",
|
||||
"trackedObjectsProcessed": "Objetos rastreados processados: "
|
||||
}
|
||||
},
|
||||
"downloadingModels": {
|
||||
"context": "Frigate está baixando os modelos de embeddings necessários para oferecer suporte ao recurso de Pesquisa Semântica. Isso pode levar vários minutos, dependendo da velocidade da sua conexão de rede.",
|
||||
"setup": {
|
||||
"textModel": "Modelo de texto",
|
||||
"textTokenizer": "Tokenizador de Texto"
|
||||
},
|
||||
"tips": {
|
||||
"context": "Você pode querer reindexar as incorporações de seus objetos rastreados uma vez que os modelos forem baixados.",
|
||||
"documentation": "Leia a documentação"
|
||||
},
|
||||
"error": "Um erro ocorreu. Verifique os registos do Frigate."
|
||||
}
|
||||
},
|
||||
"details": {
|
||||
"timestamp": "Carimbo de data e hora"
|
||||
},
|
||||
"trackedObjectDetails": "Detalhes do Objeto Rastreado",
|
||||
"type": {
|
||||
"details": "detalhes"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,6 +6,12 @@
|
||||
"deleteExport.desc": "Você tem certeza que quer apagar {{exportName}}?",
|
||||
"editExport": {
|
||||
"title": "Exportar Renomear",
|
||||
"desc": "Entre um novo nome para essa exportação."
|
||||
"desc": "Entre um novo nome para essa exportação.",
|
||||
"saveExport": "Salvar exportação"
|
||||
},
|
||||
"toast": {
|
||||
"error": {
|
||||
"renameExportFailed": "Falha ao renomear exportação: {{errorMessage}}"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,8 +3,10 @@
|
||||
"person": "Pessoa",
|
||||
"unknown": "Desconhecido",
|
||||
"face": "Detalhes do Rosto",
|
||||
"subLabelScore": "Pontuação da Sub Etiqueta",
|
||||
"scoreInfo": "A pontuação da sub etiqueta é a pontuação ponderada de todas as confidências faciais reconhecidas, então a pontuação pode ser diferente da mostrada na foto instantânea."
|
||||
"subLabelScore": "Pontuação do sub-rótulo",
|
||||
"scoreInfo": "A pontuação da sub etiqueta é a pontuação ponderada de todas as confidências faciais reconhecidas, então a pontuação pode ser diferente da mostrada na foto instantânea.",
|
||||
"faceDesc": "Detalhes do objeto rastreado que gerou este rosto",
|
||||
"timestamp": "Carimbo de data e hora"
|
||||
},
|
||||
"selectItem": "Selecione {{item}}",
|
||||
"imageEntry": {
|
||||
@@ -24,7 +26,10 @@
|
||||
"reprocessFace": "Reprocessar Rosto"
|
||||
},
|
||||
"createFaceLibrary": {
|
||||
"new": "Criar Novo Rosto"
|
||||
"new": "Criar Novo Rosto",
|
||||
"title": "Criar Coleção",
|
||||
"desc": "Criar uma nova coleção",
|
||||
"nextSteps": "Para construir uma base forte:<li> Use a aba Teinar para selecionar e treinar em imagens para cada pessoa detectada.</li><li> Foque em imagens retas para melhores resultados; evite treinar imagens que capturam rostos em um ângulo.</li></ul>"
|
||||
},
|
||||
"deleteFaceAttempts": {
|
||||
"title": "Apagar Rostos",
|
||||
@@ -40,11 +45,19 @@
|
||||
"pixels": "{{area}}px",
|
||||
"readTheDocs": "Leia a documentação",
|
||||
"steps": {
|
||||
"nextSteps": "Próximos Passos"
|
||||
"nextSteps": "Próximos Passos",
|
||||
"faceName": "Digite o Nome do Rosto",
|
||||
"uploadFace": "Enviar Imagem de Rosto"
|
||||
},
|
||||
"description": {
|
||||
"placeholder": "Informe um nome para esta coleção",
|
||||
"addFace": "Passo a Passo para adicionar uma nova coleção a Biblioteca Facial.",
|
||||
"invalidName": "Nome inválido. Nomes podem incluir apenas letras, números, espaços, apóstrofos, sublinhados e hífenes."
|
||||
}
|
||||
},
|
||||
"documentTitle": "Biblioteca de rostos - Frigate",
|
||||
"uploadFaceImage": {
|
||||
"title": "Carregar imagem facial",
|
||||
"desc": "Envie uma imagem para escanear por faces e incluir em {{pageToggle}}"
|
||||
},
|
||||
"collections": "Coleções"
|
||||
}
|
||||
|
||||
@@ -9,5 +9,39 @@
|
||||
"cameraAudio": {
|
||||
"enable": "Habilitar Áudio da Câmera",
|
||||
"disable": "Desabilitar Audio da Câmera"
|
||||
},
|
||||
"ptz": {
|
||||
"move": {
|
||||
"clickMove": {
|
||||
"label": "Clique no quadro para centralizar a câmera",
|
||||
"enable": "Ativar clique para mover",
|
||||
"disable": "Desativar clique para mover"
|
||||
},
|
||||
"left": {
|
||||
"label": "Mova a câmera PTZ para a esquerda"
|
||||
},
|
||||
"up": {
|
||||
"label": "Mova a câmera PTZ para cima"
|
||||
},
|
||||
"down": {
|
||||
"label": "Mova a câmera PTZ para baixo"
|
||||
},
|
||||
"right": {
|
||||
"label": "Mova a câmera PTZ para a direita"
|
||||
}
|
||||
},
|
||||
"frame": {
|
||||
"center": {
|
||||
"label": "Clique no quadro para centralizar a câmera PTZ"
|
||||
}
|
||||
},
|
||||
"presets": "Predefinições de câmera PTZ"
|
||||
},
|
||||
"camera": {
|
||||
"enable": "Ativar Câmera",
|
||||
"disable": "Desabilitar Câmera"
|
||||
},
|
||||
"muteCameras": {
|
||||
"enable": "Silenciar Todas as Câmeras"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,6 +6,21 @@
|
||||
"clear": "Limpar procurar",
|
||||
"save": "Salvar pesquisa",
|
||||
"delete": "Apagar procura salva",
|
||||
"filterInformation": "Filtrar informação"
|
||||
"filterInformation": "Filtrar informação",
|
||||
"filterActive": "Filtros ativos"
|
||||
},
|
||||
"trackedObjectId": "ID do objeto rastreado",
|
||||
"filter": {
|
||||
"label": {
|
||||
"cameras": "Câmeras",
|
||||
"labels": "Etiquetas",
|
||||
"zones": "Zonas",
|
||||
"before": "Antes",
|
||||
"after": "Depois",
|
||||
"min_score": "Pontuação Mínima",
|
||||
"max_score": "Pontuação Máxima",
|
||||
"min_speed": "Velocidade Mínima",
|
||||
"max_speed": "Velocidade Máxima"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,6 +6,23 @@
|
||||
"enrichments": "Configurações de Enriquecimento - Frigate",
|
||||
"masksAndZones": "Editor de Máscara e Zona - Frigate",
|
||||
"motionTuner": "Virada de Movimento - Frigate",
|
||||
"object": "Debug - Frigate"
|
||||
"object": "Debug - Frigate",
|
||||
"general": "Configurações Gerais - Frigate",
|
||||
"frigatePlus": "Frigate+ Configurações- Frigate",
|
||||
"notifications": "Configurações de notificação - Frigate"
|
||||
},
|
||||
"menu": {
|
||||
"ui": "UI",
|
||||
"cameras": "Configurações da câmera",
|
||||
"masksAndZones": "Máscaras / Zonas",
|
||||
"users": "Usuários",
|
||||
"notifications": "Notificações",
|
||||
"frigateplus": "Frigate+"
|
||||
},
|
||||
"dialog": {
|
||||
"unsavedChanges": {
|
||||
"title": "Você tem alterações não salvas.",
|
||||
"desc": "Você deseja salvar as alterações antes de continuar?"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,5 +9,33 @@
|
||||
"go2rtc": "Registros GoRTC - Frigate",
|
||||
"nginx": "Registros Nginx - Frigate"
|
||||
}
|
||||
},
|
||||
"title": "Sistema",
|
||||
"metrics": "Métricas do sistema",
|
||||
"logs": {
|
||||
"download": {
|
||||
"label": "Baixar registros"
|
||||
},
|
||||
"copy": {
|
||||
"label": "Copiar para a área de transferência",
|
||||
"success": "Registros copiados para a área de transferência",
|
||||
"error": "Não foi possível copiar os registros para a área de transferência"
|
||||
},
|
||||
"type": {
|
||||
"label": "Tipo",
|
||||
"timestamp": "Marca temporal",
|
||||
"tag": "Etiqueta",
|
||||
"message": "Mensagem"
|
||||
},
|
||||
"tips": "Os Registros estão sendo transmitidos do servidor",
|
||||
"toast": {
|
||||
"error": {
|
||||
"fetchingLogsFailed": "Erro ao buscar registros: {{errorMessage}}",
|
||||
"whileStreamingLogs": "Erro ao transmitir registros: {{errorMessage}}"
|
||||
}
|
||||
}
|
||||
},
|
||||
"general": {
|
||||
"title": "Geral"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,5 +20,12 @@
|
||||
"motorcycle": "Moto",
|
||||
"bus": "Ônibus",
|
||||
"train": "Trem",
|
||||
"boat": "Barco"
|
||||
"boat": "Barco",
|
||||
"bird": "Pássaro",
|
||||
"cat": "Gato",
|
||||
"dog": "Cachorro",
|
||||
"rapping": "Cantando rap",
|
||||
"horse": "Cavalo",
|
||||
"humming": "Cantarolando",
|
||||
"sheep": "Ovelha"
|
||||
}
|
||||
|
||||
@@ -8,7 +8,8 @@
|
||||
"passwordRequired": "Senha necessária",
|
||||
"rateLimit": "Limite de taxa excedido. Tente novamente mais tarde.",
|
||||
"loginFailed": "Falha no Login",
|
||||
"unknownError": "Erro desconhecido. Checar registros."
|
||||
"unknownError": "Erro desconhecido. Checar registros.",
|
||||
"webUnknownError": "Erro desconhecido. Verifique os logs do console."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,5 +6,19 @@
|
||||
"airplane": "Avião",
|
||||
"bus": "Ônibus",
|
||||
"train": "Trem",
|
||||
"boat": "Barco"
|
||||
"boat": "Barco",
|
||||
"traffic_light": "Semáforo",
|
||||
"fire_hydrant": "Hidrante",
|
||||
"street_sign": "Placa de rua",
|
||||
"stop_sign": "Sinal de parada",
|
||||
"parking_meter": "Parquímetro",
|
||||
"bench": "Banco",
|
||||
"bird": "Pássaro",
|
||||
"cat": "Gato",
|
||||
"dog": "Cachorro",
|
||||
"horse": "Cavalo",
|
||||
"sheep": "Ovelha",
|
||||
"cow": "Vaca",
|
||||
"elephant": "Elefante",
|
||||
"bear": "Urso"
|
||||
}
|
||||
|
||||
@@ -10,5 +10,23 @@
|
||||
"alert": "Não existe nenhum alerta para revisar",
|
||||
"detection": "Não há nenhuma detecção para revisar",
|
||||
"motion": "Nenhum dado de movimento encontrado"
|
||||
}
|
||||
},
|
||||
"timeline": "Linha do tempo",
|
||||
"timeline.aria": "Selecione a linha do tempo",
|
||||
"events": {
|
||||
"label": "Eventos",
|
||||
"aria": "Selecione eventos",
|
||||
"noFoundForTimePeriod": "Nenhum evento encontrado neste período."
|
||||
},
|
||||
"recordings": {
|
||||
"documentTitle": "Gravações - Frigate"
|
||||
},
|
||||
"calendarFilter": {
|
||||
"last24Hours": "Últimas 24 horas"
|
||||
},
|
||||
"markTheseItemsAsReviewed": "Marque estes itens como revisados",
|
||||
"newReviewItems": {
|
||||
"button": "Novos Itens para Revisão"
|
||||
},
|
||||
"selected_one": "{{count}} selecionado(s)"
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
"babbling": "Murmur",
|
||||
"yell": "Striga",
|
||||
"bellow": "Sub",
|
||||
"dog": "Caine",
|
||||
"dog": "Câine",
|
||||
"horse": "Cal",
|
||||
"bird": "Pasare",
|
||||
"sheep": "Oaie",
|
||||
@@ -15,8 +15,8 @@
|
||||
"train": "Tren",
|
||||
"skateboard": "Skateboard",
|
||||
"camera": "Camera foto",
|
||||
"bicycle": "Bicicleta",
|
||||
"car": "Masina",
|
||||
"bicycle": "Bicicletă",
|
||||
"car": "Mașină",
|
||||
"cat": "Pisica",
|
||||
"animal": "Animal",
|
||||
"goat": "Capra",
|
||||
@@ -129,7 +129,7 @@
|
||||
"saxophone": "Saxofon",
|
||||
"clarinet": "Clarinet",
|
||||
"harp": "Harpa",
|
||||
"bicycle_bell": "Sonerie de bicicleta",
|
||||
"bicycle_bell": "Sonerie de bicicletă",
|
||||
"tuning_fork": "Diapazon",
|
||||
"harmonica": "Muzicuta",
|
||||
"bagpipes": "Cimpoi",
|
||||
@@ -197,18 +197,18 @@
|
||||
"ship": "Vapor",
|
||||
"motor_vehicle": "Autovehicul",
|
||||
"toot": "claxon",
|
||||
"car_alarm": "Alarma de masina",
|
||||
"car_alarm": "Alarma de mașină",
|
||||
"power_windows": "Geamuri electrice",
|
||||
"skidding": "Derapaj",
|
||||
"tire_squeal": "Scartait de roti",
|
||||
"car_passing_by": "Masina in trecere",
|
||||
"race_car": "Masina de curse",
|
||||
"car_passing_by": "Mașină în trecere",
|
||||
"race_car": "Mașină de curse",
|
||||
"truck": "Camion",
|
||||
"air_horn": "claxon",
|
||||
"ice_cream_truck": "Masina de inghetata",
|
||||
"police_car": "Masina de politie",
|
||||
"ice_cream_truck": "Mașină de înghețată",
|
||||
"police_car": "Mașină de poliție",
|
||||
"ambulance": "Ambulanta",
|
||||
"fire_engine": "Masina de pompieri",
|
||||
"fire_engine": "Mașină de pompieri",
|
||||
"traffic_noise": "Zgomot de trafic",
|
||||
"train_wheels_squealing": "Scartait de roti de tren",
|
||||
"subway": "Metrou",
|
||||
@@ -219,7 +219,7 @@
|
||||
"helicopter": "Elicopter",
|
||||
"fixed-wing_aircraft": "Aeronava cu aripi fixe",
|
||||
"engine": "Motor",
|
||||
"lawn_mower": "Masina de tuns iarba",
|
||||
"lawn_mower": "Mașină de tuns iarba",
|
||||
"chainsaw": "Drujba",
|
||||
"engine_starting": "Pornire motor",
|
||||
"idling": "Relanti",
|
||||
@@ -243,7 +243,7 @@
|
||||
"electric_shaver": "Aparat de ras electric",
|
||||
"shuffling_cards": "Amestecat de carti",
|
||||
"typing": "Scrie",
|
||||
"typewriter": "Masina de scris",
|
||||
"typewriter": "Mașină de scris",
|
||||
"computer_keyboard": "Tastatura",
|
||||
"writing": "Scrie",
|
||||
"alarm": "Alarma",
|
||||
@@ -261,7 +261,7 @@
|
||||
"mechanisms": "Mecanism",
|
||||
"gears": "Rotite",
|
||||
"pulleys": "Scripeti",
|
||||
"sewing_machine": "Masina de cusut",
|
||||
"sewing_machine": "Mașină de cusut",
|
||||
"mechanical_fan": "Ventilator mecanic",
|
||||
"air_conditioning": "Aer Conditionat",
|
||||
"printer": "Imprimanta",
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
{
|
||||
"time": {
|
||||
"untilForTime": "Pana la {{time}}",
|
||||
"untilForTime": "Până la {{time}}",
|
||||
"untilForRestart": "Pana la repornirea Frigate.",
|
||||
"untilRestart": "Pana la repornire",
|
||||
"ago": "{{timeAgo}} in urma",
|
||||
"justNow": "Acum",
|
||||
"today": "Astazi",
|
||||
"today": "Astăzi",
|
||||
"yesterday": "Ieri",
|
||||
"last7": "Ultimele 7 zile",
|
||||
"last14": "Ultimele 14 zile",
|
||||
@@ -13,7 +13,7 @@
|
||||
"thisWeek": "Săptămâna aceasta",
|
||||
"lastWeek": "Săptămâna trecută",
|
||||
"thisMonth": "Luna aceasta",
|
||||
"lastMonth": "Luna trecuta",
|
||||
"lastMonth": "Luna trecută",
|
||||
"5minutes": "5 minute",
|
||||
"10minutes": "10 minute",
|
||||
"formattedTimestampMonthDayYear": {
|
||||
@@ -44,7 +44,7 @@
|
||||
"30minutes": "30 de minute",
|
||||
"1hour": "O oră",
|
||||
"12hours": "12 ore",
|
||||
"24hours": "24 ore",
|
||||
"24hours": "24 de ore",
|
||||
"pm": "PM",
|
||||
"am": "AM",
|
||||
"mo": "{{time}}lună",
|
||||
@@ -85,7 +85,7 @@
|
||||
"title": "Documentație",
|
||||
"label": "Documentație Frigate"
|
||||
},
|
||||
"explore": "Explorează",
|
||||
"explore": "Căutare",
|
||||
"uiPlayground": "UI Playground",
|
||||
"faceLibrary": "Biblioteca de fețe",
|
||||
"export": "Exportă",
|
||||
@@ -137,10 +137,10 @@
|
||||
"user": {
|
||||
"title": "Utilizator",
|
||||
"account": "Cont",
|
||||
"current": "Utilizator curent: {{user}}",
|
||||
"current": "Utilizator actual: {{user}}",
|
||||
"logout": "Deconectare",
|
||||
"anonymous": "anonim",
|
||||
"setPassword": "Setează parola"
|
||||
"setPassword": "Schimă parola"
|
||||
},
|
||||
"live": {
|
||||
"cameras": {
|
||||
@@ -154,22 +154,22 @@
|
||||
},
|
||||
"help": "Ajutor",
|
||||
"system": "Sistem",
|
||||
"systemMetrics": "Metricile sistemului",
|
||||
"systemMetrics": "Metrici de sistem",
|
||||
"configuration": "Configurație",
|
||||
"systemLogs": "Jurnale de sistem",
|
||||
"settings": "Setări",
|
||||
"configurationEditor": "Editor de configurare",
|
||||
"configurationEditor": "Editor de configurație",
|
||||
"languages": "Limba",
|
||||
"appearance": "Aspect",
|
||||
"darkMode": {
|
||||
"label": "Modul întunecat",
|
||||
"light": "Deschis",
|
||||
"label": "Mod luminozitate",
|
||||
"light": "Luminos",
|
||||
"dark": "Întunecat",
|
||||
"withSystem": {
|
||||
"label": "Utilizează setările de sistem pentru modul deschis sau întunecat"
|
||||
"label": "Utilizează setările de sistem pentru modul luminos sau întunecat"
|
||||
}
|
||||
},
|
||||
"withSystem": "Sistem",
|
||||
"withSystem": "Modul sistemului",
|
||||
"restart": "Repornește Frigate",
|
||||
"review": "Revizuire"
|
||||
},
|
||||
@@ -243,12 +243,12 @@
|
||||
"title": "Rol"
|
||||
},
|
||||
"toast": {
|
||||
"copyUrlToClipboard": "URL-ul a fost copiat în clipboard.",
|
||||
"copyUrlToClipboard": "URL-ul a fost copiat.",
|
||||
"save": {
|
||||
"title": "Salvează",
|
||||
"error": {
|
||||
"noMessage": "Nu s-au putut salva modificările de configurare",
|
||||
"title": "Salvarea modificărilor de configurare a eșuat: {{errorMessage}}"
|
||||
"noMessage": "Nu s-au putut salva modificările de configurație",
|
||||
"title": "Salvarea modificărilor de configurație a eșuat: {{errorMessage}}"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@@ -1,35 +1,35 @@
|
||||
{
|
||||
"group": {
|
||||
"label": "Grupuri de Camere",
|
||||
"add": "Adauga Grup de Camere",
|
||||
"edit": "Editeaza Grupul de Camere",
|
||||
"add": "Adaugă un grup de camere",
|
||||
"edit": "Editează grupul de camere",
|
||||
"delete": {
|
||||
"label": "Sterge Grupul de Camere",
|
||||
"label": "Șterge grupul de camere",
|
||||
"confirm": {
|
||||
"title": "Confirma Stergerea",
|
||||
"desc": "Esti sigur ca doresti sa stergi gruoul de camere <em>{{name}}</em>?"
|
||||
"title": "Confirmă ștergerea",
|
||||
"desc": "Ești sigur că dorești să ștergi grupul de camere <em>{{name}}</em>?"
|
||||
}
|
||||
},
|
||||
"name": {
|
||||
"label": "Nume",
|
||||
"placeholder": "Introdu un nume…",
|
||||
"errorMessage": {
|
||||
"mustLeastCharacters": "Numele grupului de cmere trebuie sa sontina minim 2 caractere.",
|
||||
"exists": "Numele grupului de camere exista deja.",
|
||||
"nameMustNotPeriod": "Numele grupului de camere nu trebuia sa contina punct.",
|
||||
"mustLeastCharacters": "Numele grupului de cmere trebuie să conțină minim 2 caractere.",
|
||||
"exists": "Numele grupului de camere există deja.",
|
||||
"nameMustNotPeriod": "Numele grupului de camere nu trebuie să conțină punct.",
|
||||
"invalid": "Nume invalid pentru grupul de camere."
|
||||
}
|
||||
},
|
||||
"cameras": {
|
||||
"label": "Camere",
|
||||
"desc": "Selecteaza camere pentru acest grup."
|
||||
"desc": "Selectează camerele pentru acest grup."
|
||||
},
|
||||
"icon": "Pictograma",
|
||||
"success": "Grupul de camere {{name}}) a fost salvat.",
|
||||
"success": "Grupul de camere ({{name}}) a fost salvat.",
|
||||
"camera": {
|
||||
"setting": {
|
||||
"label": "Setarile de Stream ale Camerei",
|
||||
"title": "{{cameraName}} Setari de Stream",
|
||||
"label": "Setările de streaming ale camerei",
|
||||
"title": "{{cameraName}} Setări de streaming",
|
||||
"stream": "Stream",
|
||||
"placeholder": "Alege un stream",
|
||||
"desc": "Schimbă opțiunile de streaming live pentru panoul acestui grup de camere. <em>Aceste setări sunt specifice dispozitivului/browser-ului.</em>",
|
||||
@@ -71,7 +71,7 @@
|
||||
},
|
||||
"debug": {
|
||||
"options": {
|
||||
"label": "Setari",
|
||||
"label": "Setări",
|
||||
"title": "Optiuni",
|
||||
"showOptions": "Arata Optiuni",
|
||||
"hideOptions": "Ascunde opțiunile"
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
{
|
||||
"restart": {
|
||||
"title": "Esti sigur ca doresti sa repornesti Frigate?",
|
||||
"button": "Reporneste",
|
||||
"title": "Ești sigur că dorești să repornești Frigate?",
|
||||
"button": "Repornește",
|
||||
"restarting": {
|
||||
"title": "Frigate Reporneste",
|
||||
"title": "Frigate repornește",
|
||||
"content": "Aceasta pagina se va reincarca in {{countdown}} secunde.",
|
||||
"button": "Forteaza Reincarcarea Acum"
|
||||
}
|
||||
@@ -44,7 +44,7 @@
|
||||
},
|
||||
"recording": {
|
||||
"button": {
|
||||
"deleteNow": "Sterge Acum",
|
||||
"deleteNow": "Șterge acum",
|
||||
"export": "Exportă",
|
||||
"markAsReviewed": "Marchează ca revizuit"
|
||||
},
|
||||
@@ -62,7 +62,7 @@
|
||||
"export": {
|
||||
"time": {
|
||||
"custom": "personalizat",
|
||||
"fromTimeline": "Selectează din Cronologie",
|
||||
"fromTimeline": "Selectează din cronologie",
|
||||
"lastHour_one": "Ultima oră",
|
||||
"lastHour_few": "Ultimele {{count}} ore",
|
||||
"lastHour_other": "Ultimele {{count}} ore",
|
||||
|
||||
@@ -101,12 +101,12 @@
|
||||
"title": "Se încarcă",
|
||||
"desc": "Când panoul de jurnale este derulat până jos, noile jurnale sunt afișate automat pe măsură ce sunt adăugate."
|
||||
},
|
||||
"disableLogStreaming": "Dezactivează streaming-ul jurnalelor",
|
||||
"disableLogStreaming": "Dezactivează fluxul jurnalelor",
|
||||
"allLogs": "Toate jurnalele"
|
||||
},
|
||||
"trackedObjectDelete": {
|
||||
"title": "Confirmă ștergerea",
|
||||
"desc": "Ștergerea acestor {{objectLength}} obiecte urmărite elimină snapshot-ul, orice încorporări salvate și orice înregistrări asociate ciclului de viață al obiectului. Filmările înregistrate ale acestor obiecte urmărite în vizualizarea Istoric <em>NU</em> vor fi șterse. <br /><br />Sunteți sigur că doriți să continuați?<br /><br />Țineți apăsată tasta <em>Shift</em> pentru a sări peste acest dialog în viitor.",
|
||||
"desc": "Ștergerea acestor {{objectLength}} obiecte urmărite elimină snapshot-ul, orice încorporări salvate și orice înregistrări asociate ciclului de viață al obiectului. Filmările înregistrate ale acestor obiecte urmărite în vizualizarea Istoric <em>NU</em> vor fi șterse. <br /><br />Ești sigur că dorești să continui?<br /><br />Țineți apăsată tasta <em>Shift</em> pentru a sări peste acest dialog în viitor.",
|
||||
"toast": {
|
||||
"success": "Obiectele urmărite au fost șterse cu succes.",
|
||||
"error": "Ștergerea obiectelor urmărite a eșuat: {{errorMessage}}"
|
||||
@@ -118,9 +118,9 @@
|
||||
"recognizedLicensePlates": {
|
||||
"title": "Numere de înmatriculare recunoscute",
|
||||
"noLicensePlatesFound": "Nu s-au găsit plăcuțe de înmatriculare.",
|
||||
"selectPlatesFromList": "Selectați una sau mai multe plăcuțe din listă.",
|
||||
"selectPlatesFromList": "Selectează una sau mai multe plăcuțe din listă.",
|
||||
"loading": "Se încarcă numerele de înmatriculare recunoscute…",
|
||||
"placeholder": "Căutați plăcuțe de înmatriculare…",
|
||||
"placeholder": "Caută plăcuțe de înmatriculare…",
|
||||
"loadFailed": "Nu s-au putut încărca numerele de înmatriculare recunoscute."
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"iconPicker": {
|
||||
"selectIcon": "Selecteaza o pictograma",
|
||||
"selectIcon": "Selectează o pictogramă",
|
||||
"search": {
|
||||
"placeholder": "Cauta o pictograma…"
|
||||
"placeholder": "Caută o pictogramă…"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"noRecordingsFoundForThisTime": "Nu au fost gasite inregistrari in perioada de timp mentionata",
|
||||
"noPreviewFound": "Nu a fost gasita o Previzualizare",
|
||||
"noPreviewFoundFor": "Nu exista Previzualizari pentru {{cameraName}}",
|
||||
"noPreviewFoundFor": "Nu există previzualizari pentru {{cameraName}}",
|
||||
"submitFrigatePlus": {
|
||||
"title": "Trimiteti acest cadru catre Frigate+?",
|
||||
"submit": "Trimite"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"person": "Persoana",
|
||||
"bicycle": "Bicicleta",
|
||||
"car": "Masina",
|
||||
"person": "Persoană",
|
||||
"bicycle": "Bicicletă",
|
||||
"car": "Mașină",
|
||||
"airplane": "Avion",
|
||||
"bus": "Autobuz",
|
||||
"train": "Tren",
|
||||
@@ -13,7 +13,7 @@
|
||||
"bench": "Bancheta",
|
||||
"bird": "Pasare",
|
||||
"cat": "Pisica",
|
||||
"dog": "Caine",
|
||||
"dog": "Câine",
|
||||
"horse": "Cal",
|
||||
"cow": "Vaca",
|
||||
"elephant": "Elefant",
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
{
|
||||
"documentTitle": "Editor Setari - Frigate",
|
||||
"configEditor": "Editor Setari",
|
||||
"copyConfig": "Copiaza Setarile",
|
||||
"saveAndRestart": "Salveaza & Reporneste",
|
||||
"saveOnly": "Doar Salveaza",
|
||||
"documentTitle": "Editor configurație - Frigate",
|
||||
"configEditor": "Editor de configurație",
|
||||
"copyConfig": "Copiază setările",
|
||||
"saveAndRestart": "Salvează și repornește",
|
||||
"saveOnly": "Salvează",
|
||||
"toast": {
|
||||
"success": {
|
||||
"copyToClipboard": "Setari copiate in clipboard."
|
||||
"copyToClipboard": "Setări copiate."
|
||||
},
|
||||
"error": {
|
||||
"savingError": "Eroare la salvarea setarilor"
|
||||
"savingError": "Eroare la salvarea setărilor"
|
||||
}
|
||||
},
|
||||
"confirm": "Ieși fără să salvezi?"
|
||||
|
||||
@@ -1,19 +1,19 @@
|
||||
{
|
||||
"alerts": "Alerte",
|
||||
"motion": {
|
||||
"label": "Miscare",
|
||||
"only": "Doar Miscare"
|
||||
"label": "Mișcare",
|
||||
"only": "Doar mișcare"
|
||||
},
|
||||
"allCameras": "Toate Camerele",
|
||||
"empty": {
|
||||
"alert": "Nu sunt alerte de revizuit",
|
||||
"detection": "Nu sunt detectii de revizuit",
|
||||
"motion": "Nu au fost gasite date despre miscare"
|
||||
"detection": "Nu sunt detecții de revizuit",
|
||||
"motion": "Nu au fost găsite date despre mișcare"
|
||||
},
|
||||
"timeline": "Cronologie",
|
||||
"timeline.aria": "Selecteaza Cronologie",
|
||||
"timeline.aria": "Selectează cronologia",
|
||||
"events": {
|
||||
"aria": "Selecteaza Evenimente",
|
||||
"aria": "Selectează evenimente",
|
||||
"noFoundForTimePeriod": "Niciun eveniment gasit pentru acest interval de timp.",
|
||||
"label": "Evenimente"
|
||||
},
|
||||
@@ -31,7 +31,7 @@
|
||||
"button": "Articole Noi de Revizuit"
|
||||
},
|
||||
"camera": "Camera foto",
|
||||
"detections": "Detectii",
|
||||
"detections": "Detecții",
|
||||
"detected": "detectat",
|
||||
"selected_one": "{{count}} selectate",
|
||||
"selected_other": "{{count}} selectate"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"documentTitle": "Exploreaza - Frigate",
|
||||
"documentTitle": "Căutare - Frigate",
|
||||
"generativeAI": "AI Generativ",
|
||||
"exploreIsUnavailable": {
|
||||
"title": "Explorarea este Indisponibila",
|
||||
@@ -23,7 +23,7 @@
|
||||
"textTokenizer": "Tokenizer text"
|
||||
},
|
||||
"tips": {
|
||||
"context": "S-ar putea să doriți să reindexați încorporările obiectelor urmărite odată ce modelele sunt descărcate.",
|
||||
"context": "S-ar putea să dorești să reindexezi încorporările obiectelor urmărite odată ce modelele sunt descărcate.",
|
||||
"documentation": "Citește documentația"
|
||||
},
|
||||
"error": "A apărut o eroare. Verifică jurnalele Frigate."
|
||||
@@ -74,7 +74,7 @@
|
||||
"millisecondsToOffset": "Millisecondele cu care să compensezi adnotările de detecție. <em>Implicit: 0</em>",
|
||||
"tips": "SFAT: Imaginează-ți că există un clip de eveniment cu o persoană care merge de la stânga la dreapta. Dacă caseta de delimitare de pe linia temporală a evenimentului este constant în partea stângă a persoanei, atunci valoarea ar trebui să fie scăzută. În mod similar, dacă persoana merge de la stânga la dreapta și caseta de delimitare este constant înaintea persoanei, atunci valoarea ar trebui să fie crescută.",
|
||||
"toast": {
|
||||
"success": "Compensarea adnotării pentru {{camera}} a fost salvată în fișierul de configurare. Reporneste Frigate pentru a aplica modificările."
|
||||
"success": "Compensarea adnotării pentru {{camera}} a fost salvată în fișierul de configurație. Repornește Frigate pentru a aplica modificările."
|
||||
}
|
||||
},
|
||||
"title": "Setări adnotare"
|
||||
@@ -155,7 +155,7 @@
|
||||
"regenerateFromSnapshot": "Regenerează din snapshot",
|
||||
"regenerateFromThumbnails": "Regenerează din miniaturi"
|
||||
},
|
||||
"exploreMore": "Explorează mai multe obiecte {{label}}",
|
||||
"exploreMore": "Explorează mai multe obiecte cu {{label}}",
|
||||
"trackedObjectDetails": "Detalii despre obiectul urmărit",
|
||||
"trackedObjectsCount_one": "{{count}} obiect urmărit ",
|
||||
"trackedObjectsCount_few": "{{count}} obiecte urmărite ",
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
{
|
||||
"search": "Cauta",
|
||||
"search": "Caută",
|
||||
"documentTitle": "Export - Frigate",
|
||||
"noExports": "Nu au fost gasite exporturi",
|
||||
"deleteExport": "Sterge Export",
|
||||
"deleteExport.desc": "Esti sigur ca vrei sa stergi {{exportName}}?",
|
||||
"deleteExport": "Șterge exportul",
|
||||
"deleteExport.desc": "Ești sigur că vrei să ștergi {{exportName}}?",
|
||||
"editExport": {
|
||||
"title": "Redenumeste Exportul",
|
||||
"saveExport": "Salveaza Export",
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
{
|
||||
"description": {
|
||||
"addFace": "Parcurge adaugare unei colectii noi la Libraria de Fete.",
|
||||
"addFace": "Parcurge adăugarea unei colecții noi la biblioteca de fețe.",
|
||||
"placeholder": "Introduceti un nume pentru aceasta colectie",
|
||||
"invalidName": "Nume invalid. Numele poate conține doar litere, cifre, spații, apostrofuri, liniuțe de subliniere și cratime."
|
||||
},
|
||||
"details": {
|
||||
"person": "Persoana",
|
||||
"person": "Persoană",
|
||||
"subLabelScore": "Scor subetichetă",
|
||||
"unknown": "Necunoscut",
|
||||
"scoreInfo": "Scorul sub-etichetă este scorul ponderat pentru toate fețele recunoscute, așa că acesta poate diferi de scorul afișat în snapshot.",
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
"lowBandwidthMode": "Mod Latime de Banda Limitata",
|
||||
"twoWayTalk": {
|
||||
"enable": "Activare dialog",
|
||||
"disable": "Dezactivați conversația bidirecțională"
|
||||
"disable": "Dezactivează conversația bidirecțională"
|
||||
},
|
||||
"ptz": {
|
||||
"zoom": {
|
||||
@@ -125,7 +125,7 @@
|
||||
},
|
||||
"playInBackground": {
|
||||
"label": "Redare în fundal",
|
||||
"tips": "Activați această opțiune pentru a continua streaming-ul când player-ul este ascuns."
|
||||
"tips": "Activează această opțiune pentru a continua streaming-ul când player-ul este ascuns."
|
||||
}
|
||||
},
|
||||
"cameraSettings": {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"search": "Cauta",
|
||||
"savedSearches": "Cautari Salvate",
|
||||
"searchFor": "Cauta {{inputValue}}",
|
||||
"search": "Caută",
|
||||
"savedSearches": "Căutări salvate",
|
||||
"searchFor": "Caută {{inputValue}}",
|
||||
"button": {
|
||||
"clear": "Șterge căutarea",
|
||||
"save": "Salvează căutarea",
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"documentTitle": {
|
||||
"authentication": "Setari de Autentificcare - Frigate",
|
||||
"camera": "Setari Camera - Frigate",
|
||||
"default": "Setari - Frigate",
|
||||
"authentication": "Setări de autentificare - Frigate",
|
||||
"camera": "Setări cameră - Frigate",
|
||||
"default": "Setări - Frigate",
|
||||
"classification": "Setări de clasificare - Frigate",
|
||||
"masksAndZones": "Editor Zonă si Mască - Frigate",
|
||||
"notifications": "Setări notificări - Frigate",
|
||||
@@ -92,7 +92,7 @@
|
||||
},
|
||||
"desc": "Dimensiunea modelului utilizat pentru recunoașterea facială.",
|
||||
"small": {
|
||||
"title": "mică",
|
||||
"title": "mic",
|
||||
"desc": "Utilizarea variantei <em>mici</em> folosește un model FaceNet pentru încorporarea fețelor, care rulează eficient pe majoritatea tipurilor de procesoare."
|
||||
},
|
||||
"label": "Dimensiunea modelului"
|
||||
@@ -130,7 +130,7 @@
|
||||
},
|
||||
"licensePlateRecognition": {
|
||||
"desc": "Frigate poate recunoaște numerele de înmatriculare ale vehiculelor și poate adăuga automat caracterele detectate în câmpul recognized_license_plate sau un nume cunoscut ca sub_etichetă pentru obiectele de tip mașină. Un caz de utilizare comun poate fi citirea numerelor de înmatriculare ale mașinilor care intră într-o curte sau ale celor care trec pe stradă.",
|
||||
"title": "Recunoașterea numerelor de înmatriculare",
|
||||
"title": "Recunoaștere numere de înmatriculare",
|
||||
"readTheDocumentation": "Citește documentația"
|
||||
},
|
||||
"title": "Setări îmbogățiri",
|
||||
@@ -141,7 +141,7 @@
|
||||
},
|
||||
"restart_required": "Este necesară repornirea (setările de îmbogățiri au fost modificate)",
|
||||
"toast": {
|
||||
"success": "Setările de îmbogățiri au fost salvate. Reporneste Frigate pentru a aplica modificările.",
|
||||
"success": "Setările de îmbogățiri au fost salvate. Repornește Frigate pentru a aplica modificările.",
|
||||
"error": "Nu s-au putut salva modificările configurației: {{errorMessage}}"
|
||||
}
|
||||
},
|
||||
@@ -172,7 +172,7 @@
|
||||
"zoneObjectAlertsTips": "Toate obiectele {{alertsLabels}} detectate în {{zone}} pe {{cameraName}} vor fi afișate ca alerte.",
|
||||
"objectDetectionsTips": "Toate obiectele {{detectionsLabels}} necategorisite pe {{cameraName}} vor fi afișate ca detecții, indiferent de zona în care se află.",
|
||||
"toast": {
|
||||
"success": "Configurarea clasificării pentru revizuire a fost salvată. Repornește Frigate pentru a aplica modificările."
|
||||
"success": "Configurația clasificării pentru revizuire a fost salvată. Repornește Frigate pentru a aplica modificările."
|
||||
},
|
||||
"selectAlertsZones": "Selectează zone pentru alerte",
|
||||
"noDefinedZones": "Nu sunt definite zone pentru această cameră.",
|
||||
@@ -239,13 +239,13 @@
|
||||
"point_few": "{{count}} puncte",
|
||||
"point_other": "{{count}} de puncte",
|
||||
"clickDrawPolygon": "Fă click pentru a desena un poligon pe imagine.",
|
||||
"label": "Mască de mișcare",
|
||||
"label": "Măști de mișcare",
|
||||
"documentTitle": "Editează masca de mișcare - Frigate",
|
||||
"desc": {
|
||||
"documentation": "Documentație",
|
||||
"title": "Măștile de mișcare sunt folosite pentru a preveni ca anumite tipuri de mișcare nedorită să declanșeze detecția. Mascare excesivă va îngreuna urmărirea obiectelor."
|
||||
},
|
||||
"add": "Mască de mișcare nouă",
|
||||
"add": "Adaugă mască de mișcare",
|
||||
"edit": "Editează masca de mișcare",
|
||||
"context": {
|
||||
"documentation": "Citește documentația",
|
||||
@@ -292,10 +292,10 @@
|
||||
"restart_required": "Repornire necesară (măști/zone modificate)",
|
||||
"toast": {
|
||||
"success": {
|
||||
"copyCoordinates": "Coordonatele pentru {{polyName}} au fost copiate în clipboard."
|
||||
"copyCoordinates": "Coordonatele pentru {{polyName}} au fost copiate."
|
||||
},
|
||||
"error": {
|
||||
"copyCoordinatesFailed": "Nu s-au putut copia coordonatele în clipboard."
|
||||
"copyCoordinatesFailed": "Nu s-au putut copia coordonatele."
|
||||
}
|
||||
},
|
||||
"filter": {
|
||||
@@ -404,7 +404,7 @@
|
||||
"users": {
|
||||
"dialog": {
|
||||
"deleteUser": {
|
||||
"warn": "Ești sigur că vrei să ștergi <strong>{{username}}</strong>?",
|
||||
"warn": "Ești sigur că vrei să ștergi utilizatorul <strong>{{username}}</strong>?",
|
||||
"title": "Șterge utilizatorul",
|
||||
"desc": "Această acțiune nu poate fi anulată. Aceasta va șterge definitiv contul de utilizator și va elimina toate datele asociate."
|
||||
},
|
||||
@@ -463,7 +463,7 @@
|
||||
"cannotBeEmpty": "Parola nu poate fi goală",
|
||||
"doNotMatch": "Parolele nu se potrivesc",
|
||||
"updatePassword": "Actualizează parola pentru {{username}}",
|
||||
"setPassword": "Setează parola",
|
||||
"setPassword": "Schimbă parola",
|
||||
"desc": "Creează o parolă puternică pentru a securiza acest cont."
|
||||
}
|
||||
},
|
||||
@@ -520,7 +520,7 @@
|
||||
},
|
||||
"cameras": {
|
||||
"title": "Camere",
|
||||
"desc": "Selectați camerele pentru care doriți să activați notificările.",
|
||||
"desc": "Selectează camerele pentru care dorești să activezi notificările.",
|
||||
"noCameras": "Nu există camere disponibile"
|
||||
},
|
||||
"deviceSpecific": "Setări specifice dispozitivului",
|
||||
@@ -580,7 +580,7 @@
|
||||
"userModel": "Reglat-fin"
|
||||
},
|
||||
"loadingAvailableModels": "Se încarcă modelele disponibile…",
|
||||
"modelSelect": "Modelele disponibile pe Frigate+ pot fi selectate aici. Rețineți că pot fi selectate doar modelele compatibile cu configurația curentă a detectorului dumneavoastră.",
|
||||
"modelSelect": "Modelele disponibile pe Frigate+ pot fi selectate aici. Rețineți că pot fi selectate doar modelele compatibile cu configurația actuală a detectorului dumneavoastră.",
|
||||
"baseModel": "Model de bază",
|
||||
"loading": "Se încarcă informațiile modelului…",
|
||||
"error": "Încărcarea informațiilor modelului a eșuat",
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
"label": "Copiază informațiile GPU"
|
||||
},
|
||||
"toast": {
|
||||
"success": "Informațiile GPU au fost copiate în clipboard"
|
||||
"success": "Informațiile GPU au fost copiate"
|
||||
},
|
||||
"closeInfo": {
|
||||
"label": "Închide informațiile GPU"
|
||||
@@ -47,14 +47,14 @@
|
||||
"detector": {
|
||||
"temperature": "Temperatura Detectorului",
|
||||
"title": "Detectori",
|
||||
"cpuUsage": "Utilizarea procesorului detectorului",
|
||||
"inferenceSpeed": "Viteza inferenței detectorului",
|
||||
"cpuUsage": "Utilizarea procesorului",
|
||||
"inferenceSpeed": "Viteza de inferență",
|
||||
"memoryUsage": "Utilizare memorie detector"
|
||||
},
|
||||
"otherProcesses": {
|
||||
"title": "Alte Procese",
|
||||
"processCpuUsage": "Utilizare CPU pentru proces",
|
||||
"processMemoryUsage": "Utilizare memorie proces"
|
||||
"processCpuUsage": "Utilizare CPU",
|
||||
"processMemoryUsage": "Utilizare memorie"
|
||||
},
|
||||
"title": "General"
|
||||
},
|
||||
@@ -64,12 +64,12 @@
|
||||
"earliestRecording": "Prima înregistrare disponibilă:",
|
||||
"tips": "Această valoare reprezintă spațiul total de stocare utilizat de înregistrările din baza de date a Frigate. Frigate nu urmărește utilizarea spațiului pentru toate fișierele de pe discul tău."
|
||||
},
|
||||
"title": "Stocare",
|
||||
"title": "Spațiu stocare",
|
||||
"cameraStorage": {
|
||||
"title": "Stocare cameră",
|
||||
"title": "Spațiu tocare camere",
|
||||
"camera": "Camera",
|
||||
"unusedStorageInformation": "Informații despre stocarea neutilizată",
|
||||
"storageUsed": "Stocare",
|
||||
"storageUsed": "Spațiu stocare",
|
||||
"percentageOfTotalUsed": "Procent din total",
|
||||
"unused": {
|
||||
"title": "Nefolosit",
|
||||
@@ -85,9 +85,9 @@
|
||||
"label": "Jurnal Descărcări"
|
||||
},
|
||||
"copy": {
|
||||
"label": "Copiați în Clipboard",
|
||||
"success": "Copiați jurnal în Clipboard",
|
||||
"error": "Nu se poate copia jurnalul în Clipboard"
|
||||
"label": "Copiază",
|
||||
"success": "Copiază jurnalul",
|
||||
"error": "Jurnalul nu s-a putut copia"
|
||||
},
|
||||
"type": {
|
||||
"label": "Tip",
|
||||
@@ -103,14 +103,14 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"metrics": "Date Sistem",
|
||||
"metrics": "Metrici de sistem",
|
||||
"enrichments": {
|
||||
"title": "Îmbogățiri",
|
||||
"embeddings": {
|
||||
"image_embedding": "Încorporare imagine",
|
||||
"image_embedding": "Încorporare imagini",
|
||||
"text_embedding": "Încorporare text",
|
||||
"plate_recognition": "Recunoaștere numere de înmatriculare",
|
||||
"image_embedding_speed": "Viteza încorporării imaginii",
|
||||
"image_embedding_speed": "Viteză încorporarei imaginii",
|
||||
"face_recognition": "Recunoaștere facială",
|
||||
"face_recognition_speed": "Viteză recunoaștere facială",
|
||||
"plate_recognition_speed": "Viteză recunoaștere numere de înmatriculare",
|
||||
@@ -140,8 +140,8 @@
|
||||
"unknown": "Necunoscut"
|
||||
},
|
||||
"label": {
|
||||
"capture": "captură",
|
||||
"skipped": "sărit",
|
||||
"capture": "capturare",
|
||||
"skipped": "sărite",
|
||||
"overallSkippedDetectionsPerSecond": "Detecții totale sărite pe secundă",
|
||||
"cameraCapture": "captură {{camName}}",
|
||||
"cameraDetect": "detectare {{camName}}",
|
||||
@@ -150,9 +150,9 @@
|
||||
"cameraSkippedDetectionsPerSecond": "detecții sărite pe secundă {{camName}}",
|
||||
"overallFramesPerSecond": "Cadre totale pe secundă",
|
||||
"overallDetectionsPerSecond": "Detecții totale pe secundă",
|
||||
"detect": "detectează",
|
||||
"detect": "detectare",
|
||||
"cameraFfmpeg": "{{camName}} FFmpeg",
|
||||
"camera": "cameră",
|
||||
"camera": "camere",
|
||||
"ffmpeg": "FFmpeg"
|
||||
},
|
||||
"title": "Camere",
|
||||
@@ -160,7 +160,7 @@
|
||||
"framesAndDetections": "Cadre / Detecții",
|
||||
"toast": {
|
||||
"success": {
|
||||
"copyToClipboard": "Datele sondei au fost copiate în clipboard."
|
||||
"copyToClipboard": "Datele sondei au fost copiate."
|
||||
},
|
||||
"error": {
|
||||
"unableToProbeCamera": "Sondarea camerei nu a fost posibilă: {{errorMessage}}"
|
||||
|
||||
@@ -45,5 +45,7 @@
|
||||
"cat": "Mačka",
|
||||
"dog": "Pes",
|
||||
"horse": "Kôň",
|
||||
"sheep": "Ovce"
|
||||
"sheep": "Ovce",
|
||||
"camera": "Kamera",
|
||||
"pant": "Oddychávanie"
|
||||
}
|
||||
|
||||
@@ -21,7 +21,25 @@
|
||||
"12hours": "12 hodín",
|
||||
"24hours": "24 hodín",
|
||||
"am": "ráno",
|
||||
"yr": "{{time}}r"
|
||||
"yr": "{{time}}r",
|
||||
"pm": "popoludní",
|
||||
"year_one": "{{time}}rok",
|
||||
"year_few": "{{time}}rokov",
|
||||
"year_other": "{{time}}rokov",
|
||||
"mo": "{{time}}mes",
|
||||
"month_one": "{{time}}mesiac",
|
||||
"month_few": "{{time}} mesiace",
|
||||
"month_other": "{{time}} mesiaca",
|
||||
"d": "{{time}}d",
|
||||
"day_one": "{{time}}deň",
|
||||
"day_few": "{{time}}dni",
|
||||
"day_other": "{{time}}dni",
|
||||
"h": "{{time}}h",
|
||||
"hour_one": "{{time}}hodina",
|
||||
"hour_few": "{{time}}hodiny",
|
||||
"hour_other": "{{time}}hodin",
|
||||
"m": "{{time}} min",
|
||||
"s": "{{time}}s"
|
||||
},
|
||||
"selectItem": "Vyberte {{item}}"
|
||||
}
|
||||
|
||||
@@ -35,7 +35,30 @@
|
||||
"audioIsUnavailable": "Zvuk nie je pre tento stream k dispozícii",
|
||||
"audio": {
|
||||
"tips": {
|
||||
"title": "Zvuk musí byť vyvedený z vašej kamery a nakonfigurovaný v go2rtc pre tento stream."
|
||||
"title": "Zvuk musí byť vyvedený z vašej kamery a nakonfigurovaný v go2rtc pre tento stream.",
|
||||
"document": "Prečítajte si dokumentáciu "
|
||||
}
|
||||
},
|
||||
"stream": "Prúd",
|
||||
"placeholder": "Vyberte prúd",
|
||||
"streamMethod": {
|
||||
"label": "Metóda streamovania",
|
||||
"placeholder": "Vyberte metódu vysielania",
|
||||
"method": {
|
||||
"noStreaming": {
|
||||
"label": "Žiadny stream",
|
||||
"desc": "Snímky z kamery sa budú aktualizovať iba raz za minútu a nebude prebiehať žiadne živé vysielanie."
|
||||
},
|
||||
"smartStreaming": {
|
||||
"label": "Inteligentné streamovanie (odporúčané)",
|
||||
"desc": "Inteligentné streamovanie aktualizuje obraz z kamery raz za minútu, keď sa neprejavuje žiadna detekovateľná aktivita, aby sa šetrila šírka pásma a zdroje. Keď sa zistí aktivita, obraz sa plynule prepne na živý stream."
|
||||
},
|
||||
"continuousStreaming": {
|
||||
"label": "Nepretržité streamovanie",
|
||||
"desc": {
|
||||
"title": "Obraz z kamery bude vždy vysielaný naživo, keď bude viditeľný na palubnej doske, aj keď nebude detekovaná žiadna aktivita."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -47,6 +47,28 @@
|
||||
"placeholder": "Pomenujte Export"
|
||||
},
|
||||
"select": "Vybrat",
|
||||
"export": "Exportovať"
|
||||
"export": "Exportovať",
|
||||
"selectOrExport": "Vybrať pre Export",
|
||||
"toast": {
|
||||
"success": "Export úspešne spustený. Súbor nájdete v adresári /exports.",
|
||||
"error": {
|
||||
"failed": "Chyba spustenia exportu: {{error}}",
|
||||
"endTimeMustAfterStartTime": "Čas konca musí byť po čase začiatku",
|
||||
"noVaildTimeSelected": "Nie je vybrané žiadne platné časové obdobie"
|
||||
}
|
||||
},
|
||||
"fromTimeline": {
|
||||
"saveExport": "Uložiť Export",
|
||||
"previewExport": "Export ukážky"
|
||||
}
|
||||
},
|
||||
"streaming": {
|
||||
"label": "Stream",
|
||||
"restreaming": {
|
||||
"disabled": "Opätovné streamovanie nie je pre túto kameru povolené.",
|
||||
"desc": {
|
||||
"title": "Pre ďalšie možnosti živého náhľadu a zvuku pre túto kameru nastavte go2rtc."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -37,6 +37,23 @@
|
||||
"features": {
|
||||
"label": "Vlastnosti",
|
||||
"hasSnapshot": "Má snímku",
|
||||
"hasVideoClip": "Má videoklip"
|
||||
"hasVideoClip": "Má videoklip",
|
||||
"submittedToFrigatePlus": {
|
||||
"label": "Odoslané do Frigate+",
|
||||
"tips": "Najprv musíte filtrovať sledované objekty, ktoré majú snímku.<br /><br />Sledované objekty bez snímky nie je možné odoslať do Frigate+."
|
||||
}
|
||||
},
|
||||
"sort": {
|
||||
"label": "Zoradiť",
|
||||
"dateAsc": "Dátum (Vzostupne)",
|
||||
"dateDesc": "Dátum (Zostupne)",
|
||||
"scoreAsc": "Skóre objektu (Vzostupne)",
|
||||
"scoreDesc": "Skóre objektu (zostupne)",
|
||||
"speedAsc": "Odhadovaná rýchlosť (vzostupne)",
|
||||
"speedDesc": "Odhadovaná rýchlosť (zostupne)",
|
||||
"relevance": "Relevantnosť"
|
||||
},
|
||||
"cameras": {
|
||||
"label": "Filter kamier"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -37,6 +37,15 @@
|
||||
"value": "{{droppedFrames}} snimku"
|
||||
}
|
||||
},
|
||||
"decodedFrames": "Dekódované snímky:"
|
||||
"decodedFrames": "Dekódované snímky:",
|
||||
"droppedFrameRate": "Frekvencia stratených snímok:"
|
||||
},
|
||||
"toast": {
|
||||
"success": {
|
||||
"submittedFrigatePlus": "Snímok bol úspešne odoslaný službe Frigate+"
|
||||
},
|
||||
"error": {
|
||||
"submitFrigatePlusFailed": "Nepodarilo sa odoslať snímku službe Frigate+"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,5 +20,16 @@
|
||||
"sheep": "Ovce",
|
||||
"cow": "Krava",
|
||||
"elephant": "Slon",
|
||||
"bear": "Medveď"
|
||||
"bear": "Medveď",
|
||||
"zebra": "Zebra",
|
||||
"giraffe": "Žirafa",
|
||||
"hat": "Čiapka",
|
||||
"backpack": "Batoh",
|
||||
"umbrella": "Dáždnik",
|
||||
"shoe": "Topánka",
|
||||
"eye_glasses": "Okuliare",
|
||||
"handbag": "Kabelka",
|
||||
"tie": "Kravata",
|
||||
"suitcase": "Kufor",
|
||||
"frisbee": "Frisbee"
|
||||
}
|
||||
|
||||
@@ -32,5 +32,7 @@
|
||||
"button": "Nové položky na kontrolu"
|
||||
},
|
||||
"selected_one": "{{count}} vybraných",
|
||||
"selected_other": "{{count}} vybraných"
|
||||
"selected_other": "{{count}} vybraných",
|
||||
"camera": "Kamera",
|
||||
"detected": "Detekované"
|
||||
}
|
||||
|
||||
@@ -36,6 +36,18 @@
|
||||
"trackedObjectDetails": "Podrobnosti sledovaného objektu",
|
||||
"type": {
|
||||
"details": "detaily",
|
||||
"snapshot": "snímka"
|
||||
"snapshot": "snímka",
|
||||
"video": "video",
|
||||
"object_lifecycle": "životný cyklus objektu"
|
||||
},
|
||||
"objectLifecycle": {
|
||||
"title": "Životný cyklus Objektu",
|
||||
"noImageFound": "Žiadny obrázok pre túto časovú pečiatku.",
|
||||
"createObjectMask": "Vytvoriť masku objektu",
|
||||
"adjustAnnotationSettings": "Upravte nastavenia anotácií",
|
||||
"scrollViewTips": "Posúvaním zobrazíte významné momenty životného cyklu tohto objektu.",
|
||||
"autoTrackingTips": "Pozície ohraničujúcich rámčekov budú pre kamery s automatickým sledovaním nepresné.",
|
||||
"count": "{{first}} z {{second}}",
|
||||
"trackedPoint": "Sledovaný bod"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -52,5 +52,25 @@
|
||||
"muteCameras": {
|
||||
"enable": "Stlmiť všetky kamery",
|
||||
"disable": "Zapnúť zvuk všetkých kamier"
|
||||
},
|
||||
"detect": {
|
||||
"enable": "Povoliť detekciu",
|
||||
"disable": "Zakázať detekciu"
|
||||
},
|
||||
"recording": {
|
||||
"enable": "Povoliť nahrávanie",
|
||||
"disable": "Zakázať nahrávanie"
|
||||
},
|
||||
"snapshots": {
|
||||
"enable": "Povoliť vytváranie snímok",
|
||||
"disable": "Zakázať snímky"
|
||||
},
|
||||
"audioDetect": {
|
||||
"enable": "Povoliť detekciu zvuku",
|
||||
"disable": "Zakázať detekciu zvuku"
|
||||
},
|
||||
"autotracking": {
|
||||
"enable": "Povoliť automatické sledovanie",
|
||||
"disable": "Zakázať automatické sledovanie"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,7 +24,23 @@
|
||||
"max_score": "Maximálne skóre",
|
||||
"min_speed": "Min rýchlosť",
|
||||
"max_speed": "Max rýchlosť",
|
||||
"recognized_license_plate": "Uznaná poznávacia značka"
|
||||
"recognized_license_plate": "Uznaná poznávacia značka",
|
||||
"has_clip": "Má Klip",
|
||||
"has_snapshot": "Má Snímok"
|
||||
},
|
||||
"searchType": {
|
||||
"thumbnail": "Náhľad",
|
||||
"description": "Popis"
|
||||
},
|
||||
"toast": {
|
||||
"error": {
|
||||
"beforeDateBeLaterAfter": "Dátum 'pred' musí byť neskorší ako dátum 'po'.",
|
||||
"afterDatebeEarlierBefore": "Dátum „po“ musí byť skorší ako dátum „pred“.",
|
||||
"minScoreMustBeLessOrEqualMaxScore": "Hodnota „min_score“ musí byť menšia alebo rovná hodnote „max_score“.",
|
||||
"maxScoreMustBeGreaterOrEqualMinScore": "Hodnota „max_score“ musí byť väčšia alebo rovná hodnote „min_score“.",
|
||||
"minSpeedMustBeLessOrEqualMaxSpeed": "Hodnota „min_speed“ musí byť menšia alebo rovná hodnote „max_speed“.",
|
||||
"maxSpeedMustBeGreaterOrEqualMinSpeed": "Hodnota „max_speed“ musí byť väčšia alebo rovná hodnote „min_speed“."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -29,6 +29,26 @@
|
||||
}
|
||||
},
|
||||
"cameraSetting": {
|
||||
"camera": "Kamera"
|
||||
"camera": "Kamera",
|
||||
"noCamera": "Žiadna Kamera"
|
||||
},
|
||||
"general": {
|
||||
"title": "Hlavné nastavenia",
|
||||
"liveDashboard": {
|
||||
"title": "Živý Dashboard",
|
||||
"automaticLiveView": {
|
||||
"label": "Automatický živý náhľad",
|
||||
"desc": "Pri detekcii aktivity sa automaticky prepne na živý náhľad kamery. Vypnutie tejto možnosti spôsobí, že sa statické snímky z kamery na ovládacom paneli Live aktualizujú iba raz za minútu."
|
||||
},
|
||||
"playAlertVideos": {
|
||||
"label": "Prehrať videá s upozornením",
|
||||
"desc": "Predvolene sa nedávne upozornenia na paneli Živé vysielanie prehrávajú ako krátke cyklické videá. Túto možnosť vypnite, ak chcete zobrazovať iba statický obrázok nedávnych upozornení na tomto zariadení/prehliadači."
|
||||
}
|
||||
},
|
||||
"storedLayouts": {
|
||||
"title": "Uložené rozloženia",
|
||||
"desc": "Rozloženie kamier v skupine kamier je možné presúvať/zmeniť jeho veľkosť. Pozície sú uložené v lokálnom úložisku vášho prehliadača.",
|
||||
"clearAll": "Vymazať všetky rozloženia"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -38,7 +38,23 @@
|
||||
"general": {
|
||||
"title": "Hlavný",
|
||||
"detector": {
|
||||
"title": "Detektory"
|
||||
"title": "Detektory",
|
||||
"inferenceSpeed": "Detekčná rýchlosť",
|
||||
"temperature": "Detekčná teplota",
|
||||
"cpuUsage": "Detektor využitia CPU",
|
||||
"memoryUsage": "Detektor využitia pamäte"
|
||||
},
|
||||
"hardwareInfo": {
|
||||
"title": "Informácie o hardvéri",
|
||||
"gpuUsage": "Využitie GPU",
|
||||
"gpuMemory": "Pamäť GPU",
|
||||
"gpuEncoder": "GPU kódovač",
|
||||
"gpuDecoder": "GPU dekodér",
|
||||
"gpuInfo": {
|
||||
"vainfoOutput": {
|
||||
"title": "Výstup Vainfo"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,3 +1,15 @@
|
||||
{
|
||||
"speech": "Govor"
|
||||
"speech": "Govor",
|
||||
"scream": "Vrisak",
|
||||
"babbling": "Brbljanje",
|
||||
"bicycle": "Bicikla",
|
||||
"yell": "Vikati",
|
||||
"car": "Auto",
|
||||
"bellow": "Ispod",
|
||||
"motorcycle": "Motor",
|
||||
"whoop": "Opa",
|
||||
"whispering": "Šaptanje",
|
||||
"bus": "Autobus",
|
||||
"laughter": "Smeh",
|
||||
"train": "Voz"
|
||||
}
|
||||
|
||||
@@ -1 +1,11 @@
|
||||
{}
|
||||
{
|
||||
"time": {
|
||||
"untilForTime": "Do {{vreme}}{{time}}",
|
||||
"untilForRestart": "Dok se Frigate ponovo ne pokrene.",
|
||||
"untilRestart": "Do ponovnog pokretanja",
|
||||
"ago": "{{timeAgo}} pre",
|
||||
"justNow": "Upravo sada",
|
||||
"today": "Danas",
|
||||
"yesterday": "Juče"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1 +1,13 @@
|
||||
{}
|
||||
{
|
||||
"form": {
|
||||
"user": "Korisničko ime",
|
||||
"password": "Šifra",
|
||||
"login": "Uloguje se",
|
||||
"errors": {
|
||||
"usernameRequired": "Korisničko ime je obavezno",
|
||||
"passwordRequired": "Lozinka je obavezna",
|
||||
"rateLimit": "Prekoračeno ograničenje brzine. Pokušajte ponovo kasnije.",
|
||||
"loginFailed": "Prijava nije uspela"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1 +1,17 @@
|
||||
{}
|
||||
{
|
||||
"group": {
|
||||
"label": "Grupa Kamera",
|
||||
"add": "Dodajte grupu kamera",
|
||||
"edit": "Uredite grupu kamera",
|
||||
"delete": {
|
||||
"label": "Izbrišite grupu kamera",
|
||||
"confirm": {
|
||||
"title": "Potvrdi Brisanje",
|
||||
"desc": "Da li ste sigurni da želite da obrišete grupu kamera <em>{{name}}</em>?"
|
||||
}
|
||||
},
|
||||
"name": {
|
||||
"label": "Ime"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1 +1,19 @@
|
||||
{}
|
||||
{
|
||||
"restart": {
|
||||
"title": "Da li želite da restartujete Frigate?",
|
||||
"button": "Ponovo pokreni",
|
||||
"restarting": {
|
||||
"title": "Frigate se ponovo pokreće",
|
||||
"content": "Ova stranica će se ponovo učitati za {{countdown}} sekundi.",
|
||||
"button": "Prisilno ponovno učitavanje"
|
||||
}
|
||||
},
|
||||
"explore": {
|
||||
"plus": {
|
||||
"submitToPlus": {
|
||||
"label": "Pošalji na Frigate+",
|
||||
"desc": "Objekti na lokacijama koje želite da izbegnete nisu lažno pozitivni. Slanje lažno pozitivnih rezultata će zbuniti model."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1 +1,15 @@
|
||||
{}
|
||||
{
|
||||
"filter": "Filter",
|
||||
"labels": {
|
||||
"label": "Etikete",
|
||||
"all": {
|
||||
"title": "Sve oznake",
|
||||
"short": "Etikete"
|
||||
},
|
||||
"count_one": "{{count}} Etiketa",
|
||||
"count_other": "{{count}} Etikete"
|
||||
},
|
||||
"zones": {
|
||||
"label": "Zone"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1 +1,8 @@
|
||||
{}
|
||||
{
|
||||
"iconPicker": {
|
||||
"selectIcon": "Izaberite ikonu",
|
||||
"search": {
|
||||
"placeholder": "Potražite ikonu…"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1 +1,10 @@
|
||||
{}
|
||||
{
|
||||
"button": {
|
||||
"downloadVideo": {
|
||||
"label": "Sačuvaj Video",
|
||||
"toast": {
|
||||
"success": "Preuzimanje vašeg videa za recenziju je počelo."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1 +1,13 @@
|
||||
{}
|
||||
{
|
||||
"noRecordingsFoundForThisTime": "Nije pronađen ni jedan snimak za ovo vreme",
|
||||
"noPreviewFound": "Pregled nije pronađen",
|
||||
"noPreviewFoundFor": "Nije pronađen pregled za {{cameraName}}",
|
||||
"submitFrigatePlus": {
|
||||
"title": "Pošaljite ovaj okvir na Frigate+?",
|
||||
"submit": "Submit"
|
||||
},
|
||||
"livePlayerRequiredIOSVersion": "Za ovaj tip prenosa uživo potreban je iOS 17.1 ili noviji.",
|
||||
"streamOffline": {
|
||||
"title": "Strim je oflajn"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1 +1,9 @@
|
||||
{}
|
||||
{
|
||||
"person": "Osoba",
|
||||
"bicycle": "Bicikla",
|
||||
"car": "Auto",
|
||||
"motorcycle": "Motor",
|
||||
"airplane": "Avion",
|
||||
"bus": "Autobus",
|
||||
"train": "Voz"
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user