mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-07-23 12:19:04 +03:00
Compare commits
43
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a0a5aad3c2 | ||
|
|
f107aa3cea | ||
|
|
cd7b9b604e | ||
|
|
1bbc8823da | ||
|
|
30de45a6f4 | ||
|
|
f9e5350d5a | ||
|
|
1471491124 | ||
|
|
c1da7128da | ||
|
|
f33468767e | ||
|
|
76fbc103b0 | ||
|
|
972206eb0f | ||
|
|
c3410cd13e | ||
|
|
d18f2282c8 | ||
|
|
23b32cbacf | ||
|
|
92a0dad2c2 | ||
|
|
4f4c8a4fb9 | ||
|
|
898d1de875 | ||
|
|
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
|
||||
```
|
||||
|
||||
:::
|
||||
|
||||
@@ -365,8 +365,8 @@ detectors:
|
||||
|
||||
model:
|
||||
model_type: rfdetr
|
||||
width: 560
|
||||
height: 560
|
||||
width: 320
|
||||
height: 320
|
||||
input_tensor: nchw
|
||||
input_dtype: float
|
||||
path: /config/model_cache/rfdetr.onnx
|
||||
@@ -616,8 +616,8 @@ detectors:
|
||||
|
||||
model:
|
||||
model_type: rfdetr
|
||||
width: 560
|
||||
height: 560
|
||||
width: 320
|
||||
height: 320
|
||||
input_tensor: nchw
|
||||
input_dtype: float
|
||||
path: /config/model_cache/rfdetr.onnx
|
||||
@@ -777,8 +777,8 @@ model:
|
||||
labelmap_path: /labelmap/coco-80.txt
|
||||
input_tensor: nchw
|
||||
input_pixel_format: rgb
|
||||
width: 320
|
||||
height: 320
|
||||
width: 320 # MUST match the chosen model i.e yolov7-320 -> 320, yolov4-416 -> 416
|
||||
height: 320 # MUST match the chosen model i.e yolov7-320 -> 320 yolov4-416 -> 416
|
||||
```
|
||||
|
||||
## Rockchip platform
|
||||
@@ -894,7 +894,6 @@ model: # required
|
||||
width: 320
|
||||
height: 320
|
||||
input_tensor: nhwc
|
||||
input_dtype: float
|
||||
labelmap_path: /labelmap/coco-80.txt
|
||||
```
|
||||
|
||||
@@ -984,22 +983,21 @@ Make sure you change the batch size to 1 before exporting.
|
||||
|
||||
### Download RF-DETR Model
|
||||
|
||||
To export as ONNX:
|
||||
RF-DETR can be exported as ONNX by running the command below. You can copy and paste the whole thing to your terminal and execute, altering `MODEL_SIZE=Nano` in the first line to `Nano`, `Small`, or `Medium` size.
|
||||
|
||||
1. `pip3 install rfdetr`
|
||||
2. `python3`
|
||||
3. `from rfdetr import RFDETRBase`
|
||||
4. `x = RFDETRBase()`
|
||||
5. `x.export()`
|
||||
|
||||
#### Additional Configuration
|
||||
|
||||
The input tensor resolution can be customized:
|
||||
|
||||
```python
|
||||
from rfdetr import RFDETRBase
|
||||
x = RFDETRBase(resolution=560) # resolution must be a multiple of 56
|
||||
x.export()
|
||||
```sh
|
||||
docker build . --build-arg MODEL_SIZE=Nano --output . -f- <<'EOF'
|
||||
FROM python:3.11 AS build
|
||||
RUN apt-get update && apt-get install --no-install-recommends -y libgl1 && rm -rf /var/lib/apt/lists/*
|
||||
COPY --from=ghcr.io/astral-sh/uv:0.8.0 /uv /bin/
|
||||
WORKDIR /rfdetr
|
||||
RUN uv pip install --system rfdetr onnx onnxruntime onnxsim onnx-graphsurgeon
|
||||
ARG MODEL_SIZE
|
||||
RUN python3 -c "from rfdetr import RFDETR${MODEL_SIZE}; x = RFDETR${MODEL_SIZE}(resolution=320); x.export()"
|
||||
FROM scratch
|
||||
ARG MODEL_SIZE
|
||||
COPY --from=build /rfdetr/output/inference_model.onnx /rfdetr-${MODEL_SIZE}.onnx
|
||||
EOF
|
||||
```
|
||||
|
||||
### Downloading YOLO-NAS Model
|
||||
@@ -1033,22 +1031,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.
|
||||
|
||||
@@ -157,18 +166,14 @@ There are improved capabilities in newer GPU architectures that TensorRT can ben
|
||||
Inference speeds will vary greatly depending on the GPU and the model used.
|
||||
`tiny` variants are faster than the equivalent non-tiny model, some known examples are below:
|
||||
|
||||
| Name | YOLOv7 Inference Time | YOLO-NAS Inference Time | RF-DETR Inference Time |
|
||||
| --------------- | --------------------- | ------------------------- | ------------------------- |
|
||||
| GTX 1060 6GB | ~ 7 ms | | |
|
||||
| GTX 1070 | ~ 6 ms | | |
|
||||
| GTX 1660 SUPER | ~ 4 ms | | |
|
||||
| RTX 3050 | 5 - 7 ms | 320: ~ 10 ms 640: ~ 16 ms | 336: ~ 16 ms 560: ~ 40 ms |
|
||||
| RTX 3070 Mobile | ~ 5 ms | | |
|
||||
| RTX 3070 | 4 - 6 ms | 320: ~ 6 ms 640: ~ 12 ms | 336: ~ 14 ms 560: ~ 36 ms |
|
||||
| Quadro P400 2GB | 20 - 25 ms | | |
|
||||
| Quadro P2000 | ~ 12 ms | | |
|
||||
| Name | YOLOv9 Inference Time | YOLO-NAS Inference Time | RF-DETR Inference Time |
|
||||
| --------------- | --------------------- | ------------------------- | ---------------------- |
|
||||
| RTX 3050 | t-320: 15 ms | 320: ~ 10 ms 640: ~ 16 ms | Nano-320: ~ 12 ms |
|
||||
| RTX 3070 | t-320: 11 ms | 320: ~ 8 ms 640: ~ 14 ms | Nano-320: ~ 9 ms |
|
||||
| RTX A4000 | | 320: ~ 15 ms | |
|
||||
| Tesla P40 | | 320: ~ 105 ms | |
|
||||
|
||||
### AMD GPUs
|
||||
### ROCm - AMD GPU
|
||||
|
||||
With the [rocm](../configuration/object_detectors.md#amdrocm-gpu-detector) detector Frigate can take advantage of many discrete AMD GPUs.
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -7,6 +7,7 @@ import multiprocessing as mp
|
||||
import os
|
||||
import signal
|
||||
import threading
|
||||
from json.decoder import JSONDecodeError
|
||||
from types import FrameType
|
||||
from typing import Any, Optional, Union
|
||||
|
||||
@@ -73,13 +74,21 @@ class EmbeddingsContext:
|
||||
self.requestor = EmbeddingsRequestor()
|
||||
|
||||
# load stats from disk
|
||||
stats_file = os.path.join(CONFIG_DIR, ".search_stats.json")
|
||||
try:
|
||||
with open(os.path.join(CONFIG_DIR, ".search_stats.json"), "r") as f:
|
||||
with open(stats_file, "r") as f:
|
||||
data = json.loads(f.read())
|
||||
self.thumb_stats.from_dict(data["thumb_stats"])
|
||||
self.desc_stats.from_dict(data["desc_stats"])
|
||||
except FileNotFoundError:
|
||||
pass
|
||||
except JSONDecodeError:
|
||||
logger.warning("Failed to decode semantic search stats, clearing file")
|
||||
try:
|
||||
with open(stats_file, "w") as f:
|
||||
f.write("")
|
||||
except OSError as e:
|
||||
logger.error(f"Failed to clear corrupted stats file: {e}")
|
||||
|
||||
def stop(self):
|
||||
"""Write the stats to disk as JSON on exit."""
|
||||
|
||||
@@ -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 @@
|
||||
{}
|
||||
@@ -42,7 +42,7 @@
|
||||
"desc": "Automatikusan váltson át a kamera élő nézetére, amikor aktivitást észlel. Ha ez az opció ki van kapcsolva, akkor az Élő irányítópulton a statikus kameraképek csak percenként egyszer frissülnek."
|
||||
},
|
||||
"playAlertVideos": {
|
||||
"label": "Riadó Videók Lejátszása",
|
||||
"label": "Riasztási Videók Lejátszása",
|
||||
"desc": "Alapértelmezetten az Élő irányítópulton a legutóbbi riasztások kis, ismétlődő videóként jelennek meg. Kapcsolja ki ezt az opciót, ha csak állóképet szeretne megjeleníteni a legutóbbi riasztásokról ezen az eszközön/böngészőben."
|
||||
}
|
||||
},
|
||||
|
||||
@@ -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 @@
|
||||
{}
|
||||
@@ -0,0 +1 @@
|
||||
{}
|
||||
@@ -0,0 +1 @@
|
||||
{}
|
||||
@@ -0,0 +1 @@
|
||||
{}
|
||||
@@ -0,0 +1 @@
|
||||
{}
|
||||
@@ -0,0 +1 @@
|
||||
{}
|
||||
@@ -0,0 +1 @@
|
||||
{}
|
||||
@@ -0,0 +1 @@
|
||||
{}
|
||||
@@ -0,0 +1,31 @@
|
||||
{
|
||||
"camera": "Kamera",
|
||||
"speech": "Kalbėjimas",
|
||||
"bicycle": "Dviratis",
|
||||
"car": "Automobilis",
|
||||
"motorcycle": "Motociklas",
|
||||
"bus": "Autobusas",
|
||||
"train": "Traukinys",
|
||||
"boat": "Valtis",
|
||||
"bird": "Paukštis",
|
||||
"cat": "Katė",
|
||||
"dog": "Šuo",
|
||||
"horse": "Arklys",
|
||||
"sheep": "Avis",
|
||||
"babbling": "Burbėjimas",
|
||||
"yell": "Šūksnis",
|
||||
"skateboard": "Riedlentė",
|
||||
"door": "Durys",
|
||||
"mouse": "Pelė",
|
||||
"keyboard": "Klaviatūra",
|
||||
"sink": "Kriauklė",
|
||||
"blender": "Plakiklis",
|
||||
"clock": "Laikrodis",
|
||||
"scissors": "Žirklės",
|
||||
"hair_dryer": "Plaukų Džiovintuvas",
|
||||
"toothbrush": "Dantų šepetėlis",
|
||||
"vehicle": "Mašina",
|
||||
"animal": "Gyvūnas",
|
||||
"bark": "Lojimas",
|
||||
"goat": "Ožka"
|
||||
}
|
||||
@@ -0,0 +1,214 @@
|
||||
{
|
||||
"time": {
|
||||
"untilForTime": "Iki {{time}}",
|
||||
"untilForRestart": "Iki kol Frigate persikraus.",
|
||||
"untilRestart": "Iki perkrovimo",
|
||||
"ago": "prieš {{timeAgo}}",
|
||||
"justNow": "Ką tik",
|
||||
"today": "Šiandien",
|
||||
"yesterday": "Vakar",
|
||||
"last7": "Paskutinės 7 dienos",
|
||||
"last14": "Paskutinės 14 dienų",
|
||||
"last30": "Paskutinės 30 dienų",
|
||||
"thisWeek": "Šią Savaitę",
|
||||
"lastWeek": "Praeitą Savaitę",
|
||||
"thisMonth": "Šį Mėnesį",
|
||||
"lastMonth": "Praeitą Mėnesį",
|
||||
"5minutes": "5 minutės",
|
||||
"10minutes": "10 minučių",
|
||||
"30minutes": "30 minučių",
|
||||
"1hour": "1 valandą",
|
||||
"12hours": "12 valandų",
|
||||
"24hours": "24 valandos",
|
||||
"pm": "pm",
|
||||
"am": "am",
|
||||
"yr": "{{time}}m",
|
||||
"year_one": "{{time}} metai",
|
||||
"year_few": "{{time}} metai",
|
||||
"year_other": "{{time}} metų",
|
||||
"mo": "{{time}}mėn",
|
||||
"month_one": "{{time}} mėnuo",
|
||||
"month_few": "{{time}} mėnesiai",
|
||||
"month_other": "{{time}} mėnesių",
|
||||
"d": "{{time}}d",
|
||||
"day_one": "{{time}} diena",
|
||||
"day_few": "{{time}} dienos",
|
||||
"day_other": "{{time}} dienų",
|
||||
"h": "{{time}}v",
|
||||
"hour_one": "{{time}} valanda",
|
||||
"hour_few": "{{time}} valandos",
|
||||
"hour_other": "{{time}} valandų",
|
||||
"m": "{{time}}min",
|
||||
"minute_one": "{{time}} minutė",
|
||||
"minute_few": "{{time}} minutės",
|
||||
"minute_other": "{{time}} minučių",
|
||||
"s": "{{time}}s",
|
||||
"second_one": "{{time}} sekundė",
|
||||
"second_few": "{{time}} sekundės",
|
||||
"second_other": "{{time}} sekundžių",
|
||||
"formattedTimestamp": {
|
||||
"12hour": ""
|
||||
}
|
||||
},
|
||||
"unit": {
|
||||
"speed": {
|
||||
"kph": "kmh"
|
||||
},
|
||||
"length": {
|
||||
"feet": "pėdos",
|
||||
"meters": "metrai"
|
||||
}
|
||||
},
|
||||
"label": {
|
||||
"back": "Eiti atgal"
|
||||
},
|
||||
"button": {
|
||||
"apply": "Pritaikyti",
|
||||
"reset": "Atstatyti",
|
||||
"done": "Baigta",
|
||||
"enabled": "Įjungta",
|
||||
"enable": "Įjungti",
|
||||
"disabled": "Išjungta",
|
||||
"disable": "Išjungti",
|
||||
"save": "Išsaugoti",
|
||||
"saving": "Saugoma…",
|
||||
"cancel": "Atšaukti",
|
||||
"close": "Užverti",
|
||||
"copy": "Kopijuoti",
|
||||
"back": "Atgal",
|
||||
"history": "Istorija",
|
||||
"fullscreen": "Pilnas Ekranas",
|
||||
"exitFullscreen": "Išeiti iš Pilno Ekrano",
|
||||
"pictureInPicture": "Paveikslėlis Paveiksle",
|
||||
"twoWayTalk": "Dvikryptis Kalbėjimas",
|
||||
"cameraAudio": "Kameros Garsas",
|
||||
"on": "",
|
||||
"edit": "Redaguoti",
|
||||
"copyCoordinates": "Kopijuoti koordinates",
|
||||
"delete": "Ištrinti",
|
||||
"yes": "Taip",
|
||||
"no": "Ne",
|
||||
"download": "Atsisiųsti",
|
||||
"info": "",
|
||||
"suspended": "Pristatbdytas",
|
||||
"unsuspended": "Atnaujinti",
|
||||
"play": "Groti",
|
||||
"unselect": "Atžymėti",
|
||||
"export": "Eksportuoti",
|
||||
"deleteNow": "Trinti Dabar",
|
||||
"next": "Kitas"
|
||||
},
|
||||
"menu": {
|
||||
"system": "Sistema",
|
||||
"systemMetrics": "Sistemos duomenys",
|
||||
"configuration": "Konfiguracija",
|
||||
"systemLogs": "Sistemos įrašai",
|
||||
"settings": "Nustatymai",
|
||||
"configurationEditor": "Konfiguracijos Redaktorius",
|
||||
"languages": "Kalbos",
|
||||
"language": {
|
||||
"en": "Anglų",
|
||||
"es": "Ispanų",
|
||||
"zhCN": "Kinų (supaprastinta)",
|
||||
"fr": "Prancūzų",
|
||||
"ar": "Arabų",
|
||||
"pt": "Portugalų",
|
||||
"ru": "Rusų",
|
||||
"de": "Vokiečių",
|
||||
"ja": "Japonų",
|
||||
"tr": "Turkų",
|
||||
"it": "Italų",
|
||||
"nl": "Olandų",
|
||||
"sv": "Švedų",
|
||||
"cs": "Čekų",
|
||||
"nb": "Norvegų",
|
||||
"vi": "Vietnamiečių",
|
||||
"fa": "Persų",
|
||||
"pl": "Lenkų",
|
||||
"uk": "Ukrainos",
|
||||
"el": "Graikų",
|
||||
"ro": "Romūnijos",
|
||||
"hu": "Vengrų",
|
||||
"fi": "Suomių",
|
||||
"da": "Danų",
|
||||
"sk": "Slovėnų",
|
||||
"withSystem": {
|
||||
"label": "Kalbai naudoti sistemos nustatymus"
|
||||
}
|
||||
},
|
||||
"appearance": "Išvaizda",
|
||||
"darkMode": {
|
||||
"label": "Tamsusis Rėžimas",
|
||||
"light": "Šviesus",
|
||||
"dark": "Tamsus",
|
||||
"withSystem": {
|
||||
"label": "Šviesiam ar tamsiam rėžimui naudoti sistemos nustatymus"
|
||||
}
|
||||
},
|
||||
"withSystem": "Sistema",
|
||||
"theme": {
|
||||
"label": "Tema",
|
||||
"blue": "Mėlyna",
|
||||
"green": "Žalia",
|
||||
"nord": "Šiaurietiška",
|
||||
"red": "Raudona",
|
||||
"highcontrast": "Didelio Kontrasto",
|
||||
"default": "Numatyta"
|
||||
},
|
||||
"help": "Pagalba",
|
||||
"documentation": {
|
||||
"title": "Dokumentacija",
|
||||
"label": "Frigate dokumentacija"
|
||||
},
|
||||
"restart": "Perkrauti Frigate",
|
||||
"live": {
|
||||
"title": "Tiesiogiai",
|
||||
"allCameras": "Visos Kameros",
|
||||
"cameras": {
|
||||
"title": "Kameros",
|
||||
"count_one": "{{count}} Kamera",
|
||||
"count_few": "{{count}} Kameros",
|
||||
"count_other": "{{count}} Kamerų"
|
||||
}
|
||||
},
|
||||
"review": "Peržiūros",
|
||||
"explore": "Iškoti",
|
||||
"export": "Eksportuoti",
|
||||
"faceLibrary": "Veidų Biblioteka",
|
||||
"user": {
|
||||
"title": "Vartotojas",
|
||||
"account": "Paskyra",
|
||||
"current": "Esamas vartotojas: {{user}}",
|
||||
"anonymous": "neidentifikuotas",
|
||||
"logout": "atsijungti",
|
||||
"setPassword": "Nustatyti Slaptažodi"
|
||||
}
|
||||
},
|
||||
"toast": {
|
||||
"copyUrlToClipboard": "URL nukopijuotas į atmintį.",
|
||||
"save": {
|
||||
"title": "Išsaugoti",
|
||||
"error": {
|
||||
"title": "Nepavyko išsaugoti konfiguracijos pakeitimų: {{errorMessage}}",
|
||||
"noMessage": "Nepavyko išsaugoti konfiguracijos pakeitimų"
|
||||
}
|
||||
}
|
||||
},
|
||||
"role": {
|
||||
"title": "Rolė",
|
||||
"admin": "Adminas",
|
||||
"viewer": "Žiūrėtojas",
|
||||
"desc": "Adminai turi pilną prieigą prie visų Frigate vartotojo sąsajos fukncijų. Žiūrėtojai yra apriboti peržiūrėti kameras, peržiūrų įrašus ir istorinius įrašus."
|
||||
},
|
||||
"pagination": {
|
||||
"label": "puslapiavimas",
|
||||
"previous": {
|
||||
"title": "Ankstesnis",
|
||||
"label": "Eiti į ankstesnį puslapį"
|
||||
},
|
||||
"next": {
|
||||
"title": "Sekantis",
|
||||
"label": "Eiti į sekantį puslapį"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"form": {
|
||||
"user": "Vartotojo vardas",
|
||||
"password": "Slaptažodis",
|
||||
"login": "Prisijungti",
|
||||
"errors": {
|
||||
"usernameRequired": "Vartotojo vardas yra privalomas",
|
||||
"passwordRequired": "Slaptažodis yra privalomas",
|
||||
"rateLimit": "Viršytos nustatytos ribos. Pabandykite vėliau.",
|
||||
"loginFailed": "Prisijungti nepavyko",
|
||||
"unknownError": "Nežinoma klaida. Patikrinkite įrašus.",
|
||||
"webUnknownError": "Nežinoma klaida. Patikrinkite konsolės įrašus."
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"group": {
|
||||
"label": "Kamerų Grupės",
|
||||
"add": "Sukurti Kamerų Grupę",
|
||||
"edit": "Modifikuoti Kamerų Grupę"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"restart": {
|
||||
"title": "Ar įsitikinę kad norite perkrauti Frigate?",
|
||||
"button": "Perkrauti",
|
||||
"restarting": {
|
||||
"title": "Frigate Persikrauna"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"filter": "Filtras",
|
||||
"labels": {
|
||||
"label": "Etiketės",
|
||||
"all": {
|
||||
"title": "Visos Etiketės"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"iconPicker": {
|
||||
"selectIcon": "Pasirinkti ikoną",
|
||||
"search": {
|
||||
"placeholder": "Surasti ikoną…"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"button": {
|
||||
"downloadVideo": {
|
||||
"label": "Parsisiųsti Video",
|
||||
"toast": {
|
||||
"success": "Jūsų peržiūros elemento parsisiuntimas pradėtas."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"noRecordingsFoundForThisTime": "Šiam laiko tarpui įrašų nerasta",
|
||||
"noPreviewFound": "Peržiūrų nerasta",
|
||||
"noPreviewFoundFor": "Peržiūrų nerasta {{cameraName}}",
|
||||
"submitFrigatePlus": {
|
||||
"title": "Pateikti šį kadrą į Frigate+?",
|
||||
"submit": "Pateikti"
|
||||
},
|
||||
"livePlayerRequiredIOSVersion": "iOS 17.1 ar naujesni yra privalomi šiam tiesioginės transliacijos tipui.",
|
||||
"streamOffline": {
|
||||
"title": "Transliacija nepasiekiama",
|
||||
"desc": "Jokių transliacijos kadrų negauta iš {{cameraName}}<code>detect</code>, patikrinkite klaidų sąrašus"
|
||||
},
|
||||
"cameraDisabled": "Kamera yra išjungta",
|
||||
"stats": {
|
||||
"streamType": {
|
||||
"title": "Transliacijos Tipas:",
|
||||
"short": "Tipas"
|
||||
},
|
||||
"bandwidth": {
|
||||
"title": "Pralaidumas:",
|
||||
"short": "Pralaidumas"
|
||||
},
|
||||
"latency": {
|
||||
"title": "Vėlavimas:",
|
||||
"value": "{{seconds}} sekundžių",
|
||||
"short": {
|
||||
"title": "Vėlavimas",
|
||||
"value": "{{seconds}} sek"
|
||||
}
|
||||
},
|
||||
"totalFrames": "Iš viso Kadrų:",
|
||||
"droppedFrames": {
|
||||
"title": "Pamestų Kadrų:",
|
||||
"short": {
|
||||
"title": "Pamesti",
|
||||
"value": "{{droppedFrames}} kadrai"
|
||||
}
|
||||
},
|
||||
"decodedFrames": "Dekoduoti Kadrai:",
|
||||
"droppedFrameRate": "Pamestų Kadrų Dažnis:"
|
||||
},
|
||||
"toast": {
|
||||
"success": {
|
||||
"submittedFrigatePlus": "Kadras sėkmingai pateiktas į Frigate+"
|
||||
},
|
||||
"error": {
|
||||
"submitFrigatePlusFailed": "Nepavyko pateikti kadro į Frigate+"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,118 @@
|
||||
{
|
||||
"person": "Žmogus",
|
||||
"bicycle": "Dviratis",
|
||||
"car": "Automobilis",
|
||||
"motorcycle": "Motociklas",
|
||||
"airplane": "Lėktuvas",
|
||||
"bus": "Autobusas",
|
||||
"train": "Traukinys",
|
||||
"boat": "Valtis",
|
||||
"traffic_light": "Šviesoforas",
|
||||
"fire_hydrant": "Hidrantas",
|
||||
"street_sign": "Kelio ženklas",
|
||||
"stop_sign": "Stop ženklas",
|
||||
"parking_meter": "Stovėjimo automatas",
|
||||
"bench": "Suoliukas",
|
||||
"bird": "Paukštis",
|
||||
"cat": "Katė",
|
||||
"dog": "Šuo",
|
||||
"horse": "Arklys",
|
||||
"sheep": "Avis",
|
||||
"cow": "Karvė",
|
||||
"elephant": "Dramblys",
|
||||
"bear": "Lokys",
|
||||
"zebra": "Zebras",
|
||||
"giraffe": "Žirafa",
|
||||
"hat": "Kepurė",
|
||||
"backpack": "Kuprinė",
|
||||
"umbrella": "Skėtis",
|
||||
"shoe": "Batas",
|
||||
"eye_glasses": "Akiniai",
|
||||
"handbag": "Rankinė",
|
||||
"tie": "Kaklaraštis",
|
||||
"suitcase": "Lagaminas",
|
||||
"frisbee": "Skraidanti lėkštė",
|
||||
"snowboard": "Snieglentė",
|
||||
"skis": "Slidės",
|
||||
"sports_ball": "Sporto Kamuolys",
|
||||
"kite": "Aitvaras",
|
||||
"baseball_bat": "Beisbolo lazda",
|
||||
"baseball_glove": "Beisbolo Pirštinė",
|
||||
"skateboard": "Riedlentė",
|
||||
"surfboard": "Banglentė",
|
||||
"tennis_racket": "Teniso Raketė",
|
||||
"bottle": "Butelis",
|
||||
"plate": "Lėkštė",
|
||||
"wine_glass": "Vyno Taurė",
|
||||
"cup": "Puodelis",
|
||||
"fork": "Šakutė",
|
||||
"knife": "Peilis",
|
||||
"spoon": "Šaukštas",
|
||||
"bowl": "Dubuo",
|
||||
"banana": "Bananas",
|
||||
"apple": "Obuolys",
|
||||
"sandwich": "Sumuštinis",
|
||||
"orange": "Apelsinas",
|
||||
"broccoli": "Brokolis",
|
||||
"carrot": "Morka",
|
||||
"hot_dog": "Hot Dog",
|
||||
"pizza": "Pica",
|
||||
"donut": "Spurga",
|
||||
"cake": "Tortas",
|
||||
"chair": "Kėdė",
|
||||
"couch": "Sofa",
|
||||
"potted_plant": "Pasodintas Augalas",
|
||||
"bed": "Lova",
|
||||
"mirror": "Veidrodis",
|
||||
"dining_table": "Valgomasis Stalas",
|
||||
"window": "Langas",
|
||||
"desk": "Stalas",
|
||||
"toilet": "Tualetas",
|
||||
"door": "Durys",
|
||||
"tv": "TV",
|
||||
"laptop": "Nešiojamasis Kompiuteris",
|
||||
"mouse": "Pelė",
|
||||
"remote": "Nuotolinis valdymo pultas",
|
||||
"keyboard": "Klaviatūra",
|
||||
"cell_phone": "Mobilus Telefonas",
|
||||
"microwave": "Mikrobangų krosnelė",
|
||||
"oven": "Orkaitė",
|
||||
"toaster": "Skrudintuvas",
|
||||
"sink": "Kriauklė",
|
||||
"refrigerator": "Šaldiklis",
|
||||
"blender": "Plakiklis",
|
||||
"book": "Knyga",
|
||||
"clock": "Laikrodis",
|
||||
"vase": "Vaza",
|
||||
"scissors": "Žirklės",
|
||||
"teddy_bear": "Pliušinis Meškiukas",
|
||||
"hair_dryer": "Plaukų Džiovintuvas",
|
||||
"toothbrush": "Dantų šepetėlis",
|
||||
"hair_brush": "Plaukų šepetys",
|
||||
"vehicle": "Mašina",
|
||||
"squirrel": "Voverė",
|
||||
"deer": "Elnias",
|
||||
"animal": "Gyvūnas",
|
||||
"bark": "Lojimas",
|
||||
"fox": "Lapė",
|
||||
"goat": "Ožka",
|
||||
"rabbit": "Triušis",
|
||||
"raccoon": "Meškėnas",
|
||||
"robot_lawnmower": "Robotas Vejapjovė",
|
||||
"waste_bin": "Šiukšliadėžė",
|
||||
"on_demand": "Pagal Poreikį",
|
||||
"face": "Veidas",
|
||||
"license_plate": "Registracijos Numeris",
|
||||
"package": "Pakuotė",
|
||||
"bbq_grill": "BBQ kepsninė",
|
||||
"amazon": "",
|
||||
"usps": "",
|
||||
"ups": "",
|
||||
"fedex": "",
|
||||
"dhl": "",
|
||||
"an_post": "",
|
||||
"purolator": "",
|
||||
"postnl": "",
|
||||
"nzpost": "",
|
||||
"postnord": ""
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"documentTitle": "Konfiguracijos redaktorius - Frigate",
|
||||
"configEditor": "Konfiguracijos Redaktorius",
|
||||
"copyConfig": "Kopijuoti Konfiguraciją",
|
||||
"saveAndRestart": "Išsaugoti ir Perkrauti",
|
||||
"saveOnly": "Tik Išsaugoti",
|
||||
"confirm": "Išeiti neišsaugant?",
|
||||
"toast": {
|
||||
"success": {
|
||||
"copyToClipboard": "Konfiguracija nukopijuota į atmintį."
|
||||
},
|
||||
"error": {
|
||||
"savingError": "Klaida išsaugant konfiguraciją"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
{
|
||||
"motion": {
|
||||
"label": "Judesys",
|
||||
"only": "Tik judesys"
|
||||
},
|
||||
"allCameras": "Visos kameros",
|
||||
"timeline": "Laiko juosta",
|
||||
"timeline.aria": "Pasirink laiko juostą",
|
||||
"events": {
|
||||
"label": "Įvykiai",
|
||||
"aria": "Pasirinkti įvykius",
|
||||
"noFoundForTimePeriod": "Šiam laiko periodui įvykių nėrasta."
|
||||
},
|
||||
"calendarFilter": {
|
||||
"last24Hours": "Paskutinė para"
|
||||
},
|
||||
"selected_one": "{{count}} pasirinktas",
|
||||
"selected_other": "{{count}} pasirinkta",
|
||||
"camera": "Kamera",
|
||||
"alerts": "Įspėjimai",
|
||||
"detections": "Aptikimai",
|
||||
"empty": {
|
||||
"alert": "Nėra pranešimų peržiūrai",
|
||||
"detection": "Nėra aptikimų peržiūrai",
|
||||
"motion": "Duomenų apie judesius nėra"
|
||||
},
|
||||
"documentTitle": "Peržiūros - Frigate",
|
||||
"recordings": {
|
||||
"documentTitle": "Įrašai - Frigate"
|
||||
},
|
||||
"markAsReviewed": "Pažymėti kaip peržiūrėtą",
|
||||
"markTheseItemsAsReviewed": "Pažymėti šiuos įrašus kaip peržiūrėtus",
|
||||
"newReviewItems": {
|
||||
"label": "Pamatyti naujus peržiūros įrašus",
|
||||
"button": "Nauji Įrašai Peržiūrėjimui"
|
||||
},
|
||||
"detected": "aptikta"
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"documentTitle": "Tyrinėti - Frigate",
|
||||
"generativeAI": "Generatyvinis DI",
|
||||
"exploreMore": "Apžvelgti daugiau {{label}} objektų"
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"search": "Paieška",
|
||||
"documentTitle": "Eksportuoti - Frigate",
|
||||
"noExports": "Eksportuotų įrašų nerasta",
|
||||
"deleteExport": "Ištrinti Eksportuotą Įrašą",
|
||||
"deleteExport.desc": "Esate įsitikine, kad norite ištrinti {{exportName}}?",
|
||||
"editExport": {
|
||||
"title": "Pervadinti Eksportuojamą įrašą",
|
||||
"desc": "Įveskite nauja pavadinimą šiam eksportuojamam įrašui.",
|
||||
"saveExport": "Išsaugoti Eksportuojamą Įrašą"
|
||||
},
|
||||
"toast": {
|
||||
"error": {
|
||||
"renameExportFailed": "Nepavyko pervadinti eksportuojamo įrašo: {{errorMessage}}"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"description": {
|
||||
"addFace": "Apžiūrėkite naujų kolekcijų pridėjimą prie Veidų Bibliotekos.",
|
||||
"placeholder": "Įveskite pavadinimą šiai kolekcijai",
|
||||
"invalidName": "Netinkamas vardas. Vardai gali turėti tik raides, numerius, tarpus, apostrofus, pabraukimus ir brukšnelius."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"documentTitle": "Gyvai - Frigate",
|
||||
"documentTitle.withCamera": "{{camera}} - Tiesiogiai - Frigate",
|
||||
"lowBandwidthMode": "Mažo-pralaidumo Rėžimas"
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"filter": "Filtras",
|
||||
"export": "Eksportuoti",
|
||||
"calendar": "Kalendorius",
|
||||
"filters": "Filtrai",
|
||||
"toast": {
|
||||
"error": {
|
||||
"noValidTimeSelected": "Pasriniktas laiko periodas netinkamas",
|
||||
"endTimeMustAfterStartTime": "Pabaigos laikas privalo būti vėlesnis nei pradžios laikas"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"search": "Paieška",
|
||||
"savedSearches": "Išsaugotos Paieškos"
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"documentTitle": {
|
||||
"default": "Nustatymai - Frigate",
|
||||
"authentication": "Autentifikavimo Nustatymai - Frigate"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"documentTitle": {
|
||||
"cameras": "Kamerų Statistika - Frigate",
|
||||
"storage": "Saugyklos Statistika - Frigate"
|
||||
}
|
||||
}
|
||||
@@ -178,7 +178,8 @@
|
||||
"ro": "Română (Rumuński)",
|
||||
"fi": "Suomi (Fiński)",
|
||||
"yue": "粵語 (Kantoński)",
|
||||
"th": "ไทย (Tajski)"
|
||||
"th": "ไทย (Tajski)",
|
||||
"ca": "Català (Kataloński)"
|
||||
},
|
||||
"appearance": "Wygląd",
|
||||
"darkMode": {
|
||||
|
||||
@@ -7,7 +7,57 @@
|
||||
"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",
|
||||
"yr": "{{time}}ano",
|
||||
"year_one": "{{time}} ano",
|
||||
"year_many": "{{time}} anos",
|
||||
"year_other": "",
|
||||
"mo": "{{time}}mês",
|
||||
"month_one": "{{time}} mês",
|
||||
"month_many": "{{time}} meses",
|
||||
"month_other": "",
|
||||
"d": "{{time}} dia",
|
||||
"day_one": "{{time}} dia",
|
||||
"day_many": "{{time}} dias",
|
||||
"day_other": "",
|
||||
"h": "{{time}}h",
|
||||
"hour_one": "{{time}} hora",
|
||||
"hour_many": "{{time}} horas",
|
||||
"hour_other": "",
|
||||
"m": "{{time}}m",
|
||||
"minute_one": "{{time}} minuto",
|
||||
"minute_many": "{{time}} minutos",
|
||||
"minute_other": "",
|
||||
"s": "{{time}}s",
|
||||
"second_one": "{{time}} segundo",
|
||||
"second_many": "{{time}} segundos",
|
||||
"second_other": "",
|
||||
"formattedTimestamp": {
|
||||
"12hour": "d MMM,h:mm:ss aaa",
|
||||
"24hour": "d MMM, HH:mm:ss"
|
||||
},
|
||||
"formattedTimestamp2": {
|
||||
"12hour": "dd/MM h:mm:ssa",
|
||||
"24hour": "d MMM HH:mm:ss"
|
||||
},
|
||||
"formattedTimestampHourMinute": {
|
||||
"12hour": "h:mm aaa",
|
||||
"24hour": "HH:mm"
|
||||
}
|
||||
},
|
||||
"selectItem": "Selecione {{item}}"
|
||||
}
|
||||
|
||||
@@ -12,7 +12,73 @@
|
||||
},
|
||||
"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",
|
||||
"desc": "Alterar as opções de transmissão ao vivo para o painel desse grupo de câmera. <em>Esses ajustes são específicos para esse dispositivo/navegador.</em>",
|
||||
"audio": {
|
||||
"tips": {
|
||||
"title": "O audio deve ter a sua saída da câmera e configurado em go2rtc para essa transmissão.",
|
||||
"document": "Leia a documentação "
|
||||
}
|
||||
},
|
||||
"stream": "Transmissão",
|
||||
"placeholder": "Selecionar transmissão ao vivo",
|
||||
"streamMethod": {
|
||||
"label": "Método de Transmissão",
|
||||
"placeholder": "Selecione um método de transmissão",
|
||||
"method": {
|
||||
"noStreaming": {
|
||||
"label": "Sem Transmissão",
|
||||
"desc": "Imagens da câmera atualizarão apenas uma vez por minuto e não haverá transmissão ao vivo."
|
||||
},
|
||||
"smartStreaming": {
|
||||
"label": "Transmissão Inteligente (recomendado)",
|
||||
"desc": "O streaming inteligente atualizará a imagem da câmera uma vez por minuto quando não houver atividade detectável para economizar largura de banda e recursos. Quando alguma atividade for detectada, a imagem automáticamente mudará para a transmissão ao vivo."
|
||||
},
|
||||
"continuousStreaming": {
|
||||
"label": "Transmissão Contínua",
|
||||
"desc": {
|
||||
"title": "A imagem da câmera será sempre uma transmissão ao vivo quando visível no painel, mesmo que não haja atividade sendo detectada.",
|
||||
"warning": "A transmissão contínua pode causar alta utilização de banda e problemas de performance. Use com cuidado."
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"compatibilityMode": {
|
||||
"label": "Modo de compatibilidade",
|
||||
"desc": "Habilite essa opção somente se a transmissão ao vivo da sua câmera estiver exibindo artefatos de cor e possui uma linha diagonal no canto esquerdo da imagem."
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"debug": {
|
||||
"options": {
|
||||
"label": "Configurações",
|
||||
"title": "Opções",
|
||||
"showOptions": "Exibir Opções",
|
||||
"hideOptions": "Ocultar Opções"
|
||||
},
|
||||
"zones": "Zonas",
|
||||
"mask": "Máscara",
|
||||
"motion": "Movimento",
|
||||
"regions": "Regiões"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,9 +16,95 @@
|
||||
},
|
||||
"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"
|
||||
}
|
||||
},
|
||||
"name": {
|
||||
"placeholder": "Nomeie a Exportação"
|
||||
},
|
||||
"select": "Selecionar",
|
||||
"export": "Exportar",
|
||||
"selectOrExport": "Selecionar ou Exportar",
|
||||
"toast": {
|
||||
"success": "Exportação iniciada com sucesso. Veja o arquivo na pasta /exports.",
|
||||
"error": {
|
||||
"failed": "Falha em iniciar exportação: {{error}}",
|
||||
"endTimeMustAfterStartTime": "Tempo de finalização deve ser após tempo de início",
|
||||
"noVaildTimeSelected": "Nenhuma faixa de tempo válida selecionada"
|
||||
}
|
||||
},
|
||||
"fromTimeline": {
|
||||
"saveExport": "Salvar Exportação",
|
||||
"previewExport": "Pré-Visualizar Exportação"
|
||||
}
|
||||
},
|
||||
"streaming": {
|
||||
"label": "Transmissão",
|
||||
"restreaming": {
|
||||
"disabled": "A retransmissão não está habilitada para essa câmera.",
|
||||
"desc": {
|
||||
"title": "Configurar o go2rtc para opções de visualização ao vivo e audio adicional para essa câmera.",
|
||||
"readTheDocumentation": "Leia a documentação"
|
||||
}
|
||||
},
|
||||
"showStats": {
|
||||
"label": "Exibir estatísticas da transmissão",
|
||||
"desc": "Habilite essa opção para exibir as estatísticas de transmissão como uma sobreposição na transmissão da câmera."
|
||||
},
|
||||
"debugView": "Visualização do Depurador"
|
||||
},
|
||||
"search": {
|
||||
"saveSearch": {
|
||||
"label": "Salvar Busca",
|
||||
"desc": "Indique um nome para essa pesquisa salva.",
|
||||
"placeholder": "Dê um nome para a sua busca",
|
||||
"overwrite": "{{searchName}} já existe. Salvar substituirá o valor existente.",
|
||||
"success": "A pesquisa ({{searchName}}) foi salva.",
|
||||
"button": {
|
||||
"save": {
|
||||
"label": "Salvar esta pesquisa"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"recording": {
|
||||
"confirmDelete": {
|
||||
"desc": {
|
||||
"selected": "Tem certeza de que deseja excluir todos os vídeos gravados associados a este item de revisão?<br /><br />Segure a tecla <em>Shift</em> para ignorar esta caixa de diálogo no futuro."
|
||||
},
|
||||
"toast": {
|
||||
"success": "As filmagens associadas aos itens de revisão selecionados foram excluídas com sucesso."
|
||||
}
|
||||
},
|
||||
"button": {
|
||||
"markAsReviewed": "Marcar como revisado"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,7 +12,73 @@
|
||||
"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",
|
||||
"label": "Características",
|
||||
"hasVideoClip": "Possui videoclipe",
|
||||
"submittedToFrigatePlus": {
|
||||
"label": "Enviado ao Frigate+",
|
||||
"tips": "Você deve filtrar primeiro objetos que possuem capturas de imagem.<br /><br />Objetos rastreados sem capturas de imagem não serão enviados ao Frigate+."
|
||||
}
|
||||
},
|
||||
"sort": {
|
||||
"label": "Ordenar",
|
||||
"dateAsc": "Data (Ascendente)",
|
||||
"dateDesc": "Data (Descendente)",
|
||||
"scoreAsc": "Pontuação do Objeto (Ascendente)",
|
||||
"scoreDesc": "Pontuação de Objeto (Descendente)",
|
||||
"speedAsc": "Velocidade Estimada (Ascendente)",
|
||||
"speedDesc": "Velocidade Estimada (Descendente)",
|
||||
"relevance": "Relevância"
|
||||
},
|
||||
"cameras": {
|
||||
"label": "Filtro de Câmeras",
|
||||
"all": {
|
||||
"title": "Todas as Câmeras",
|
||||
"short": "Câmeras"
|
||||
}
|
||||
},
|
||||
"review": {
|
||||
"showReviewed": "Exibir Revisados"
|
||||
},
|
||||
"motion": {
|
||||
"showMotionOnly": "Exibir Movimento Apenas"
|
||||
},
|
||||
"explore": {
|
||||
"settings": {
|
||||
"title": "Configurações",
|
||||
"defaultView": {
|
||||
"title": "Visualização Padrão",
|
||||
"desc": "Quando nenhum filtro é selecionado, exibir um sumário dos objetos mais recentes rastreados por categoria, ou exiba uma grade sem filtro."
|
||||
},
|
||||
"gridColumns": {
|
||||
"desc": "Selecione o número de colunas na visualização em grade."
|
||||
},
|
||||
"searchSource": {
|
||||
"desc": "Escolha se deseja pesquisar nas miniaturas ou descrições dos seus objetos rastreados."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,5 +10,42 @@
|
||||
"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:",
|
||||
"short": "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"
|
||||
}
|
||||
},
|
||||
"decodedFrames": "Quadros Decodificados:",
|
||||
"droppedFrameRate": "Taxa de Quadros Perdidos:"
|
||||
},
|
||||
"toast": {
|
||||
"success": {
|
||||
"submittedFrigatePlus": "Quadro enviado ao Frigate+ com sucesso"
|
||||
},
|
||||
"error": {
|
||||
"submitFrigatePlusFailed": "Falha em submeter quadro ao Frigate+"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,7 +7,69 @@
|
||||
"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",
|
||||
"visionModel": "Modelo de visão",
|
||||
"visionModelFeatureExtractor": "Extrator de características do modelo de visão"
|
||||
},
|
||||
"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",
|
||||
"snapshot": "captura de imagem",
|
||||
"video": "vídeo",
|
||||
"object_lifecycle": "ciclo de vida do obejto"
|
||||
},
|
||||
"objectLifecycle": {
|
||||
"title": "Ciclo de Vida do Objeto",
|
||||
"noImageFound": "Nenhuma imagem encontrada nessa marcação de horário.",
|
||||
"createObjectMask": "Criar Máscara de Objeto",
|
||||
"adjustAnnotationSettings": "Ajustar configurações de anotação",
|
||||
"scrollViewTips": "Role a tela para ver momentos significantes do ciclo de vida desse objeto.",
|
||||
"autoTrackingTips": "As posições da caixa delimitadora será inacurada para cameras com rastreamento automático.",
|
||||
"count": "{{first}} de {{second}}",
|
||||
"trackedPoint": "Ponto Rastreado",
|
||||
"lifecycleItemDesc": {
|
||||
"visible": "{{label}} detectado",
|
||||
"entered_zone": "{{label}} entrou em {{zones}}",
|
||||
"active": "{{label}} se tornou ativo",
|
||||
"stationary": "{{label}} se tornou estacionário",
|
||||
"attribute": {
|
||||
"faceOrLicense_plate": "{{attribute}} detectado para {{label}}",
|
||||
"other": "{{label}} reconhecido como {{attribute}}"
|
||||
},
|
||||
"gone": "{{label}} esquerda",
|
||||
"heard": "{{label}} escutado(a)",
|
||||
"header": {
|
||||
"zones": "Zonas",
|
||||
"area": "Área"
|
||||
}
|
||||
},
|
||||
"annotationSettings": {
|
||||
"title": "Configurações de anotação",
|
||||
"showAllZones": {
|
||||
"title": "Mostrar todas as zonas"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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,28 +3,37 @@
|
||||
"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": {
|
||||
"validation": {
|
||||
"selectImage": "Por favor selecione um arquivo de imagem."
|
||||
},
|
||||
"maxSize": "Tamanho máximo: {{size}}MB"
|
||||
"maxSize": "Tamanho máximo: {{size}}MB",
|
||||
"dropActive": "Solte a imagem aqui…",
|
||||
"dropInstructions": "Arraste e solte uma imagem aqui, ou clique para selecionar"
|
||||
},
|
||||
"deleteFaceLibrary": {
|
||||
"title": "Apagar Nome"
|
||||
"title": "Apagar Nome",
|
||||
"desc": "Tem certeza que quer deletar a coleção {{name}}? Isso deletará permanentemente todos os rostos associados."
|
||||
},
|
||||
"button": {
|
||||
"addFace": "Adicionar Rosto",
|
||||
"renameFace": "Renomear Rosto",
|
||||
"deleteFace": "Remover Rosto",
|
||||
"deleteFaceAttempts": "Remover Rostos",
|
||||
"reprocessFace": "Reprocessar Rosto"
|
||||
"reprocessFace": "Reprocessar Rosto",
|
||||
"uploadImage": "Enviar Imagem"
|
||||
},
|
||||
"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 +49,28 @@
|
||||
"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": {
|
||||
"uploadFace": "Faça o upload de uma imagem de {{name}} que mostre mostre seu rosto visto de frente. A imagem não precisa estar recortada apenas com o 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",
|
||||
"train": {
|
||||
"title": "Treinar",
|
||||
"aria": "Selecionar treinar",
|
||||
"empty": "Não há tentativas recentes de reconhecimento facial"
|
||||
},
|
||||
"selectFace": "Selecionar Rosto"
|
||||
}
|
||||
|
||||
@@ -9,5 +9,90 @@
|
||||
"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",
|
||||
"zoom": {
|
||||
"in": {
|
||||
"label": "Aumentar Zoom na câmera PTZ"
|
||||
},
|
||||
"out": {
|
||||
"label": "Diminuir Zoom na câmera PTZ"
|
||||
}
|
||||
}
|
||||
},
|
||||
"camera": {
|
||||
"enable": "Ativar Câmera",
|
||||
"disable": "Desabilitar Câmera"
|
||||
},
|
||||
"muteCameras": {
|
||||
"enable": "Silenciar Todas as Câmeras",
|
||||
"disable": "Ativar Áudio de Todas as Câmeras"
|
||||
},
|
||||
"detect": {
|
||||
"enable": "Ativar Detecção",
|
||||
"disable": "Desativar Detecção"
|
||||
},
|
||||
"recording": {
|
||||
"enable": "Ativar Gravação",
|
||||
"disable": "Desativar Gravação"
|
||||
},
|
||||
"snapshots": {
|
||||
"enable": "Permitir Capturas de Imagem",
|
||||
"disable": "Desativar Campturas de Imagem"
|
||||
},
|
||||
"audioDetect": {
|
||||
"enable": "Ativar Detecção de Áudio",
|
||||
"disable": "Desabilitar Detecção de Áudio"
|
||||
},
|
||||
"autotracking": {
|
||||
"enable": "Habilitar Rastreamento Automático",
|
||||
"disable": "Desabilitar Rastreamento Automático"
|
||||
},
|
||||
"streamStats": {
|
||||
"enable": "Exibir Estatísticas de Transmissão",
|
||||
"disable": "Ocultar Estatísticas de Transmissão"
|
||||
},
|
||||
"manualRecording": {
|
||||
"title": "Gravação Sob Demanda",
|
||||
"tips": "Inicie um evento manual baseado nas configurações de retenção de gravação dessa câmera.",
|
||||
"playInBackground": {
|
||||
"label": "Reproduzir em segundo plano",
|
||||
"desc": "Habilite essa opção para continuar transmitindo quando o reprodutor estiver oculto."
|
||||
},
|
||||
"showStats": {
|
||||
"label": "Exibir Estatísticas",
|
||||
"desc": "Habilite esta opção para exibir as estatísticas da transmissão como uma sobreposição no feed da câmera."
|
||||
},
|
||||
"start": "Iniciar gravação sob demanda",
|
||||
"started": "Iniciou a gravação manual sob demanda.",
|
||||
"failedToStart": "Falha ao iniciar a gravação manual sob demanda.",
|
||||
"recordDisabledTips": "Como a gravação está desabilitada ou restrita na configuração desta câmera, apenas um instantâneo será salvo.",
|
||||
"end": "Fim da gravação sob demanda",
|
||||
"failedToEnd": "Falha ao finalizar a gravação manual sob demanda."
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,6 +6,64 @@
|
||||
"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",
|
||||
"sub_labels": "Sub-etiquetas",
|
||||
"search_type": "Tipo de Busca",
|
||||
"time_range": "Intervalo de Tempo",
|
||||
"recognized_license_plate": "Placa de Carro Reconhecida",
|
||||
"has_clip": "Possui Clipe",
|
||||
"has_snapshot": "Possui Captura de Imagem"
|
||||
},
|
||||
"searchType": {
|
||||
"thumbnail": "Miniatura",
|
||||
"description": "Descrição"
|
||||
},
|
||||
"toast": {
|
||||
"error": {
|
||||
"beforeDateBeLaterAfter": "A data 'antes' deve ser depois da data 'após'.",
|
||||
"afterDatebeEarlierBefore": "A data 'após' deve ser antes da data 'antes'.",
|
||||
"minScoreMustBeLessOrEqualMaxScore": "A 'pontuação_min' deve ser menor ou igual a 'pontuação_max'.",
|
||||
"maxScoreMustBeGreaterOrEqualMinScore": "A 'pontuação_max' deve ser maior ou igual a 'pontuação_min'.",
|
||||
"minSpeedMustBeLessOrEqualMaxSpeed": "A 'velocidad_min' deve ser menor ou igual a 'velocidad_max'.",
|
||||
"maxSpeedMustBeGreaterOrEqualMinSpeed": "A 'velocidad_max' deve ser maior ou igual a 'velocidade_min'."
|
||||
}
|
||||
},
|
||||
"tips": {
|
||||
"title": "Como utilizar filtros de texto",
|
||||
"desc": {
|
||||
"text": "Filtros ajudam a refinar os resultados da busca. Veja como utilizá-los na campo de pesquisa:",
|
||||
"step1": "Digite um nome de chave de filtro seguido por \":\" (ex., \"câmeras:\").",
|
||||
"step2": "Selecione um valor a partir das sugestões ou digite a sua própria.",
|
||||
"step3": "Usar filtros múltiplos adicionando um após o outro com um espaço entre eles.",
|
||||
"step4": "Filtros de data (antes: e após:) usam o formato {{DateFormat}}.",
|
||||
"step5": "Filtros de tempo usam o formato {{exampleTime}}.",
|
||||
"step6": "Remova os filtros clicando no \"x\" ao lado deles.",
|
||||
"exampleLabel": "Exemplo:"
|
||||
}
|
||||
},
|
||||
"header": {
|
||||
"noFilters": "Filtros",
|
||||
"activeFilters": "Filtros ativos"
|
||||
}
|
||||
},
|
||||
"similaritySearch": {
|
||||
"active": "Pesquisa por similaridade ativa"
|
||||
},
|
||||
"placeholder": {
|
||||
"search": "Pesquisar…"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,6 +6,96 @@
|
||||
"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+",
|
||||
"motionTuner": "Ajuste de Detecção de Movimento",
|
||||
"debug": "Depuração",
|
||||
"enrichments": "Melhorias"
|
||||
},
|
||||
"dialog": {
|
||||
"unsavedChanges": {
|
||||
"title": "Você tem alterações não salvas.",
|
||||
"desc": "Você deseja salvar as alterações antes de continuar?"
|
||||
}
|
||||
},
|
||||
"cameraSetting": {
|
||||
"camera": "Câmera",
|
||||
"noCamera": "Sem Câmera"
|
||||
},
|
||||
"general": {
|
||||
"title": "Opções Gerais",
|
||||
"liveDashboard": {
|
||||
"title": "Painel em Tempo Real",
|
||||
"automaticLiveView": {
|
||||
"label": "Visão em Tempo Real Automática",
|
||||
"desc": "Automaticamente alterar para a visão em tempo real da câmera quando alguma atividade for detectada. Desativar essa opção faz com que as imagens estáticas da câmera no Painel em Tempo Real atualizem apenas uma vez por minuto."
|
||||
},
|
||||
"playAlertVideos": {
|
||||
"label": "Reproduzir Alertas de Video",
|
||||
"desc": "Por padrão, alertas recentes no Painel em Tempo Real sejam reproduzidos como vídeos em loop. Desative essa opção para mostrar apenas a imagens estáticas de alertas recentes nesse dispositivo / navegador."
|
||||
}
|
||||
},
|
||||
"storedLayouts": {
|
||||
"title": "Layouts Salvos",
|
||||
"desc": "O layout das câmeras em um grupo de câmeras pode ser arrastado/redimensionado. As posições são salvas no armazenamento local do seu navegador.",
|
||||
"clearAll": "Apagar Todos os Layouts"
|
||||
},
|
||||
"cameraGroupStreaming": {
|
||||
"title": "Opções de Streaming de Grupo de Câmeras",
|
||||
"desc": "Os ajustes de streaming para cada grupo de câmera são salvos no armazenamento local do seu navegador.",
|
||||
"clearAll": "Apagar Todos os Ajustes de Streaming"
|
||||
},
|
||||
"recordingsViewer": {
|
||||
"title": "Visualizador de Gravações",
|
||||
"defaultPlaybackRate": {
|
||||
"label": "Taxa Padrão de Reprodução",
|
||||
"desc": "Taxa Padrão de Reprodução para Gravações."
|
||||
}
|
||||
},
|
||||
"calendar": {
|
||||
"title": "Calendário",
|
||||
"firstWeekday": {
|
||||
"label": "Primeiro Dia da Semana",
|
||||
"desc": "Dia em que as semanas no calendário de revisão iniciam.",
|
||||
"sunday": "Domingo",
|
||||
"monday": "Segunda-Feira"
|
||||
}
|
||||
},
|
||||
"toast": {
|
||||
"success": {
|
||||
"clearStoredLayout": "Layout deletado para {{cameraName}}",
|
||||
"clearStreamingSettings": "Ajustes de streaming para todos os grupos de câmera limpados."
|
||||
},
|
||||
"error": {
|
||||
"clearStoredLayoutFailed": "Não foi possível apagar o layout:{{errorMessage}}",
|
||||
"clearStreamingSettingsFailed": "Não foi possível apagar os ajustes de streaming:{{errorMessage}}"
|
||||
}
|
||||
}
|
||||
},
|
||||
"enrichments": {
|
||||
"title": "Configurações de Enriquecimento",
|
||||
"unsavedChanges": "Alterações de configurações de Enriquecimento não salvas",
|
||||
"birdClassification": {
|
||||
"title": "Classificação de Pássaros",
|
||||
"desc": "A classificação de pássaros identifica pássaros conhecidos usando o modelo Tensorflow quantizado. Quando um pássaro é reconhecido, o seu nome commum será adicionado como uma subcategoria. Essa informação é incluida na UI, filtros e notificações."
|
||||
},
|
||||
"semanticSearch": {
|
||||
"title": "Busca Semântica",
|
||||
"desc": "A Busca Semântica no Frigate permite você encontrar objetos rastreados dentro dos seus itens revisados, usando ou a imagem em si, uma descrição de texto definida pelo usuário ou uma gerada automaticamente.",
|
||||
"readTheDocumentation": "Leia a Documentação",
|
||||
"reindexNow": {
|
||||
"label": "Reindexar Agora"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,5 +9,75 @@
|
||||
"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",
|
||||
"detector": {
|
||||
"title": "Detectores",
|
||||
"inferenceSpeed": "Velocidade de Inferência do Detector",
|
||||
"temperature": "Detector Temperatura",
|
||||
"cpuUsage": "Utilização de CPU de Detecção",
|
||||
"memoryUsage": "Utilização de Memória do Detector"
|
||||
},
|
||||
"hardwareInfo": {
|
||||
"title": "Informações de Hardware",
|
||||
"gpuUsage": "Utilização de GPU",
|
||||
"gpuMemory": "Memória da GPU",
|
||||
"gpuEncoder": "Codificador da GPU",
|
||||
"gpuDecoder": "Decodificador da GPU",
|
||||
"gpuInfo": {
|
||||
"vainfoOutput": {
|
||||
"title": "Saída do Vainfo",
|
||||
"returnCode": "Código de Retorno: {{code}}",
|
||||
"processOutput": "Saída do Processo:",
|
||||
"processError": "Erro de Processo:"
|
||||
},
|
||||
"nvidiaSMIOutput": {
|
||||
"title": "Saída SMI da Nvidia",
|
||||
"name": "Nome: {{name}}",
|
||||
"driver": "Motorista: {{driver}}",
|
||||
"cudaComputerCapability": "Capacidade de Computação CUDA: {{cuda_compute}}"
|
||||
},
|
||||
"closeInfo": {
|
||||
"label": "Fechar informações da GPU"
|
||||
},
|
||||
"copyInfo": {
|
||||
"label": "Copiar informações da GPU"
|
||||
},
|
||||
"toast": {
|
||||
"success": "Informações da GPU copiadas para a área de transferência"
|
||||
}
|
||||
},
|
||||
"npuUsage": "Uso da NPU",
|
||||
"npuMemory": "Memória da NPU"
|
||||
},
|
||||
"otherProcesses": {
|
||||
"title": "Outros processos"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -117,11 +117,11 @@
|
||||
"desc": "Excluir estes {{objectLength}} objetos rastreados remove a captura de imagem, quaisquer embeddings salvos e todas as entradas associadas ao ciclo de vida do objeto. As gravações desses objetos rastreados na visualização do Histórico <em>NÃO</em> serão excluídas.<br /><br />Tem certeza de que deseja continuar?<br /><br />Mantenha pressionada a tecla <em>Shift</em> para ignorar este diálogo no futuro."
|
||||
},
|
||||
"recognizedLicensePlates": {
|
||||
"title": "Matrículas Reconhecidas",
|
||||
"title": "Placas Reconhecidas",
|
||||
"noLicensePlatesFound": "Nenhuma matrícula encontrada.",
|
||||
"selectPlatesFromList": "Selecione uma ou mais matrículas da lista.",
|
||||
"loadFailed": "Falha ao carregar as matrículas reconhecidas.",
|
||||
"loading": "Carregando matrículas reconhecidas…",
|
||||
"placeholder": "Digite para procurar matrículas…"
|
||||
"selectPlatesFromList": "Selecione uma ou mais placas da lista.",
|
||||
"loadFailed": "Falha ao carregar as placas reconhecidas.",
|
||||
"loading": "Carregando placas reconhecidas…",
|
||||
"placeholder": "Digite para procurar placas…"
|
||||
}
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user