Go2rtc - Le couteau suisse du streaming vidéo
Je viens de tomber sur un truc qui va changer votre vie si vous galérez avec le streaming vidéo. Vous savez, quand votre caméra de surveillance parle en RTSP mais que votre navigateur ne comprend que le WebRTC… Ou quand vous voulez utiliser une caméra HomeKit sans avoir un seul produit Apple chez vous ? Bah voilà, j’ai trouvé y’a un remède miracle et ça s’appelle go2rtc.
C’est un projet open source développé par AlexxIT, qui fait office de traducteur universel pour tous vos flux vidéo. En gros, peu importe le protocole d’entrée ou de sortie que vous voulez utiliser, go2rtc s’en occupe. En plus, c’est léger, ça tourne sur un Raspberry Pi, et ça ne demande quasi aucune config.
Car oui, le streaming vidéo dans le monde de la domotique, c’est un peu le far west. Chaque fabricant y va de son petit protocole propriétaire, et au final on se retrouve avec :
- Des caméras qui ne discutent qu’en RTSP
- Des navigateurs qui ne comprennent que le WebRTC
- Des applis mobiles qui veulent du HLS
- Et HomeKit qui fait sa princesse avec son protocole à lui
Du coup, on passe notre temps à chercher des solutions de contournement, à installer 50 logiciels différents, et au final ça marche une fois sur deux avec une latence de malade.
C’est là que go2rtc entre en scène. Cet outil fait office de proxy universel pour vos flux vidéo. Il prend n’importe quelle source (RTSP, RTMP, HTTP, USB, HomeKit…) et la convertit à la volée dans le format que vous voulez (WebRTC, HLS, MJPEG, MSE/MP4…).
Le truc vraiment cool, c’est que c’est juste un binaire, sans aucune dépendances. Vous le téléchargez, vous le lancez, et boom, ça marche. Pas besoin d’installer Java, Python ou je ne sais quelle autre usine à gaz car c’est du Go compilé, donc c’est rapide et léger.
Voici ce que go2rtc peut faire pour vous :
- Conversion de protocoles : RTSP vers WebRTC, RTMP vers HLS, etc.
- Latence ultra-faible : 0.5 secondes avec WebRTC (contre plusieurs secondes habituellement)
- Support HomeKit : Utilisez vos caméras HomeKit sans produits Apple
- Audio bidirectionnel : Sur les caméras compatibles (Tapo, certaines Dahua, etc.)
- Transcodage à la volée : Via FFmpeg si nécessaire
- Multi-sources : Mixez plusieurs flux en un seul
Pour l’installation de go2rtc, c’est vraiment du gâteau :
Option 1 : Le binaire tout simple
Allez sur la page des releases GitHub, téléchargez le binaire pour votre OS (Windows, Linux, macOS, ARM…), et lancez-le. C’est tout.
# Linux/Mac
chmod +x go2rtc_linux_amd64
./go2rtc_linux_amd64
# Windows
go2rtc_win64.exe
Option 2 : Docker pour les pros
Si vous êtes team Docker, c’est encore plus simple :
services:
go2rtc:
image: alexxit/go2rtc:master-hardware
network_mode: host # important pour WebRTC et HomeKit
privileged: true # seulement si vous voulez le transcodage hardware
restart: unless-stopped
Option 3 : Add-on Home Assistant
Pour les utilisateurs de Home Assistant, il y a un add-on officiel. Ajoutez le repo https://github.com/AlexxIT/hassio-addons
et installez go2rtc en deux clics.
Voilà pour l’install… Ensuite, la config de go2rtc tient dans un fichier YAML tout simple dont voici un exemple basique :
streams:
# Caméra salon avec RTSP
salon:
- rtsp://admin:[email protected]/stream1
# Caméra avec rotation de 90°
entree:
- ffmpeg:rtsp://admin:[email protected]/stream1#video=h264#rotate=90
# Caméra HomeKit (sans Apple !)
homekit_cam:
- homekit://AAAA-BBBB-CCCC-DDDD
Une fois configuré, vous accéderez alors à l’interface web sur http://localhost:1984/
et vous pourrez voir tous vos flux, les tester, et même générer des liens pour les intégrer ailleurs.
Voici quelques cas d’usages que j’ai trouvé cools :
-
Vous avez une vieille caméra IP qui ne parle qu’en RTSP ? Pas de souci. go2rtc la convertit en WebRTC et hop, vous pouvez la voir directement dans votre navigateur avec une latence minimale.
-
Sinon, vous pouvez utiliser des caméras HomeKit (comme l’Aqara G3) sans avoir un seul produit Apple. go2rtc fait le pont et vous permet de voir le flux dans n’importe quel navigateur ou application.
-
Sur certaines caméras (TP-Link Tapo, certaines Dahua avec ONVIF Profile T), vous pouvez même avoir l’audio bidirectionnel. Pratique pour parler au livreur depuis votre canapé !
-
Une source, plusieurs sorties. Votre caméra peut être vue en WebRTC sur votre navigateur, en RTSP sur votre NVR, et en HLS sur votre Apple TV. Tout ça en même temps.
Ce qui rend go2rtc vraiment génial, c’est l’attention aux détails :
- Interface web intégrée : Sur le port 1984, vous avez une interface pour tout gérer
- API complète : Pour intégrer go2rtc dans vos propres projets
- Support FFmpeg : Pour le transcodage quand nécessaire
- ngrok intégré : Pour accéder à vos caméras depuis l’extérieur
- Gestion des codecs intelligente : Négociation automatique des meilleurs codecs
Aussi, sur un Raspberry Pi 4, vous pouvez facilement gérer une dizaine de flux sans problème. La consommation CPU reste minimale tant que vous ne faites pas de transcodage.
Pour vous donner une idée :
- Simple proxy RTSP vers WebRTC : ~5% CPU sur un Pi 4
- Avec transcodage H265 vers H264 : ~40% CPU (mais utilisez le hardware si possible)
- Consommation RAM : environ 50MB par flux
Et surtout, go2rtc n’est pas juste un outil isolé. Non, non, il s’intègre parfaitement avec :
- Home Assistant : Via l’intégration WebRTC Camera
- Frigate : Pour l’enregistrement et la détection d’objets
- Scrypted : Comme source vidéo
- Node-RED : Pour l’automatisation
Bref, si vous voulez creuser le sujet, voici quelques ressources :
- Le GitHub officiel avec une doc complète
- Le wiki pour les configs avancées
- Les issues GitHub pour voir les problèmes connus
Et si vous êtes du genre bidouilleur, sachez que go2rtc expose une API complète donc vous pouvez donc l’intégrer dans vos propres projets, créer des interfaces custom, ou même contribuer au projet.
Allez, je vous laisse tester ça.