Construisez rapidement un projet NVR embarqué basé sur RK3576 / Docker / RKNN / Frigate.

Frigate est un NVR open source axé sur la détection d'objets par IA en local et en temps réel. Toute l'inférence s'exécute sur votre propre matériel — les flux caméra ne sont jamais téléchargés sur un serveur cloud — ce qui protège à la fois la vie privée et évite les frais d'abonnement mensuels coûteux à une IA cloud. Frigate prend en charge des zones de détection personnalisées et des zones de masquage, et s'intègre de manière transparente à Home Assistant pour intégrer les flux NVR dans les automatisations de la maison intelligente.
Ce guide montre comment déployer Frigate sur le reComputer RK3576 avec Docker Compose et exploiter la pile intégrée au RK3576 combinant Rockchip MPP (décodage matériel) + RGA (accélération 2D) + RKNN (inférence NPU) pour une analyse vidéo en temps réel à faible charge CPU.
Premiers pas
Dans ce guide, nous suivons le flux de déploiement officiel et montrons comment configurer un environnement Docker Frigate qui effectue la détection IA locale sur les flux RTSP des caméras sur le reComputer RK3576.
Prérequis selon la documentation officielle
Frigate recommande officiellement :
- Un système d'exploitation basé sur Debian comme meilleur hôte ;
- Les machines virtuelles ne sont pas recommandées (Proxmox, ESXi, Virtualbox) — certaines configurations Proxmox peuvent fonctionner, mais elles ajoutent de la complexité au passthrough Coral/GPU ;
- Windows n'est pas officiellement supporté (WSL / Virtualbox peuvent fonctionner, mais le passthrough GPU/Coral est difficile).
Pour les plateformes Rockchip, vérifiez la version de votre image système :
$ 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.2Calcul de la mémoire partagée requise
Frigate utilise la mémoire partagée pour traiter les images vidéo. La valeur shm-size par défaut fournie par Docker est de 64 Mo. Pour un scénario de détection avec deux caméras 720p, la taille de mémoire partagée par défaut de 128 Mo suffit. Choisissez l'allocation de mémoire partagée en fonction de votre situation réelle pour tirer le meilleur parti des ressources.
Nous recommandons d'utiliser le calculateur officiel en ligne : https://docs.frigate.video/frigate/installation#calculating-required-shm-size
Obtenir le lien de téléchargement
Visitez le site officiel https://docs.frigate.video/frigate/installation#docker et sélectionnez les options suivantes pour obtenir les instructions d'installation.

Remplissez la section Storage Paths selon vos besoins réels (vous pouvez en laisser certaines vides si elles ne sont pas nécessaires). Dans Other Options, indiquez la taille mémoire calculée ci-dessus ; vous pouvez aussi définir un mot de passe manuellement (facultatif).
Copiez ensuite les instructions d'installation :
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" # TimezoneVous pouvez aussi récupérer directement la configuration testée et validée depuis GitHub : https://github.com/doublelf/RK_friigate_dockeryml
services:
frigate:
container_name: frigate
privileged: true # Utiliser le mode privilégié
restart: unless-stopped
stop_grace_period: 30s # Laisser suffisamment de temps pour arrêter les services
image: docker.cnb.cool/frigate-cn/frigate:stable-rk # Il s'agit ici d'une URL de miroir nationale ; l'URL d'origine est ghcr.io/blakeblackshear/frigate:stable-rk
shm_size: "512mb" # Mettez à jour cette valeur pour vos caméras selon le calcul ci-dessus
devices:
- /dev/dri:/dev/dri # Pour l'accélération matérielle GPU
- /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 # Synchroniser l'heure de l'hôte
- /home/seeed/frigate/config:/config # "/home/seeed/frigate/config" est le chemin sur votre hôte où vous souhaitez stocker les fichiers de configuration
- /home/seeed/frigate/video:/media/frigate # "/home/seeed/frigate/video" est le chemin sur votre hôte où vous souhaitez stocker les vidéos de surveillance
- type: tmpfs # Utiliser 1 Go de RAM comme stockage temporaire pour les segments d'enregistrement
target: /tmp/cache
tmpfs:
size: 1000000000
- /sys/:/sys/:ro # Informations système RockChip
ports:
- "8971:8971" # Port par défaut du service Frigate, HTTPS par défaut
- "8554:8554" # Flux vidéo RTSP
- "8555:8555/tcp" # WebRTC sur TCP
- "8555:8555/udp" # WebRTC sur UDP
environment:
FRIGATE_RTSP_PASSWORD: "password" # Mot de passe RTSP ; veuillez le remplacer par celui souhaité
TZ: "Asia/Shanghai" # Définir le fuseau horaire de la Chine +8
HF_ENDPOINT: "https://huggingface.mirror.frigate-cn.video" # Miroir Huggingface national fourni par nos soins, pour accélérer le téléchargement de certains modèles requis par Frigate
GITHUB_ENDPOINT: "https://github.mirror.frigate-cn.video" # Miroir GitHub national fourni par nos soins, pour accélérer le téléchargement de certains modèles requis par Frigate
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 # Fichier de poids requis par le modèle de classificationCréez le fichier docker-compose.yml avec le contenu ci-dessus, puis exécutez dans le terminal :
docker compose up -dUne fois la construction terminée, Frigate est configuré localement. Vous pouvez ensuite modifier le fichier de configuration et, après le démarrage, vérifier le fonctionnement en arrière-plan.
config.yml minimale officielle
La config.yml suivante est une configuration minimale fonctionnelle : 1 caméra RTSP + MQTT désactivé + détecteur par défaut (CPU), fournie par défaut après l'installation de Frigate. Si vous ne disposez pas de ce fichier, vous devrez le créer manuellement.
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
EOFRemplacez <camera-ip> par l'adresse IP réelle de votre caméra. Enregistrez ce fichier dans /path/to/your/config/config.yml (c'est-à-dire le /config mappé dans docker-compose).
Cette configuration peut également être modifiée pour exécuter plusieurs caméras simultanément. Il suffit d'ajouter d'autres structures sous la configuration ci-dessus. La configuration suivante démarre deux caméras avec des configurations détaillées différentes :
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 # Désactiver la détection au départ, pour tester d'abord le flux vidéo
record:
enabled: true
continuous:
days: 0 # Lorsqu'il est défini sur 0, par défaut aucune vidéo de surveillance sans type spécifié n'est enregistrée
alerts: # Indique ici que seules les vidéos d'alarme sont enregistrées ; le réglage ci-dessus est ignoré
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: # Donnez un nom à cette caméra de test
ffmpeg:
inputs:
- path: /home/seeed/frigate/test.mp4 # Chemin de votre fichier vidéo
input_args: -re -stream_loop -1 -fflags +genpts
roles:
- detect
- record
detect:
enabled: true
record:
enabled: false # Il est recommandé de désactiver l'enregistrement pendant les tests
snapshots:
enabled: false # Il est recommandé de désactiver les instantanés pendant les tests
version: 0.17-0Démarrez cameras, video_test indentés, chacun représentant la configuration d'une caméra. ffmpeg indique la configuration globale de la caméra, y compris le chemin du fichier vidéo et les rôles d'application ; detect représente la fonction de détection d'objets, record la fonction d'enregistrement et snapshots la fonction d'instantanés.
Démarrage et vérification
Suivez le flux :
cd /path/to/your/frigate
sudo docker compose up -d
# Afficher les journaux de démarrage
sudo docker compose logs -f frigateSi les journaux contiennent INFO : Frigate started successfully. ou si l'UI Web écoute sur 0.0.0.0:8971, le démarrage a réussi.
Recherchez des mots-clés dans les journaux pour récupérer le compte et le mot de passe :
docker logs frigate 2>&1 | grep -Ei 'rtsp://|rtsps://|password|passwd|user|username|@'Vous pourriez voir quelque chose comme rtsp://admin:password@192.168.1.100:554/stream.
# Vérifier l'état du conteneur
sudo docker compose ps
# On attend que l'état du service Frigate soit running / healthy# Accès navigateur
https://<your-host-ip>:8971Connectez-vous avec le compte et le mot de passe.

Une fois connecté, vous verrez la vue complète ainsi que les informations des caméras configurées dans le fichier de configuration précédent :

Sélectionnez-en une et cliquez pour entrer, puis cliquez en haut à droite pour accéder à l'interface de débogage, où vous verrez toutes les fonctions à l'écran. En haut à droite se trouvent les fonctions pouvant être configurées dans le fichier de configuration pour déterminer si elles sont incluses et si elles sont préchargées ; à gauche se trouvent les fonctions intégrées permettant de concevoir ultérieurement des frontières, etc. :
