mirror of
https://github.com/blakeblackshear/frigate.git
synced 2024-11-21 19:07:46 +01:00
Multi arch image with nvidia decode support
* build working * update makefile * use jellyfin-ffmpeg for all arch * just build web once for all arch * update actions build * update docs
This commit is contained in:
parent
f2030d301f
commit
f536494a38
22
.github/workflows/pull_request.yml
vendored
22
.github/workflows/pull_request.yml
vendored
@ -20,20 +20,6 @@ jobs:
|
|||||||
run: npm run lint
|
run: npm run lint
|
||||||
working-directory: ./web
|
working-directory: ./web
|
||||||
|
|
||||||
web_build:
|
|
||||||
name: Web - Build
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@master
|
|
||||||
- uses: actions/setup-node@master
|
|
||||||
with:
|
|
||||||
node-version: 16.x
|
|
||||||
- run: npm install
|
|
||||||
working-directory: ./web
|
|
||||||
- name: Build
|
|
||||||
run: npm run build
|
|
||||||
working-directory: ./web
|
|
||||||
|
|
||||||
web_test:
|
web_test:
|
||||||
name: Web - Test
|
name: Web - Test
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
@ -71,6 +57,14 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- name: Check out code
|
- name: Check out code
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
|
- uses: actions/setup-node@master
|
||||||
|
with:
|
||||||
|
node-version: 16.x
|
||||||
|
- run: npm install
|
||||||
|
working-directory: ./web
|
||||||
|
- name: Build web
|
||||||
|
run: npm run build
|
||||||
|
working-directory: ./web
|
||||||
- name: Set up QEMU
|
- name: Set up QEMU
|
||||||
uses: docker/setup-qemu-action@v1
|
uses: docker/setup-qemu-action@v1
|
||||||
- name: Set up Docker Buildx
|
- name: Set up Docker Buildx
|
||||||
|
28
Makefile
28
Makefile
@ -1,18 +1,36 @@
|
|||||||
default_target: frigate
|
default_target: local
|
||||||
|
|
||||||
COMMIT_HASH := $(shell git log -1 --pretty=format:"%h"|tail -1)
|
COMMIT_HASH := $(shell git log -1 --pretty=format:"%h"|tail -1)
|
||||||
|
VERSION = 0.11.0
|
||||||
|
CURRENT_UID := $(shell id -u)
|
||||||
|
CURRENT_GID := $(shell id -g)
|
||||||
|
|
||||||
version:
|
version:
|
||||||
echo "VERSION='0.11.0-$(COMMIT_HASH)'" > frigate/version.py
|
echo "VERSION=\"$(VERSION)-$(COMMIT_HASH)\"" > frigate/version.py
|
||||||
|
|
||||||
|
build_web:
|
||||||
|
docker run --volume ${PWD}/web:/web -w /web --volume /etc/passwd:/etc/passwd:ro --volume /etc/group:/etc/group:ro -u $(CURRENT_UID):$(CURRENT_GID) node:16 /bin/bash -c "npm install && npm run build"
|
||||||
|
|
||||||
nginx_frigate:
|
nginx_frigate:
|
||||||
docker buildx build --push --platform linux/arm/v7,linux/arm64/v8,linux/amd64 --tag blakeblackshear/frigate-nginx:1.0.2 --file docker/Dockerfile.nginx .
|
docker buildx build --push --platform linux/arm/v7,linux/arm64/v8,linux/amd64 --tag blakeblackshear/frigate-nginx:1.0.2 --file docker/Dockerfile.nginx .
|
||||||
|
|
||||||
frigate: version
|
local:
|
||||||
DOCKER_BUILDKIT=1 docker build -t frigate -f docker/Dockerfile .
|
DOCKER_BUILDKIT=1 docker build -t frigate -f docker/Dockerfile .
|
||||||
|
|
||||||
frigate_push: version
|
amd64:
|
||||||
docker buildx build --push --platform linux/arm64/v8,linux/amd64 --tag blakeblackshear/frigate:0.11.0-$(COMMIT_HASH) --file docker/Dockerfile .
|
docker buildx build --platform linux/amd64 --tag blakeblackshear/frigate:$(VERSION)-$(COMMIT_HASH) --file docker/Dockerfile .
|
||||||
|
|
||||||
|
arm64:
|
||||||
|
docker buildx build --platform linux/arm64 --tag blakeblackshear/frigate:$(VERSION)-$(COMMIT_HASH) --file docker/Dockerfile .
|
||||||
|
|
||||||
|
armv7:
|
||||||
|
docker buildx build --platform linux/arm/v7 --tag blakeblackshear/frigate:$(VERSION)-$(COMMIT_HASH) --file docker/Dockerfile .
|
||||||
|
|
||||||
|
build: version amd64 arm64 armv7
|
||||||
|
docker buildx build --platform linux/arm/v7,linux/arm64/v8,linux/amd64 --tag blakeblackshear/frigate:$(VERSION)-$(COMMIT_HASH) --file docker/Dockerfile .
|
||||||
|
|
||||||
|
push: build
|
||||||
|
docker buildx build --push --platform linux/arm/v7,linux/arm64/v8,linux/amd64 --tag blakeblackshear/frigate:$(VERSION)-$(COMMIT_HASH) --file docker/Dockerfile .
|
||||||
|
|
||||||
run_tests: frigate
|
run_tests: frigate
|
||||||
docker run --rm --entrypoint=python3 frigate:latest -u -m unittest
|
docker run --rm --entrypoint=python3 frigate:latest -u -m unittest
|
||||||
|
@ -1,13 +1,5 @@
|
|||||||
FROM blakeblackshear/frigate-nginx:1.0.2 as nginx
|
FROM blakeblackshear/frigate-nginx:1.0.2 as nginx
|
||||||
|
|
||||||
FROM node:16 as web
|
|
||||||
|
|
||||||
WORKDIR /opt/frigate
|
|
||||||
|
|
||||||
COPY web/ .
|
|
||||||
|
|
||||||
RUN npm install && npm run build
|
|
||||||
|
|
||||||
FROM debian:11 as wheels
|
FROM debian:11 as wheels
|
||||||
ARG TARGETARCH
|
ARG TARGETARCH
|
||||||
|
|
||||||
@ -54,7 +46,13 @@ RUN pip3 wheel --wheel-dir=/wheels -r requirements-wheels.txt
|
|||||||
FROM debian:11-slim
|
FROM debian:11-slim
|
||||||
ARG TARGETARCH
|
ARG TARGETARCH
|
||||||
|
|
||||||
ENV DEBIAN_FRONTEND=noninteractive
|
# https://askubuntu.com/questions/972516/debian-frontend-environment-variable
|
||||||
|
ARG DEBIAN_FRONTEND="noninteractive"
|
||||||
|
# http://stackoverflow.com/questions/48162574/ddg#49462622
|
||||||
|
ARG APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=DontWarn
|
||||||
|
# https://github.com/NVIDIA/nvidia-docker/wiki/Installation-(Native-GPU-Support)
|
||||||
|
ENV NVIDIA_DRIVER_CAPABILITIES="compute,video,utility"
|
||||||
|
|
||||||
ENV FLASK_ENV=development
|
ENV FLASK_ENV=development
|
||||||
|
|
||||||
COPY --from=wheels /wheels /wheels
|
COPY --from=wheels /wheels /wheels
|
||||||
@ -71,30 +69,29 @@ RUN apt-get -qq update \
|
|||||||
&& wget -O - http://archive.raspberrypi.org/debian/raspberrypi.gpg.key | apt-key add - \
|
&& wget -O - http://archive.raspberrypi.org/debian/raspberrypi.gpg.key | apt-key add - \
|
||||||
&& echo "deb http://archive.raspberrypi.org/debian/ bullseye main" | tee /etc/apt/sources.list.d/raspi.list \
|
&& echo "deb http://archive.raspberrypi.org/debian/ bullseye main" | tee /etc/apt/sources.list.d/raspi.list \
|
||||||
# add coral repo
|
# add coral repo
|
||||||
&& APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=DontWarn apt-key adv --fetch-keys https://packages.cloud.google.com/apt/doc/apt-key.gpg \
|
&& apt-key adv --fetch-keys https://packages.cloud.google.com/apt/doc/apt-key.gpg \
|
||||||
&& echo "deb https://packages.cloud.google.com/apt coral-edgetpu-stable main" > /etc/apt/sources.list.d/coral-edgetpu.list \
|
&& echo "deb https://packages.cloud.google.com/apt coral-edgetpu-stable main" > /etc/apt/sources.list.d/coral-edgetpu.list \
|
||||||
&& echo "libedgetpu1-max libedgetpu/accepted-eula select true" | debconf-set-selections \
|
&& echo "libedgetpu1-max libedgetpu/accepted-eula select true" | debconf-set-selections \
|
||||||
|
# jellyfin-ffmpeg
|
||||||
|
&& wget -O - https://repo.jellyfin.org/jellyfin_team.gpg.key | apt-key add - \
|
||||||
|
&& echo "deb [arch=$( dpkg --print-architecture )] https://repo.jellyfin.org/$( awk -F'=' '/^ID=/{ print $NF }' /etc/os-release ) $( awk -F'=' '/^VERSION_CODENAME=/{ print $NF }' /etc/os-release ) main" | tee /etc/apt/sources.list.d/jellyfin.list \
|
||||||
&& apt-get -qq update \
|
&& apt-get -qq update \
|
||||||
&& apt-get -qq install --no-install-recommends -y \
|
&& apt-get -qq install --no-install-recommends --no-install-suggests -y \
|
||||||
ffmpeg \
|
|
||||||
# coral drivers
|
# coral drivers
|
||||||
libedgetpu1-max python3-tflite-runtime python3-pycoral \
|
libedgetpu1-max python3-tflite-runtime python3-pycoral \
|
||||||
|
jellyfin-ffmpeg \
|
||||||
&& pip3 install -U /wheels/*.whl \
|
&& pip3 install -U /wheels/*.whl \
|
||||||
&& rm -rf /var/lib/apt/lists/* /wheels \
|
&& ln -s /usr/lib/jellyfin-ffmpeg/ffmpeg /usr/bin/ffmpeg \
|
||||||
&& (apt-get autoremove -y; apt-get autoclean -y)
|
# amd64 specific packages
|
||||||
|
&& if [ "${TARGETARCH}" = "amd64" ]; then \
|
||||||
# AMD64 specific packages
|
apt-get -qq install --no-install-recommends -y \
|
||||||
RUN if [ "${TARGETARCH}" = "amd64" ]; \
|
mesa-va-drivers; \
|
||||||
then \
|
fi \
|
||||||
wget -qO - https://repositories.intel.com/graphics/intel-graphics.key | apt-key add - \
|
&& rm -rf /wheels \
|
||||||
&& echo 'deb [arch=amd64] https://repositories.intel.com/graphics/ubuntu focal main' > /etc/apt/sources.list.d/intel-graphics.list \
|
&& apt-get remove gnupg apt-transport-https -y \
|
||||||
&& apt-get -qq update \
|
&& apt-get clean autoclean -y \
|
||||||
&& apt-get -qq install --no-install-recommends -y \
|
&& apt-get autoremove -y \
|
||||||
# VAAPI drivers for Intel hardware accel
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
libva-drm2 libva2 libmfx1 i965-va-driver vainfo intel-media-va-driver-non-free mesa-vdpau-drivers mesa-va-drivers mesa-vdpau-drivers libdrm-radeon1 \
|
|
||||||
&& rm -rf /var/lib/apt/lists/* \
|
|
||||||
&& (apt-get autoremove -y; apt-get autoclean -y) \
|
|
||||||
fi
|
|
||||||
|
|
||||||
COPY --from=nginx /usr/local/nginx/ /usr/local/nginx/
|
COPY --from=nginx /usr/local/nginx/ /usr/local/nginx/
|
||||||
|
|
||||||
@ -107,7 +104,7 @@ WORKDIR /opt/frigate/
|
|||||||
ADD frigate frigate/
|
ADD frigate frigate/
|
||||||
ADD migrations migrations/
|
ADD migrations migrations/
|
||||||
|
|
||||||
COPY --from=web /opt/frigate/dist web/
|
COPY web/dist web/
|
||||||
|
|
||||||
COPY docker/rootfs/ /
|
COPY docker/rootfs/ /
|
||||||
|
|
||||||
|
@ -67,4 +67,76 @@ ffmpeg:
|
|||||||
|
|
||||||
### NVIDIA GPU
|
### NVIDIA GPU
|
||||||
|
|
||||||
NVIDIA GPU based decoding via NVDEC is supported, but requires special configuration. See the [NVIDIA NVDEC documentation](/configuration/nvdec) for more details.
|
These instructions are based on the [jellyfin documentation](https://jellyfin.org/docs/general/administration/hardware-acceleration.html#nvidia-hardware-acceleration-on-docker-linux)
|
||||||
|
|
||||||
|
Add `--gpus all` to your docker run command or update your compose file.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
services:
|
||||||
|
frigate:
|
||||||
|
...
|
||||||
|
image: blakeblackshear/frigate:stable
|
||||||
|
deploy: # <------------- Add this section
|
||||||
|
resources:
|
||||||
|
reservations:
|
||||||
|
devices:
|
||||||
|
- capabilities: [gpu]
|
||||||
|
```
|
||||||
|
|
||||||
|
The decoder you need to pass in the `hwaccel_args` will depend on the input video.
|
||||||
|
|
||||||
|
A list of supported codecs (you can use `ffmpeg -decoders | grep cuvid` in the container to get a list)
|
||||||
|
|
||||||
|
```shell
|
||||||
|
V..... h263_cuvid Nvidia CUVID H263 decoder (codec h263)
|
||||||
|
V..... h264_cuvid Nvidia CUVID H264 decoder (codec h264)
|
||||||
|
V..... hevc_cuvid Nvidia CUVID HEVC decoder (codec hevc)
|
||||||
|
V..... mjpeg_cuvid Nvidia CUVID MJPEG decoder (codec mjpeg)
|
||||||
|
V..... mpeg1_cuvid Nvidia CUVID MPEG1VIDEO decoder (codec mpeg1video)
|
||||||
|
V..... mpeg2_cuvid Nvidia CUVID MPEG2VIDEO decoder (codec mpeg2video)
|
||||||
|
V..... mpeg4_cuvid Nvidia CUVID MPEG4 decoder (codec mpeg4)
|
||||||
|
V..... vc1_cuvid Nvidia CUVID VC1 decoder (codec vc1)
|
||||||
|
V..... vp8_cuvid Nvidia CUVID VP8 decoder (codec vp8)
|
||||||
|
V..... vp9_cuvid Nvidia CUVID VP9 decoder (codec vp9)
|
||||||
|
```
|
||||||
|
|
||||||
|
For example, for H265 video (hevc), you'll select `hevc_cuvid`.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
ffmpeg:
|
||||||
|
hwaccel_args:
|
||||||
|
- -c:v
|
||||||
|
- hevc_cuvid
|
||||||
|
```
|
||||||
|
|
||||||
|
If everything is working correctly, you should see a significant improvement in performance.
|
||||||
|
Verify that hardware decoding is working by running `nvidia-smi`, which should show the ffmpeg
|
||||||
|
processes:
|
||||||
|
|
||||||
|
```
|
||||||
|
+-----------------------------------------------------------------------------+
|
||||||
|
| NVIDIA-SMI 455.38 Driver Version: 455.38 CUDA Version: 11.1 |
|
||||||
|
|-------------------------------+----------------------+----------------------+
|
||||||
|
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
|
||||||
|
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|
||||||
|
| | | MIG M. |
|
||||||
|
|===============================+======================+======================|
|
||||||
|
| 0 GeForce GTX 166... Off | 00000000:03:00.0 Off | N/A |
|
||||||
|
| 38% 41C P2 36W / 125W | 2082MiB / 5942MiB | 5% Default |
|
||||||
|
| | | N/A |
|
||||||
|
+-------------------------------+----------------------+----------------------+
|
||||||
|
|
||||||
|
+-----------------------------------------------------------------------------+
|
||||||
|
| Processes: |
|
||||||
|
| GPU GI CI PID Type Process name GPU Memory |
|
||||||
|
| ID ID Usage |
|
||||||
|
|=============================================================================|
|
||||||
|
| 0 N/A N/A 12737 C ffmpeg 249MiB |
|
||||||
|
| 0 N/A N/A 12751 C ffmpeg 249MiB |
|
||||||
|
| 0 N/A N/A 12772 C ffmpeg 249MiB |
|
||||||
|
| 0 N/A N/A 12775 C ffmpeg 249MiB |
|
||||||
|
| 0 N/A N/A 12800 C ffmpeg 249MiB |
|
||||||
|
| 0 N/A N/A 12811 C ffmpeg 417MiB |
|
||||||
|
| 0 N/A N/A 12827 C ffmpeg 417MiB |
|
||||||
|
+-----------------------------------------------------------------------------+
|
||||||
|
```
|
||||||
|
@ -1,99 +0,0 @@
|
|||||||
---
|
|
||||||
id: nvdec
|
|
||||||
title: NVIDIA hardware decoder
|
|
||||||
---
|
|
||||||
|
|
||||||
Certain nvidia cards include a hardware decoder, which can greatly improve the
|
|
||||||
performance of video decoding. In order to use NVDEC, a special build of
|
|
||||||
ffmpeg with NVDEC support is required. The special docker architecture 'amd64nvidia'
|
|
||||||
includes this support for amd64 platforms. An aarch64 for the Jetson, which
|
|
||||||
also includes NVDEC may be added in the future.
|
|
||||||
|
|
||||||
Some more detailed setup instructions are also available in [this issue](https://github.com/blakeblackshear/frigate/issues/1847#issuecomment-932076731).
|
|
||||||
|
|
||||||
## Docker setup
|
|
||||||
|
|
||||||
### Requirements
|
|
||||||
|
|
||||||
[nVidia closed source driver](https://www.nvidia.com/en-us/drivers/unix/) required to access NVDEC.
|
|
||||||
[nvidia-docker](https://github.com/NVIDIA/nvidia-docker) required to pass NVDEC to docker.
|
|
||||||
|
|
||||||
### Setting up docker-compose
|
|
||||||
|
|
||||||
In order to pass NVDEC, the docker engine must be set to `nvidia` and the environment variables
|
|
||||||
`NVIDIA_VISIBLE_DEVICES=all` and `NVIDIA_DRIVER_CAPABILITIES=compute,utility,video` must be set.
|
|
||||||
|
|
||||||
In a docker compose file, these lines need to be set:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
services:
|
|
||||||
frigate:
|
|
||||||
...
|
|
||||||
image: blakeblackshear/frigate:stable-amd64nvidia
|
|
||||||
runtime: nvidia
|
|
||||||
environment:
|
|
||||||
- NVIDIA_VISIBLE_DEVICES=all
|
|
||||||
- NVIDIA_DRIVER_CAPABILITIES=compute,utility,video
|
|
||||||
```
|
|
||||||
|
|
||||||
### Setting up the configuration file
|
|
||||||
|
|
||||||
In your frigate config.yml, you'll need to set ffmpeg to use the hardware decoder.
|
|
||||||
The decoder you choose will depend on the input video.
|
|
||||||
|
|
||||||
A list of supported codecs (you can use `ffmpeg -decoders | grep cuvid` in the container to get a list)
|
|
||||||
|
|
||||||
```shell
|
|
||||||
V..... h263_cuvid Nvidia CUVID H263 decoder (codec h263)
|
|
||||||
V..... h264_cuvid Nvidia CUVID H264 decoder (codec h264)
|
|
||||||
V..... hevc_cuvid Nvidia CUVID HEVC decoder (codec hevc)
|
|
||||||
V..... mjpeg_cuvid Nvidia CUVID MJPEG decoder (codec mjpeg)
|
|
||||||
V..... mpeg1_cuvid Nvidia CUVID MPEG1VIDEO decoder (codec mpeg1video)
|
|
||||||
V..... mpeg2_cuvid Nvidia CUVID MPEG2VIDEO decoder (codec mpeg2video)
|
|
||||||
V..... mpeg4_cuvid Nvidia CUVID MPEG4 decoder (codec mpeg4)
|
|
||||||
V..... vc1_cuvid Nvidia CUVID VC1 decoder (codec vc1)
|
|
||||||
V..... vp8_cuvid Nvidia CUVID VP8 decoder (codec vp8)
|
|
||||||
V..... vp9_cuvid Nvidia CUVID VP9 decoder (codec vp9)
|
|
||||||
```
|
|
||||||
|
|
||||||
For example, for H265 video (hevc), you'll select `hevc_cuvid`. Add
|
|
||||||
`-c:v hevc_cuvid` to your ffmpeg input arguments:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
ffmpeg:
|
|
||||||
input_args: ...
|
|
||||||
- -c:v
|
|
||||||
- hevc_cuvid
|
|
||||||
```
|
|
||||||
|
|
||||||
If everything is working correctly, you should see a significant improvement in performance.
|
|
||||||
Verify that hardware decoding is working by running `nvidia-smi`, which should show the ffmpeg
|
|
||||||
processes:
|
|
||||||
|
|
||||||
```
|
|
||||||
+-----------------------------------------------------------------------------+
|
|
||||||
| NVIDIA-SMI 455.38 Driver Version: 455.38 CUDA Version: 11.1 |
|
|
||||||
|-------------------------------+----------------------+----------------------+
|
|
||||||
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
|
|
||||||
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|
|
||||||
| | | MIG M. |
|
|
||||||
|===============================+======================+======================|
|
|
||||||
| 0 GeForce GTX 166... Off | 00000000:03:00.0 Off | N/A |
|
|
||||||
| 38% 41C P2 36W / 125W | 2082MiB / 5942MiB | 5% Default |
|
|
||||||
| | | N/A |
|
|
||||||
+-------------------------------+----------------------+----------------------+
|
|
||||||
|
|
||||||
+-----------------------------------------------------------------------------+
|
|
||||||
| Processes: |
|
|
||||||
| GPU GI CI PID Type Process name GPU Memory |
|
|
||||||
| ID ID Usage |
|
|
||||||
|=============================================================================|
|
|
||||||
| 0 N/A N/A 12737 C ffmpeg 249MiB |
|
|
||||||
| 0 N/A N/A 12751 C ffmpeg 249MiB |
|
|
||||||
| 0 N/A N/A 12772 C ffmpeg 249MiB |
|
|
||||||
| 0 N/A N/A 12775 C ffmpeg 249MiB |
|
|
||||||
| 0 N/A N/A 12800 C ffmpeg 249MiB |
|
|
||||||
| 0 N/A N/A 12811 C ffmpeg 417MiB |
|
|
||||||
| 0 N/A N/A 12827 C ffmpeg 417MiB |
|
|
||||||
+-----------------------------------------------------------------------------+
|
|
||||||
```
|
|
@ -102,6 +102,12 @@ This should show <50% CPU in top, and ~80% CPU without `-c:v h264_v4l2m2m`.
|
|||||||
ffmpeg -c:v h264_v4l2m2m -re -stream_loop -1 -i https://streams.videolan.org/ffmpeg/incoming/720p60.mp4 -f rawvideo -pix_fmt yuv420p pipe: > /dev/null
|
ffmpeg -c:v h264_v4l2m2m -re -stream_loop -1 -i https://streams.videolan.org/ffmpeg/incoming/720p60.mp4 -f rawvideo -pix_fmt yuv420p pipe: > /dev/null
|
||||||
```
|
```
|
||||||
|
|
||||||
|
**NVIDIA**
|
||||||
|
|
||||||
|
```shell
|
||||||
|
ffmpeg -c:v h264_cuvid -re -stream_loop -1 -i https://streams.videolan.org/ffmpeg/incoming/720p60.mp4 -f rawvideo -pix_fmt yuv420p pipe: > /dev/null
|
||||||
|
```
|
||||||
|
|
||||||
## Web Interface
|
## Web Interface
|
||||||
|
|
||||||
### Prerequisites
|
### Prerequisites
|
||||||
|
@ -22,7 +22,6 @@ module.exports = {
|
|||||||
"configuration/stationary_objects",
|
"configuration/stationary_objects",
|
||||||
"configuration/advanced",
|
"configuration/advanced",
|
||||||
"configuration/hardware_acceleration",
|
"configuration/hardware_acceleration",
|
||||||
"configuration/nvdec",
|
|
||||||
"configuration/camera_specific",
|
"configuration/camera_specific",
|
||||||
],
|
],
|
||||||
Integrations: [
|
Integrations: [
|
||||||
|
Loading…
Reference in New Issue
Block a user