Frigate pracujące wewnątrz Home Assistanta nie ma dostępu do sprzętowej akceleracji, stąd zainstalujemy ten program w osobnym kontenerze dockera, który dostanie dostęp do właściwych urządzeń.
Do poprawnego funkcjonowania frigate potrzebny jest poprawnie działający serwer MQTT, przed przystąpieniem do dalszej pracy musimy mieć do niego login i hasło.
Zaleca się by komputer na którym będzie funkcjonować frigate miał jakieś wspomaganie dekodowania video oraz specjalistyczny procesor do analizy obrazu. W przeciwnym wypadku należy liczyć się bardzo dużym zapotrzebowaniem na moc procesora.
docker run -d \
--name frigate \
--restart=unless-stopped \
--mount type=tmpfs,target=/tmp/cache,tmpfs-size=1000000000 \
--device /dev/dri/renderD128 \
--shm-size=64m \
-v /path/to/your/storage:/media/frigate \
-v /path/to/your/config.yml:/config/config.yml:ro \
-v /etc/localtime:/etc/localtime:ro \
-e FRIGATE_RTSP_PASSWORD='password' \
-p 5000:5000 \
-p 1935:1935 \
blakeblackshear/frigate:stable
W powyższym poleceniu zakładamy, że mamy akcelerację Intel QucikSync (linia z renderD128).
Należy wskazać ściżkę do miejsca gdzie będziemy (poza kontenerem) przechowywać plik konfiguracyjny frigate czyli config.yml
Oprócz tego wskazujemy katalog w którym firgate będzie przechowywać swoją bazę danych oraz zarejestrowane klipy i zdjęcia (katalog widoczny wewnątrz kontenera jako /media/frigate).
Załączony plik pozwoli uruchomić firgate i sprawdzić czy kontener w ogóle działa.
mqtt:
host: 192.168.X.Y
port: 1883
topic_prefix: frigate
client_id: frigate
user: MQTT_USER
password: MQTT_PASSWORD
detectors:
cpu1:
type: cpu
num_threads: 1
ffmpeg:
hwaccel_args: -hwaccel vaapi -hwaccel_device /dev/dri/renderD128 -hwaccel_output_format yuv420p
record:
enabled: True
retain:
days: 7
mode: motion
events:
pre_capture: 5
post_capture: 5
cameras:
camera_1: # <------ Name the camera
motion:
threshold: 20
mask:
- 1280,0,1280,69,928,64,931,0
- 0,720,228,720,226,658,0,653
ffmpeg:
inputs:
- path: rtsp://LOGIN:PASSWORD@192.168.X.Z:554/mode=real&idc=1&ids=2 # <----- Update for your camera
roles:
- detect
- rtmp
rtmp:
enabled: True
#enabled: False # <-- RTMP should be disabled if your stream is not H264
detect:
width: 1280 # <---- update for your camera's resolution
height: 720 # <---- update for your camera's resolution
W tym przypadku do detekcji obiektów i ruchu używany będzie CPU - to nie jest zalecane rozwiązanie.