William Zhang2026-09-22

NVR-systeem op basis van Frigate op de reComputer RK3576

Implementeer Frigate NVR op de reComputer RK3576 met één Docker-commando, waardoor hardwareversnelde decodering en RKNN-inferentie worden ingeschakeld.

NVRCVEdge AIGithub

Bouw snel een on-device NVR-project gebaseerd op RK3576 / Docker / RKNN / Frigate.


Frigate is een open-source NVR gericht op lokale, realtime AI-objectdetectie. Alle inferentie draait op je eigen hardware — camerastreams worden nooit naar een cloudserver geüpload — wat zowel de privacy beschermt als de dure maandelijkse cloud-AI-abonnementskosten vermijdt. Frigate ondersteunt aangepaste detectiezones en maskerzones, en integreert naadloos met Home Assistant om NVR-feeds in smart-home-automatiseringen op te nemen.

Deze handleiding laat zien hoe je Frigate op de reComputer RK3576 implementeert met Docker Compose en gebruikmaakt van de in de RK3576 ingebouwde stack van Rockchip MPP (hardwaredecodering) + RGA (2D-versnelling) + RKNN (NPU-inferentie) voor realtime videoanalyse met lage CPU-belasting.

Eerste stappen

In deze handleiding volgen we de officiële implementatiewerkwijze en laten we zien hoe je een Frigate Docker-omgeving configureert die lokale AI-detectie uitvoert op RTSP-camerastreams op de reComputer RK3576.

Vereisten volgens de officiële documentatie

Frigate beveelt officieel aan:

  • Een Debian-gebaseerd besturingssysteem als de beste host;
  • Virtuele machines worden niet aanbevolen (Proxmox, ESXi, Virtualbox) — sommige Proxmox-configuraties kunnen werken, maar voegen complexiteit toe aan Coral/GPU-passthrough;
  • Windows wordt niet officieel ondersteund (WSL/Virtualbox kunnen werken, maar GPU/Coral-passthrough is lastig).

Voor Rockchip-platforms controleer je de versie van je systeemimage:

bash
$ uname -r
5.10.xxx-rockchip

$ ls /dev/dri
by-path  card0  card1  renderD128  renderD129

$ sudo cat /sys/kernel/debug/rknpu/version
RKNPU driver: v0.9.2

Berekening van het benodigde gedeelde geheugen

Frigate gebruikt gedeeld geheugen om videoframes te verwerken. De standaard shm-size van Docker is 64 MB. Voor een detectiescenario met twee 720p-camera's is de standaard 128 MB aan gedeeld geheugen voldoende. Kies de toewijzing van het gedeelde geheugen op basis van je daadwerkelijke situatie om de middelen optimaal te benutten.

We raden aan de officiële online calculator te gebruiken: https://docs.frigate.video/frigate/installation#calculating-required-shm-size

Bezoek de officiële site https://docs.frigate.video/frigate/installation#docker en selecteer de volgende opties om de installatie-instructies te verkrijgen.

Vul het gedeelte Storage Paths in volgens je werkelijke behoeften (je kunt sommige leeg laten indien niet van toepassing). Onder Other Options vul je de hierboven berekende geheugengrootte in; je kunt ook handmatig een wachtwoord instellen (optioneel).

Kopieer vervolgens de installatie-instructies:

yaml
services:
  frigate:
    container_name: frigate
    privileged: true # This may not be necessary for all setups
    restart: unless-stopped
    stop_grace_period: 30s # Allow enough time to shut down the various services
    image: ghcr.io/blakeblackshear/frigate:stable-rk
    shm_size: "512mb" # Update for your cameras based on SHM calculation
    security_opt:
      - apparmor=unconfined
      - systempaths=unconfined
    devices:
      - /dev/dma_heap # Rockchip DMA heap
      - /dev/rga # Rockchip RGA
      - /dev/mpp_service # Rockchip MPP service
      - /dev/dri # Intel/AMD GPU hardware acceleration
    volumes:
      - /etc/localtime:/etc/localtime:ro # Sync host time
      - /path/to/your/config:/config # Config file directory
      - /path/to/your/storage:/media/frigate # Recording storage directory
      - type: tmpfs # 1GB in-memory filesystem for recording segment storage
        target: /tmp/cache
        tmpfs:
          size: 1000000000
      - /sys/:/sys/:ro # Rockchip system info
    ports:
      - "8554:8554" # Access RTSP feeds from go2rtc
      - "8971:8971" # Authenticated UI and API access (default HTTPS)
      - "8555:8555" # WebRTC over TCP
      - "8555:8555/udp" # WebRTC over UDP
    environment:
      TZ: "Asia/Shanghai" # Timezone

Of je kunt de geteste en geverifieerde configuratie direct van GitHub halen: https://github.com/doublelf/RK_friigate_dockeryml

yaml
services:
  frigate:
    container_name: frigate
    privileged: true # Geprivilegieerde modus gebruiken
    restart: unless-stopped
    stop_grace_period: 30s # Geef de services voldoende tijd om af te sluiten
    image: docker.cnb.cool/frigate-cn/frigate:stable-rk # Dit is het adres van de binnenlandse mirror; het oorspronkelijke adres is ghcr.io/blakeblackshear/frigate:stable-rk
    shm_size: "512mb" # Werk deze waarde bij voor je camera's op basis van de bovenstaande berekening
    devices:
      - /dev/dri:/dev/dri # Voor GPU-hardwareversnelling
      - /dev/dma_heap # RockChip DMA heap
      - /dev/rga # RockChip RGA
      - /dev/mpp_service # RockChip MPP-service
    security_opt:
      - apparmor=unconfined
      - systempaths=unconfined
    volumes:
      - /etc/localtime:/etc/localtime:ro # Hosttijd synchroniseren
      - /home/seeed/frigate/config:/config # "/home/seeed/frigate/config" is het pad op je host waar je configuratiebestanden wilt opslaan
      - /home/seeed/frigate/video:/media/frigate # "/home/seeed/frigate/video" is het pad op je host waar je bewakingsbeelden wilt opslaan
      - type: tmpfs # Gebruik 1 GB RAM als tijdelijke opslag voor opnamesegmenten
        target: /tmp/cache
        tmpfs:
          size: 1000000000
      - /sys/:/sys/:ro # RockChip-systeeminformatie
    ports:
      - "8971:8971" # Standaardpoort van de Frigate-service, standaard HTTPS
      - "8554:8554" # RTSP-videostream
      - "8555:8555/tcp" # WebRTC over TCP
      - "8555:8555/udp" # WebRTC over UDP
    environment:
      FRIGATE_RTSP_PASSWORD: "password" # RTSP-wachtwoord; wijzig dit in het gewenste wachtwoord
      TZ: "Asia/Shanghai" # Instellen op tijdzone China +8
      HF_ENDPOINT: "https://huggingface.mirror.frigate-cn.video" # Binnenlandse Huggingface-mirror die wij aanbieden, voor versnelde downloads van enkele modellen die Frigate nodig heeft
      GITHUB_ENDPOINT: "https://github.mirror.frigate-cn.video" # Binnenlandse GitHub-mirror die wij aanbieden, voor versnelde downloads van enkele modellen die Frigate nodig heeft
      TF_KERAS_MOBILENET_V2_WEIGHTS_URL: https://cnb.cool/frigate-cn/mirrors/storage.googleapis/-/git/raw/main/tensorflow/keras-applications/mobilenet_v2/mobilenet_v2_weights_tf_dim_ordering_tf_kernels_0.35_224_no_top.h5 # Gewichtenbestand dat het classificatiemodel nodig heeft

Maak het bestand docker-compose.yml aan met de bovenstaande inhoud en voer het uit in de terminal:

bash
docker compose up -d

Wanneer de build is voltooid, is Frigate lokaal opgebouwd. Vervolgens kun je het configuratiebestand aanpassen en na het starten de werking in de backend controleren.

Officiële minimale config.yml

De volgende config.yml is een minimale werkende configuratie: 1 RTSP-camera + MQTT uitgeschakeld + standaard detector (CPU), die standaard wordt geleverd na de installatie van Frigate. Als je dit bestand niet hebt, moet je het handmatig aanmaken.

bash
mkdir -p ~/frigate/config
tee ~/frigate/config/config.yml > /dev/null << 'EOF'

mqtt:
  enabled: False

cameras:
  my_cam:
    ffmpeg:
      inputs:
        - path: rtsp://viewer:{FRIGATE_RTSP_PASSWORD}@<camera-ip>:554/stream
          roles:
            - detect
    detect:
      width: 1280
      height: 720

detect:
  fps: 5
EOF

Vervang <camera-ip> door het werkelijke IP van je camera. Sla dit bestand op in /path/to/your/config/config.yml (d.w.z. het in docker-compose gemapte /config).

Deze configuratie kan zo worden aangepast dat meerdere camera's tegelijk draaien. Je hoeft alleen maar meer structuren onder de bovenstaande configuratie toe te voegen. De volgende configuratie laat het starten van twee camera's met verschillende detailconfiguraties zien:

yaml
mqtt:
  enabled: false

face_recognition:
  enabled: true

go2rtc:
  streams:
    usb_camera:
      - ffmpeg:device?video=0&video_size=640x480#video=h264

cameras:
  usb_camera:
    ffmpeg:
      inputs:
        - path: rtsp://127.0.0.1:8554/usb_camera
          input_args: preset-rtsp-restream
          roles:
            - detect
            - record
    detect:
      width: 640
      height: 480
      enabled: false  # Detectie aanvankelijk uitschakelen om eerst de videostream te testen

    record:
      enabled: true
      continuous:
        days: 0 # Bij 0 worden standaard geen bewakingsvideo's zonder opgegeven type opgenomen
      alerts: # Hier wordt aangegeven dat alleen alarmvideo's worden opgenomen; de bovenstaande instelling wordt genegeerd
        retain:
          days: 30
          mode: motion

    zones:
      zone_b32f13ac:
        coordinates: 0.867,0.093,0.417,0.115,0.437,0.859,0.974,0.85
        loitering_time: 0
        friendly_name: Zone 1

  video_test:  # Geef deze testcamera een naam
    ffmpeg:
      inputs:
        - path: /home/seeed/frigate/test.mp4  # Pad naar je videobestand
          input_args: -re -stream_loop -1 -fflags +genpts
          roles:
            - detect
            - record
    detect:
      enabled: true
    record:
      enabled: false  # Het wordt aanbevolen om opnemen uit te schakelen tijdens het testen
    snapshots:
      enabled: false  # Het wordt aanbevolen om snapshots uit te schakelen tijdens het testen

version: 0.17-0

Start cameras, video_test ingesprongen; elk vertegenwoordigt de configuratie van één camera. ffmpeg geeft de algehele configuratie van de camera op, inclusief videobestandspad en toepassingsrollen; detect staat voor de objectdetectiefunctie, record voor de opnamefunctie en snapshots voor de snapshot-functie.

Opstarten en verifiëren

Volg de stappen:

bash
cd /path/to/your/frigate
sudo docker compose up -d

# Startlogboeken bekijken
sudo docker compose logs -f frigate

Als de logboeken INFO : Frigate started successfully. bevatten of de web-UI op 0.0.0.0:8971 luistert, is de start geslaagd.

Zoek in de logboeken op trefwoorden om de account en het wachtwoord op te halen:

bash
docker logs frigate 2>&1 | grep -Ei 'rtsp://|rtsps://|password|passwd|user|username|@'

Mogelijk zie je iets als rtsp://admin:password@192.168.1.100:554/stream.

bash
# Containerstatus verifiëren
sudo docker compose ps
# Verwacht wordt dat de Frigate-service de status running / healthy heeft
bash
# Browsertoegang
https://<your-host-ip>:8971

Log in met de account en het wachtwoord.

Na een geslaagde login zie je het volledige beeld en de in het eerdere config-bestand geconfigureerde cameragegevens:

Kies er één en klik om binnen te gaan. Klik vervolgens rechtsboven op de debug-interface om alle functies in het beeld te zien. Rechtsboven vind je de functies die in het config-bestand kunnen worden ingesteld om te bepalen of ze zijn inbegrepen en of ze vooraf worden gestart; links vind je de ingebouwde functies waarmee later onder andere grenzen kunnen worden ontworpen: