Instalacja frigate jako kontener dockera

Wymagania wstępne

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.

Uruchomienie obrazu dockera z firgate
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).

Podstawowy plik konfiguracyjny config.yml

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.

Poprzedni wpis Następny wpis