mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-07-21 11:19:02 +03:00
Compare commits
54
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f7184c8ed5 | ||
|
|
2e1b81b380 | ||
|
|
30cf274815 | ||
|
|
b15c799d8c | ||
|
|
b6b3178e3d | ||
|
|
5fc030c3f6 | ||
|
|
ca3afa8ac4 | ||
|
|
878f401ad2 | ||
|
|
99f9c1529d | ||
|
|
369e6ba2c2 | ||
|
|
8254602449 | ||
|
|
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)
|
||||
|
||||
@@ -340,21 +340,22 @@ class EventCleanup(threading.Thread):
|
||||
.where(Event.has_clip == False, Event.has_snapshot == False)
|
||||
.iterator()
|
||||
)
|
||||
events_to_delete = [e.id for e in events]
|
||||
events_to_delete: list[Event] = [e for e in events]
|
||||
|
||||
for e in events:
|
||||
for e in events_to_delete:
|
||||
delete_event_thumbnail(e)
|
||||
|
||||
logger.debug(f"Found {len(events_to_delete)} events that can be expired")
|
||||
if len(events_to_delete) > 0:
|
||||
for i in range(0, len(events_to_delete), CHUNK_SIZE):
|
||||
chunk = events_to_delete[i : i + CHUNK_SIZE]
|
||||
ids_to_delete = [e.id for e in events_to_delete]
|
||||
for i in range(0, len(ids_to_delete), CHUNK_SIZE):
|
||||
chunk = ids_to_delete[i : i + CHUNK_SIZE]
|
||||
logger.debug(f"Deleting {len(chunk)} events from the database")
|
||||
Event.delete().where(Event.id << chunk).execute()
|
||||
|
||||
if self.config.semantic_search.enabled:
|
||||
self.db.delete_embeddings_description(event_ids=chunk)
|
||||
self.db.delete_embeddings_thumbnail(event_ids=chunk)
|
||||
logger.debug(f"Deleted {len(events_to_delete)} embeddings")
|
||||
logger.debug(f"Deleted {len(ids_to_delete)} embeddings")
|
||||
|
||||
logger.info("Exiting event cleanup...")
|
||||
|
||||
@@ -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 @@
|
||||
{}
|
||||
@@ -54,5 +54,9 @@
|
||||
"pant": "Huohottaa",
|
||||
"snort": "Haukkua",
|
||||
"cough": "Yskä",
|
||||
"sneeze": "Niistää"
|
||||
"sneeze": "Niistää",
|
||||
"throat_clearing": "Kurkun selvittäminen",
|
||||
"sniff": "Poimi",
|
||||
"run": "Käynnistä",
|
||||
"shuffle": "Sekoitus"
|
||||
}
|
||||
|
||||
@@ -65,6 +65,13 @@
|
||||
}
|
||||
},
|
||||
"streaming": {
|
||||
"label": "Kuvavirta"
|
||||
"label": "Kuvavirta",
|
||||
"restreaming": {
|
||||
"disabled": "Uudelleentoisto ei ole käytettävissä tällä kameralla.",
|
||||
"desc": {
|
||||
"title": "Määritä go2rtc saadaksesi lisäreaaliaikanäkymän vaihtoehtoja ja ääntä tälle kameralle.",
|
||||
"readTheDocumentation": "Lue dokumentaatio"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -38,7 +38,8 @@
|
||||
"label": "Piirteet",
|
||||
"hasVideoClip": "Videoleike löytyy",
|
||||
"submittedToFrigatePlus": {
|
||||
"label": "Lähetetty Frigate+:aan"
|
||||
"label": "Lähetetty Frigate+:aan",
|
||||
"tips": "Sinun on ensin suodatettava seuratut kohteet, joilla on tilannekuva.<br /><br />Kohteita, joilla ei ole tilannekuvaa, ei voida lähettää Frigate+:aan."
|
||||
},
|
||||
"hasSnapshot": "Tilannekuva löytyy"
|
||||
},
|
||||
@@ -49,6 +50,13 @@
|
||||
"scoreAsc": "Kohteen pisteet (Nouseva)",
|
||||
"scoreDesc": "Kohteen pisteet (Laskeva)",
|
||||
"speedAsc": "Arvioitu nopeus (Nouseva)",
|
||||
"speedDesc": "Arvioitu nopeus (Laskeva)"
|
||||
"speedDesc": "Arvioitu nopeus (Laskeva)",
|
||||
"relevance": "Olennaisuus"
|
||||
},
|
||||
"cameras": {
|
||||
"label": "Kameran suodattimet",
|
||||
"all": {
|
||||
"title": "Kaikki kamerat"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,10 +27,12 @@
|
||||
"context": "Frigate lataa semanttista hakua varten vaadittavat upotusmallit. Tämä saattaa viedä useamman minuutin, riippuen yhteytesi nopeudesta.",
|
||||
"setup": {
|
||||
"visionModel": "Vision-malli",
|
||||
"textModel": "Tekstimalli"
|
||||
"textModel": "Tekstimalli",
|
||||
"textTokenizer": "Tekstin osioija"
|
||||
},
|
||||
"tips": {
|
||||
"documentation": "Lue dokumentaatio"
|
||||
"documentation": "Lue dokumentaatio",
|
||||
"context": "Saatat haluta uudelleenindeksoida seurattavien kohteiden upotukset, kun mallit on ladattu."
|
||||
},
|
||||
"error": "Tapahtui virhe. Tarkista Frigaten lokit."
|
||||
}
|
||||
@@ -74,7 +76,8 @@
|
||||
"noImageFound": "Tältä aikaleimalta ei löytynyt kuvia.",
|
||||
"createObjectMask": "Luo kohdemaski",
|
||||
"scrollViewTips": "Vieritä katsoaksesi merkittäviä hetkiä kohteen elinkaarelta.",
|
||||
"autoTrackingTips": "Kohteen rajojen sijainti on epätarkka automaattisesti seuraaville kameroille."
|
||||
"autoTrackingTips": "Kohteen rajojen sijainti on epätarkka automaattisesti seuraaville kameroille.",
|
||||
"adjustAnnotationSettings": "Säädä merkintäasetuksia"
|
||||
},
|
||||
"trackedObjectDetails": "Seurattavien kohteiden tiedot",
|
||||
"type": {
|
||||
|
||||
@@ -14,7 +14,8 @@
|
||||
"person": "Henkilö",
|
||||
"timestamp": "Aikaleima",
|
||||
"subLabelScore": "Alinimikkeen pisteet",
|
||||
"face": "Kasvojen yksityiskohdat"
|
||||
"face": "Kasvojen yksityiskohdat",
|
||||
"scoreInfo": "Alatunnisteen pistemäärä on kaikkien tunnistettujen kasvojen varmuustasojen painotettu keskiarvo, joten se voi poiketa tilannekuvassa näkyvästä pistemäärästä."
|
||||
},
|
||||
"documentTitle": "Kasvokirjasto - Frigate",
|
||||
"deleteFaceAttempts": {
|
||||
@@ -31,22 +32,34 @@
|
||||
"selectItem": "Valitse {{item}}",
|
||||
"train": {
|
||||
"empty": "Ei viimeaikaisia kasvojentunnistusyrityksiä",
|
||||
"title": "Koulutus"
|
||||
"title": "Koulutus",
|
||||
"aria": "Valitse kouluta"
|
||||
},
|
||||
"collections": "Kokoelmat",
|
||||
"steps": {
|
||||
"faceName": "Anna nimi kasvoille",
|
||||
"uploadFace": "Lähetä kasvokuva",
|
||||
"nextSteps": "Seuraavat vaiheet"
|
||||
"nextSteps": "Seuraavat vaiheet",
|
||||
"description": {
|
||||
"uploadFace": "Lataa kuva henkilöstä {{name}}, jossa hänen kasvonsa näkyvät suoraan edestä päin. Kuvaa ei tarvitse rajata pelkkiin kasvoihin."
|
||||
}
|
||||
},
|
||||
"createFaceLibrary": {
|
||||
"title": "Luo kokoelma",
|
||||
"desc": "Luo uusi kokoelma",
|
||||
"new": "Luo uusi kasvo"
|
||||
"new": "Luo uusi kasvo",
|
||||
"nextSteps": "Hyvän perustan luomiseksi huomioitavaa:<li>Käytä koulutus-välilehteä valitaksesi opetukseen kuvia kustakin tunnistetusta henkilöstä</li><li>Panosta mahdollisimman suoraan otettuihin kuviin; vältä kouluttamista kulmassa kuvatuilla kuvilla.</li></ul>"
|
||||
},
|
||||
"selectFace": "Valitse kasvo",
|
||||
"deleteFaceLibrary": {
|
||||
"title": "Poista nimi",
|
||||
"desc": "Haluatko varmasti poistaa kokoelman {{name}}? Tämä poistaa pysyvästi kaikki liitetyt kasvot."
|
||||
},
|
||||
"renameFace": {
|
||||
"title": "Uudelleennimeä kasvot",
|
||||
"desc": "Anna uusi nimi tälle {{name}}"
|
||||
},
|
||||
"button": {
|
||||
"deleteFaceAttempts": "Poista kasvot"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -37,8 +37,26 @@
|
||||
"beforeDateBeLaterAfter": "'Ennen' ajan täytyy olla myöhemmin kun 'jälkeen' aika.",
|
||||
"afterDatebeEarlierBefore": "'Jälkeen' ajan täytyy olla aiemmin kun 'ennen' aika.",
|
||||
"minScoreMustBeLessOrEqualMaxScore": "Arvon 'min_score' täytyy olla pienempi tai yhtäsuuri kuin 'max_score'.",
|
||||
"maxScoreMustBeGreaterOrEqualMinScore": "Arvon 'max_score' täytyy olla suurempi tai yhtäsuuri kuin 'min_score'."
|
||||
"maxScoreMustBeGreaterOrEqualMinScore": "Arvon 'max_score' täytyy olla suurempi tai yhtäsuuri kuin 'min_score'.",
|
||||
"minSpeedMustBeLessOrEqualMaxSpeed": "'Minimi nopeus' tulee olla pienempi tai yhtäsuuri kuin 'maksimi nopeus'.",
|
||||
"maxSpeedMustBeGreaterOrEqualMinSpeed": "'Maksimi nopeus' tulee olla suurempi tai yhtä suuri kuin 'minimi nopeus'."
|
||||
}
|
||||
},
|
||||
"tips": {
|
||||
"desc": {
|
||||
"exampleLabel": "Esimerkki:"
|
||||
},
|
||||
"title": "Tekstisuodattimien käyttö"
|
||||
},
|
||||
"header": {
|
||||
"currentFilterType": "Suodata arvoja",
|
||||
"noFilters": "Suodattimet",
|
||||
"activeFilters": "Käytössä olevat suodattimet"
|
||||
}
|
||||
},
|
||||
"similaritySearch": {
|
||||
"title": "Samankaltaisten kohteiden haku",
|
||||
"active": "Samankaltaisuushaku aktiivinen",
|
||||
"clear": "Poista samankaltaisuushaku"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -44,7 +44,8 @@
|
||||
"gpuDecoder": "GPU-dekooderi",
|
||||
"gpuInfo": {
|
||||
"vainfoOutput": {
|
||||
"title": "Vainfon tulostus"
|
||||
"title": "Vainfon tulostus",
|
||||
"returnCode": "Paluuarvo: {{code}}"
|
||||
},
|
||||
"toast": {
|
||||
"success": "Kopioi GPU:n tiedot leikepöydälle"
|
||||
|
||||
@@ -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."
|
||||
}
|
||||
},
|
||||
|
||||
@@ -16,7 +16,8 @@
|
||||
},
|
||||
"review": {
|
||||
"question": {
|
||||
"label": "Konfirmasi label ini untuk Frigate Plus"
|
||||
"label": "Konfirmasi label ini untuk Frigate Plus",
|
||||
"ask_a": "Apakah objek ini adalah sebuah<code>{{label}}</code>?"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,5 +11,6 @@
|
||||
"alert": "Tidak ada peringatan untuk ditinjau",
|
||||
"motion": "Data gerakan tidak ditemukan"
|
||||
},
|
||||
"timeline.aria": "Pilih timeline"
|
||||
"timeline.aria": "Pilih timeline",
|
||||
"timeline": "Linimasa"
|
||||
}
|
||||
|
||||
@@ -7,7 +7,10 @@
|
||||
"context": "Jelajahi dapat digunakan setelah embedding objek yang dilacak selesai di-reindex.",
|
||||
"startingUp": "Sedang memulai…",
|
||||
"estimatedTime": "Perkiraan waktu tersisa:",
|
||||
"finishingShortly": "Selesai sesaat lagi"
|
||||
"finishingShortly": "Selesai sesaat lagi",
|
||||
"step": {
|
||||
"thumbnailsEmbedded": "Keluku dilampirkan "
|
||||
}
|
||||
}
|
||||
},
|
||||
"details": {
|
||||
|
||||
@@ -8,5 +8,6 @@
|
||||
"delete": "Hapus pencarian yang disimpan",
|
||||
"filterInformation": "Saring Informasi",
|
||||
"filterActive": "Filter aktif"
|
||||
}
|
||||
},
|
||||
"trackedObjectId": "Tracked Object ID"
|
||||
}
|
||||
|
||||
@@ -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,38 @@
|
||||
{
|
||||
"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",
|
||||
"bellow": "Apačioje",
|
||||
"whoop": "Rėkavimas",
|
||||
"whispering": "Šnabždėjimas",
|
||||
"laughter": "Juokas",
|
||||
"snicker": "Kikenimas",
|
||||
"crying": "Verkimas",
|
||||
"singing": "Dainavimas"
|
||||
}
|
||||
@@ -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,22 @@
|
||||
{
|
||||
"group": {
|
||||
"label": "Kamerų Grupės",
|
||||
"add": "Sukurti Kamerų Grupę",
|
||||
"edit": "Modifikuoti Kamerų Grupę",
|
||||
"delete": {
|
||||
"label": "Ištrinti Kamerų Grupę",
|
||||
"confirm": {
|
||||
"title": "Patvirtinti ištrynimą",
|
||||
"desc": "Ar tikrai norite ištrinti šią kamerų grupę <em>{{name}}</em>?"
|
||||
}
|
||||
},
|
||||
"name": {
|
||||
"label": "Pavadinimas",
|
||||
"placeholder": "Įveskite pavadinimą…",
|
||||
"errorMessage": {
|
||||
"mustLeastCharacters": "Kamerų grupės pavadinimas turi būti bent 2 simbolių.",
|
||||
"exists": "Kamerų grupės pavadinimas jau egzistuoja."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
{
|
||||
"restart": {
|
||||
"title": "Ar įsitikinę kad norite perkrauti Frigate?",
|
||||
"button": "Perkrauti",
|
||||
"restarting": {
|
||||
"title": "Frigate Persikrauna",
|
||||
"content": "Šis puslapis persikraus už {{countdown}} sekundžių.",
|
||||
"button": "Priverstinai Perkrauti Dabar"
|
||||
}
|
||||
},
|
||||
"explore": {
|
||||
"plus": {
|
||||
"review": {
|
||||
"question": {
|
||||
"ask_a": "Ar šis objektas yra <code>{{label}}</code>?",
|
||||
"ask_an": "Ar šis objektas yra <code>{{label}}</code>?",
|
||||
"label": "Patvirtinti šią etiketę į Frigate Plus"
|
||||
}
|
||||
},
|
||||
"submitToPlus": {
|
||||
"label": "Pateiktį į Frigate+"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"filter": "Filtras",
|
||||
"labels": {
|
||||
"label": "Etiketės",
|
||||
"all": {
|
||||
"title": "Visos Etiketės",
|
||||
"short": "Etiketės"
|
||||
},
|
||||
"count_one": "{{count}} Etiketė",
|
||||
"count_other": "{{count}} Etiketės"
|
||||
},
|
||||
"zones": {
|
||||
"label": "Zonos",
|
||||
"all": {
|
||||
"title": "Visos Zonos",
|
||||
"short": "Zonos"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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,14 @@
|
||||
{
|
||||
"documentTitle": "Tyrinėti - Frigate",
|
||||
"generativeAI": "Generatyvinis DI",
|
||||
"exploreMore": "Apžvelgti daugiau {{label}} objektų",
|
||||
"exploreIsUnavailable": {
|
||||
"embeddingsReindexing": {
|
||||
"startingUp": "Paleidžiama…",
|
||||
"estimatedTime": "Apytikris likęs laikas:"
|
||||
}
|
||||
},
|
||||
"details": {
|
||||
"timestamp": "Laiko žyma"
|
||||
}
|
||||
}
|
||||
@@ -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,13 @@
|
||||
{
|
||||
"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."
|
||||
},
|
||||
"details": {
|
||||
"person": "Žmogus",
|
||||
"face": "Veido detelės",
|
||||
"timestamp": "Laiko žyma",
|
||||
"unknown": "Nežinoma"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"documentTitle": "Gyvai - Frigate",
|
||||
"documentTitle.withCamera": "{{camera}} - Tiesiogiai - Frigate",
|
||||
"lowBandwidthMode": "Mažo-pralaidumo Rėžimas",
|
||||
"cameraAudio": {
|
||||
"enable": "Įgalinti Kamerų Garsą",
|
||||
"disable": "Išjungti Kamerų Garsą"
|
||||
},
|
||||
"twoWayTalk": {
|
||||
"enable": "Įgalinti Dvipusį Pokalbį",
|
||||
"disable": "Išjungti Dvipusį Pokalbį"
|
||||
}
|
||||
}
|
||||
@@ -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,18 @@
|
||||
{
|
||||
"search": "Paieška",
|
||||
"savedSearches": "Išsaugotos Paieškos",
|
||||
"searchFor": "Ieškoti {{inputValue}}",
|
||||
"button": {
|
||||
"clear": "Išvalyti paiešką",
|
||||
"save": "Išsaugoti paiešką",
|
||||
"delete": "Ištrinti išsaugotą paiešką",
|
||||
"filterInformation": "Filtruoti informaciją",
|
||||
"filterActive": "Aktyvūs filtrai"
|
||||
},
|
||||
"trackedObjectId": "Sekamo Objekto ID",
|
||||
"filter": {
|
||||
"label": {
|
||||
"cameras": "Kameros"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"documentTitle": {
|
||||
"default": "Nustatymai - Frigate",
|
||||
"authentication": "Autentifikavimo Nustatymai - Frigate",
|
||||
"camera": "Kameros Nustatymai - Frigate",
|
||||
"object": "Derinti - Frigate",
|
||||
"general": "Bendrieji Nustatymai - Frigate",
|
||||
"frigatePlus": "Frigate+ Nustatymai - Frigate",
|
||||
"notifications": "Pranešimų Nustatymai - Frigate",
|
||||
"motionTuner": "Judesio Derinimas - Frigate"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"documentTitle": {
|
||||
"cameras": "Kamerų Statistika - Frigate",
|
||||
"storage": "Saugyklos Statistika - Frigate",
|
||||
"logs": {
|
||||
"frigate": "Frigate Žurnalas - Frigate",
|
||||
"go2rtc": "Go2RTC Žurnalas - Frigate",
|
||||
"nginx": "Nginx Žurnalas - Frigate"
|
||||
},
|
||||
"general": "Bendroji Statistika - Frigate"
|
||||
},
|
||||
"title": "Sistema",
|
||||
"metrics": "Sistemos metrikos",
|
||||
"logs": {
|
||||
"download": {
|
||||
"label": "Parsisiųsti Žurnalą"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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": {
|
||||
|
||||
@@ -0,0 +1,167 @@
|
||||
{
|
||||
"mantra": "Mantra",
|
||||
"child_singing": "Criança cantando",
|
||||
"speech": "Discurso",
|
||||
"yell": "Gritar",
|
||||
"chant": "Canto",
|
||||
"babbling": "Balbuciando",
|
||||
"bellow": "Abaixo",
|
||||
"whoop": "Grito",
|
||||
"whispering": "Sussurrando",
|
||||
"laughter": "Risada",
|
||||
"snicker": "Risada",
|
||||
"crying": "Choro",
|
||||
"sigh": "Suspirar",
|
||||
"singing": "Cantoria",
|
||||
"choir": "Coro",
|
||||
"yodeling": "Cantando",
|
||||
"bicycle": "Bicicleta",
|
||||
"car": "Carro",
|
||||
"motorcycle": "Moto",
|
||||
"bus": "Ônibus",
|
||||
"train": "Trem",
|
||||
"boat": "Barco",
|
||||
"bird": "Pássaro",
|
||||
"cat": "Gato",
|
||||
"dog": "Cachorro",
|
||||
"rapping": "Cantando rap",
|
||||
"horse": "Cavalo",
|
||||
"humming": "Cantarolando",
|
||||
"sheep": "Ovelha",
|
||||
"synthetic_singing": "Canto Sintético",
|
||||
"groan": "Gemido",
|
||||
"grunt": "Grunhido",
|
||||
"whistling": "Assobio",
|
||||
"breathing": "Respiração",
|
||||
"camera": "Câmera",
|
||||
"wheeze": "Chiado",
|
||||
"snoring": "Ronco",
|
||||
"gasp": "Respiração Ofegante",
|
||||
"pant": "Arfado",
|
||||
"snort": "Bufado",
|
||||
"cough": "Tosse",
|
||||
"throat_clearing": "Pigarro",
|
||||
"sneeze": "Espirro",
|
||||
"sniff": "Fungado",
|
||||
"run": "Executar",
|
||||
"shuffle": "Embaralhar",
|
||||
"footsteps": "Passos",
|
||||
"chewing": "Mastigação",
|
||||
"biting": "Mordida",
|
||||
"gargling": "Gargarejo",
|
||||
"stomach_rumble": "Ronco de Estômago",
|
||||
"burping": "Arroto",
|
||||
"skateboard": "Skate",
|
||||
"hiccup": "Soluço",
|
||||
"fart": "Flatulência",
|
||||
"hands": "Mãos",
|
||||
"finger_snapping": "Estalar de Dedos",
|
||||
"clapping": "Palmas",
|
||||
"heartbeat": "Batida de Coração",
|
||||
"heart_murmur": "Sopro Cardíaco",
|
||||
"cheering": "Comemoração",
|
||||
"applause": "Aplausos",
|
||||
"chatter": "Conversa",
|
||||
"crowd": "Multidão",
|
||||
"children_playing": "Crianças Brincando",
|
||||
"animal": "Animal",
|
||||
"pets": "Animais de Estimação",
|
||||
"bark": "Latido",
|
||||
"yip": "Latido / Grito Agudo",
|
||||
"howl": "Uivado",
|
||||
"bow_wow": "Bow Wow",
|
||||
"growling": "Rosnado",
|
||||
"whimper_dog": "Choro de Cachorro",
|
||||
"purr": "Ronronado",
|
||||
"meow": "Miado",
|
||||
"hiss": "Sibilo",
|
||||
"caterwaul": "Lamúria",
|
||||
"livestock": "Animais de Criação",
|
||||
"clip_clop": "Galope",
|
||||
"neigh": "Relincho",
|
||||
"door": "Porta",
|
||||
"cattle": "Gado",
|
||||
"moo": "Mugido",
|
||||
"cowbell": "Sino de Vaca",
|
||||
"mouse": "Rato",
|
||||
"pig": "Porco",
|
||||
"oink": "Grunhido de Porco",
|
||||
"keyboard": "Teclado",
|
||||
"goat": "Cabra",
|
||||
"bleat": "Balido",
|
||||
"fowl": "Ave",
|
||||
"chicken": "Galinha",
|
||||
"sink": "Pia",
|
||||
"cluck": "Cacarejo",
|
||||
"cock_a_doodle_doo": "Cacarejado",
|
||||
"blender": "Liquidificador",
|
||||
"turkey": "Peru",
|
||||
"gobble": "Deglutição",
|
||||
"clock": "Relógio",
|
||||
"duck": "Pato",
|
||||
"quack": "Grasnado",
|
||||
"scissors": "Tesouras",
|
||||
"goose": "Ganso",
|
||||
"honk": "Buzina",
|
||||
"hair_dryer": "Secador de Cabelo",
|
||||
"wild_animals": "Animais Selvagens",
|
||||
"toothbrush": "Escova de Dentes",
|
||||
"roaring_cats": "Felinos Rugindo",
|
||||
"roar": "Rugido",
|
||||
"vehicle": "Veículo",
|
||||
"chirp": "Piado",
|
||||
"squawk": "Guincho Animal",
|
||||
"pigeon": "Pombo",
|
||||
"dogs": "Cachorros",
|
||||
"rats": "Ratos",
|
||||
"coo": "Arrulhado de Pombo",
|
||||
"crow": "Corvo",
|
||||
"caw": "Grasnado de Corvo",
|
||||
"owl": "Coruja",
|
||||
"hoot": "Chirriado de Coruja",
|
||||
"flapping_wings": "Bater de Asas",
|
||||
"patter": "Passos Leves",
|
||||
"insect": "Inseto",
|
||||
"cricket": "Grilo",
|
||||
"mosquito": "Mosquito",
|
||||
"fly": "Mosca",
|
||||
"buzz": "Zumbido",
|
||||
"frog": "Sapo",
|
||||
"croak": "Coaxado",
|
||||
"snake": "Cobra",
|
||||
"rattle": "Guizo",
|
||||
"whale_vocalization": "Vocalização de Baleia",
|
||||
"music": "Música",
|
||||
"musical_instrument": "Instrumento Musical",
|
||||
"plucked_string_instrument": "Instrumento de Cordas Dedilhadas",
|
||||
"guitar": "Violão",
|
||||
"electric_guitar": "Guitarra",
|
||||
"bass_guitar": "Baixo",
|
||||
"acoustic_guitar": "Violão Acústico",
|
||||
"steel_guitar": "Guitarra Havaiana",
|
||||
"tapping": "Tapping",
|
||||
"strum": "Dedilhado",
|
||||
"banjo": "Banjo",
|
||||
"sitar": "Sitar",
|
||||
"mandolin": "Bandolim",
|
||||
"zither": "Cítara",
|
||||
"ukulele": "Ukulele",
|
||||
"piano": "Piano",
|
||||
"electric_piano": "Piano Elétrico",
|
||||
"organ": "Órgão",
|
||||
"electronic_organ": "Órgão Eletrônico",
|
||||
"hammond_organ": "Órgão Hammond",
|
||||
"synthesizer": "Sintetizador",
|
||||
"sampler": "Sampler",
|
||||
"harpsichord": "Cravo (Instrumento Musical)",
|
||||
"percussion": "Percussão",
|
||||
"drum_kit": "Kit de Baterias",
|
||||
"drum_machine": "Bateria Eletrônica",
|
||||
"drum": "Tambor",
|
||||
"snare_drum": "Caixa Clara",
|
||||
"rimshot": "Rimshot",
|
||||
"drum_roll": "Tambores Rufando",
|
||||
"bass_drum": "Bumbo",
|
||||
"timpani": "Tímpanos (Instrumento Musical)",
|
||||
"tabla": "Tabla"
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user