Transformer une caméra Raspberry Pi en caméra IP RTSP avec MediaMTX
Réutilisez une caméra CSI OV5647 et un Raspberry Pi 3B+ pour créer un flux RTSP protégé par identifiant et mot de passe, le tester dans VLC et le rendre disponible pour une utilisation domotique.
Préparer la carte SD
Sur le PC Windows, installez Raspberry Pi Imager depuis le site officiel, puis écrivez Raspberry Pi OS Lite 64 bits sur la carte SD. Cette opération efface les données déjà présentes sur la carte.
| Paramètre | Valeur |
|---|---|
| Appareil | Raspberry Pi 3 |
| Système | Raspberry Pi OS Lite (64-bit) |
| Nom du Raspberry Pi | SurvRaspCam |
| Utilisateur | benoit |
| Mot de passe Linux | Choisir un mot de passe personnel |
| SSH | Activé |
| Réseau | Ethernet ou Wi-Fi préparé dans Imager |
Insérez la carte, reliez la caméra au connecteur CSI avec la nappe dans le bon sens, puis démarrez le Raspberry Pi.
Se connecter en SSH et passer en root
Depuis le terminal Windows, connectez-vous au Raspberry Pi. Si le nom local ne fonctionne pas, remplacez-le par l’adresse IP attribuée par le routeur.
ssh benoit@SurvRaspCam.local
Définir un mot de passe root (facultatif)
Cette opération n’est pas nécessaire pour passer en root via sudo. Si vous souhaitez définir un mot de passe au compte root, exécutez la commande depuis la session benoit :
sudo passwd root
Saisissez le nouveau mot de passe, puis confirmez-le. Ensuite, passez en root :
sudo -i
sudo devant les commandes suivantes. Pour la sécurité, conservez la connexion SSH avec l’utilisateur benoit, puis passez en root ; n’activez pas une connexion SSH directe en root.Mettre à jour le système
Mettez à jour les listes de paquets, installez les mises à jour, puis redémarrez.
apt update
apt full-upgrade -y
reboot
Après le redémarrage, reconnectez-vous et repassez en root :
ssh benoit@SurvRaspCam.local
sudo -i
Installez les outils utilisés dans les étapes suivantes :
apt install -y curl tar ca-certificates openssl rpicam-apps
Vérifier la caméra CSI
Vérifiez que Raspberry Pi OS reconnaît le capteur OV5647 avant d’installer le serveur vidéo.
rpicam-hello --list-cameras
La liste doit faire apparaître ov5647. Lancez ensuite une capture de dix secondes :
rpicam-vid -t 10000 \
--width 1280 \
--height 720 \
--framerate 15 \
--codec h264 \
-o /tmp/test-camera.h264
Vérifiez la création du fichier puis supprimez le test temporaire, devenu inutile :
ls -lh /tmp/test-camera.h264
rm /tmp/test-camera.h264
Installer MediaMTX
Nous utilisons MediaMTX v1.21.2 en ARM64, testé sur le Raspberry Pi 3B+. Le programme est installé directement dans son répertoire définitif, sans copie supplémentaire.
mkdir -p /opt/mediamtx
Téléchargez l’archive officielle puis extrayez uniquement l’exécutable :
curl -fL \
-o /tmp/mediamtx.tar.gz \
https://github.com/bluenviron/mediamtx/releases/download/v1.21.2/mediamtx_v1.21.2_linux_arm64.tar.gz
tar -xzf /tmp/mediamtx.tar.gz \
-C /opt/mediamtx \
mediamtx
rm /tmp/mediamtx.tar.gz
Vérifiez la version :
/opt/mediamtx/mediamtx --version
Le résultat attendu est v1.21.2.
Créer la configuration RTSP avec mot de passe
Le fichier de configuration est créé directement à son emplacement définitif. Le compte camera_ha n’a que le droit de lire le chemin camera.
Créez le fichier en utilisant ce bloc cat :
cat > /opt/mediamtx/mediamtx.yml <<'EOF'
logLevel: info
# Serveur RTSP
rtsp: true
rtspAddress: :8554
rtspTransports: [tcp]
rtspAuthMethods: [basic]
# Authentification interne
# Seul camera_ha a une autorisation de lecture sur le chemin camera
authMethod: internal
authInternalUsers:
- user: camera_ha
pass: "solairedomotique"
ips: []
permissions:
- action: read
path: camera
# Protocoles inutilisés désactivés
rtmp: false
hls: false
webrtc: false
srt: false
moq: false
api: false
metrics: false
pprof: false
playback: false
# Caméra CSI Raspberry Pi
paths:
camera:
source: rpiCamera
rpiCameraCamID: 0
rpiCameraWidth: 1280
rpiCameraHeight: 720
rpiCameraFPS: 15
rpiCameraBitrate: 2000000
EOF
chmod 600 /opt/mediamtx/mediamtx.yml
solairedomotique est volontairement celui demandé pour ce tutoriel, mais il est facile à deviner. Sur une installation réelle, choisissez un mot de passe long et unique. L’authentification RTSP Basic ne chiffre pas le transport des identifiants : gardez le port 8554 sur le réseau local et ne l’exposez pas directement à Internet.Valider la configuration et tester dans VLC
Contrôlez le fichier avant de lancer MediaMTX. Cette commande valide la configuration sans démarrer le flux.
/opt/mediamtx/mediamtx \
--validate-conf=/opt/mediamtx/mediamtx.yml
Si aucune erreur n’est signalée, lancez MediaMTX en mode manuel :
/opt/mediamtx/mediamtx /opt/mediamtx/mediamtx.yml
Dans les journaux, recherchez l’initialisation de la caméra et la disponibilité du flux H.264. Laissez ce terminal ouvert pendant le test VLC.
Adresse du flux
Dans VLC, choisissez Média → Ouvrir un flux réseau et utilisez l’adresse RTSP du Raspberry Pi. Exemple : l’adresse Wi-Fi utilisée lors de notre ancien test était 192.168.1.44. Après réinstallation, remplacez cet exemple par l’adresse actuelle de votre Raspberry Pi.
Lorsque VLC le demande, saisissez :
- Identifiant :
camera_ha - Mot de passe :
solairedomotique - Transport : TCP
Selon la fenêtre d’authentification de VLC, vous pouvez également tester l’URL complète :
Testez aussi l’adresse sans identifiants : elle doit être refusée. Lorsque le flux fonctionne avec les identifiants, arrêtez le serveur manuel avec Ctrl+C.
Créer le démarrage automatique avec systemd
Le service est écrit directement à son emplacement définitif avec cat. Il n’y a ni éditeur à ouvrir ni fichier intermédiaire à recopier.
cat > /etc/systemd/system/mediamtx.service <<'EOF'
[Unit]
Description=MediaMTX - Camera IP Raspberry Pi
Wants=network-online.target
After=network-online.target
[Service]
Type=simple
User=root
WorkingDirectory=/opt/mediamtx
ExecStart=/opt/mediamtx/mediamtx /opt/mediamtx/mediamtx.yml
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
Rechargez systemd, activez le service au démarrage et démarrez-le :
systemctl daemon-reload
systemctl enable --now mediamtx
systemctl status mediamtx --no-pager
Le statut attendu contient Active: active (running). Le service est configuré pour tourner en root, comme dans ce tutoriel ; cela simplifie l’accès à la caméra mais accorde davantage de privilèges au programme. À ce stade, le serveur RTSP et le démarrage automatique sont configurés ; l’intégration détaillée dans Home Assistant n’est pas traitée dans cette vidéo. Pour diagnostiquer un éventuel échec :
journalctl -u mediamtx -n 50 --no-pager
🧰 Dépannage rapide
Le service ne démarre pas
Affichez ses derniers journaux :
journalctl -u mediamtx -n 50 --no-pager
Vérifier le statut du service
systemctl status mediamtx --no-pager
Vérifier que le serveur écoute sur le port RTSP
ss -lntp | grep 8554
Vérifier les permissions et la configuration
ls -l /opt/mediamtx/mediamtx.yml
/opt/mediamtx/mediamtx --validate-conf=/opt/mediamtx/mediamtx.yml
📁 Fichiers installés
| Fichier / chemin | Rôle |
|---|---|
/opt/mediamtx/mediamtx | Programme MediaMTX |
/opt/mediamtx/mediamtx.yml | Configuration caméra et authentification |
/etc/systemd/system/mediamtx.service | Démarrage automatique |
Le programme, sa configuration et le service sont installés directement à leur emplacement final. Aucune copie de sauvegarde n’est créée par ce tutoriel.