Comment Afficher une Caméra RTSP dans un Navigateur Web
Vous avez une caméra IP qui diffuse via RTSP, mais vous voulez la voir dans votre navigateur web ? C'est un défi courant car les navigateurs modernes ne supportent pas nativement RTSP. Dans ce guide complet, nous allons explorer exactement comment convertir et afficher des flux RTSP directement dans n'importe quel navigateur.
Le Problème : Les Navigateurs Ne Supportent Pas RTSP
RTSP (Real-Time Streaming Protocol) est le protocole standard utilisé par les caméras IP pour la diffusion vidéo. Presque toutes les caméras de sécurité (Hikvision, Dahua, Reolink, Amcrest, Axis) utilisent RTSP.
Cependant, aucun navigateur web moderne ne supporte RTSP :
❌ Chrome - Support RTSP supprimé ❌ Firefox - Support RTSP supprimé ❌ Safari - Support RTSP supprimé ❌ Edge - Support RTSP supprimé
Pourquoi ? Raisons de sécurité, complexité de maintenance et manque de demande des utilisateurs.
La Solution : Convertir RTSP en Formats Compatibles avec le Navigateur
Pour afficher RTSP dans un navigateur, vous devez le convertir en un format compatible avec le navigateur :
Option 1 : WebRTC (Recommandé)
- ✅ Ultra faible latence (~100-500ms)
- ✅ Support natif du navigateur (pas de plugins)
- ✅ Bidirectionnel (audio dans les deux sens)
- ❌ Nécessite un serveur de signalisation
Option 2 : HLS (HTTP Live Streaming)
- ✅ Large compatibilité (fonctionne partout)
- ✅ Évolutif (utilise des CDN)
- ❌ Latence élevée (5-20 secondes)
- ❌ Nécessite un serveur de transcodage
Option 3 : MJPEG
- ✅ Simple (images JPEG basiques)
- ✅ Pas de serveur de signalisation
- ❌ Qualité inférieure
- ❌ Bande passante très élevée
Verdict : WebRTC est le meilleur choix pour la surveillance en temps réel. HLS est meilleur pour la visualisation à la demande ou lorsque la latence n'est pas critique.
Méthode 1 : Utiliser WebRTSP.io (Le Plus Simple)
La façon la plus simple d'afficher du RTSP dans un navigateur est d'utiliser un service de conversion comme WebRTSP.io.
Étapes :
1. Inscrivez-vous sur WebRTSP.io
https://app.webrtsp.io/signup
2. Ajoutez Votre URL RTSP
Format de base :
rtsp://username:password@camera_ip:554/stream_path
Exemple Hikvision :
rtsp://admin:password123@192.168.1.100:554/Streaming/Channels/101
3. Obtenez le Code d'Intégration
WebRTSP génère un code d'intégration simple :
<iframe
src="https://player.webrtsp.io/embed/YOUR_STREAM_ID"
width="640"
height="480"
frameborder="0"
allowfullscreen>
</iframe>
4. Intégrez dans Votre Page Web
Collez le code d'intégration dans votre HTML et voilà ! Votre caméra RTSP diffuse maintenant dans le navigateur.
Avantages de WebRTSP.io :
- ✅ Pas de serveur à gérer
- ✅ Faible latence (WebRTC)
- ✅ Évolutif automatiquement
- ✅ Support SSL/TLS
- ✅ Fonctionne mobile et desktop
Méthode 2 : Auto-Hébergement avec FFmpeg et WebRTC
Si vous préférez héberger votre propre solution, vous pouvez utiliser FFmpeg pour transcoder RTSP en WebRTC.
Ce Dont Vous Avez Besoin :
- Serveur Linux (VPS ou local)
- FFmpeg installé
- Serveur de signalisation WebRTC
- Connaissance basique de ligne de commande
Architecture :
Caméra IP (RTSP)
↓
FFmpeg (Transcodage)
↓
Serveur WebRTC (Signalisation)
↓
Navigateur (WebRTC Player)
Guide Étape par Étape :
1. Installer FFmpeg
# Ubuntu/Debian
sudo apt update
sudo apt install ffmpeg
# Vérifier l'installation
ffmpeg -version
2. Tester Votre Flux RTSP
ffmpeg -i "rtsp://admin:password@192.168.1.100:554/stream1" \
-frames:v 1 test.jpg
Si cela crée une image test.jpg, votre flux RTSP fonctionne.
3. Configurer le Serveur WebRTC
Nous utiliserons Janus WebRTC Gateway (open source) :
# Cloner le dépôt
git clone https://github.com/meetecho/janus-gateway.git
cd janus-gateway
# Installer les dépendances
sudo apt install libmicrohttpd-dev libjansson-dev \
libssl-dev libsrtp2-dev libsofia-sip-ua-dev \
libglib2.0-dev libopus-dev libogg-dev libcurl4-openssl-dev
# Construire et installer
./autogen.sh
./configure --prefix=/opt/janus
make
sudo make install
4. Diffuser RTSP vers WebRTC
ffmpeg -re -i "rtsp://admin:password@192.168.1.100:554/stream1" \
-vcodec libx264 -preset ultrafast -tune zerolatency \
-f rtp rtp://localhost:5004
5. Créer un Player HTML
<!DOCTYPE html>
<html>
<head>
<title>Visualiseur de Caméra RTSP</title>
</head>
<body>
<h1>Flux Caméra En Direct</h1>
<video id="video" autoplay playsinline controls width="640" height="480"></video>
<script>
// Code de configuration WebRTC ici
const video = document.getElementById('video');
// Se connecter au serveur de signalisation
const pc = new RTCPeerConnection({
iceServers: [{ urls: 'stun:stun.l.google.com:19302' }]
});
// Gérer le flux entrant
pc.ontrack = (event) => {
video.srcObject = event.streams[0];
};
// Créer une offre et se connecter
// (code de signalisation simplifié)
</script>
</body>
</html>
Note : Il s'agit d'une implémentation simplifiée. Une configuration de production nécessite une gestion appropriée de la signalisation, de la gestion des erreurs et de la sécurité.
Méthode 3 : Auto-Hébergement avec HLS
HLS est plus simple à implémenter mais a une latence plus élevée.
Étapes :
1. Convertir RTSP en HLS avec FFmpeg
ffmpeg -i "rtsp://admin:password@192.168.1.100:554/stream1" \
-c:v libx264 -preset veryfast -tune zerolatency \
-c:a aac -b:a 128k \
-f hls \
-hls_time 2 \
-hls_list_size 3 \
-hls_flags delete_segments \
/var/www/html/stream/playlist.m3u8
Cela crée :
playlist.m3u8- Fichier de playlistsegment0.ts,segment1.ts, etc. - Segments vidéo
2. Servir les Fichiers HLS
Configurer Nginx pour servir les fichiers HLS :
server {
listen 80;
server_name your-domain.com;
location /stream/ {
root /var/www/html;
add_header Cache-Control no-cache;
add_header Access-Control-Allow-Origin *;
}
}
3. Créer un Player HTML
<!DOCTYPE html>
<html>
<head>
<title>Visualiseur HLS</title>
<script src="https://cdn.jsdelivr.net/npm/hls.js@latest"></script>
</head>
<body>
<video id="video" controls width="640" height="480"></video>
<script>
const video = document.getElementById('video');
const videoSrc = 'http://your-domain.com/stream/playlist.m3u8';
if (Hls.isSupported()) {
const hls = new Hls();
hls.loadSource(videoSrc);
hls.attachMedia(video);
} else if (video.canPlayType('application/vnd.apple.mpegurl')) {
// Support natif (Safari)
video.src = videoSrc;
}
</script>
</body>
</html>
Comparaison des Méthodes
| Méthode | Latence | Difficulté | Coût | Meilleures Pour |
|---|---|---|---|---|
| WebRTSP.io | Très faible | Facile | Payant | Déploiement rapide, production |
| Auto-hébergé WebRTC | Très faible | Difficile | Serveur | Solutions personnalisées |
| Auto-hébergé HLS | Élevée | Moyen | Serveur | Évolutivité, CDN |
Dépannage des Problèmes Courants
Problème 1 : "Le flux ne se charge pas"
Solutions :
- Vérifiez que l'URL RTSP fonctionne dans VLC
- Vérifiez les identifiants (nom d'utilisateur/mot de passe)
- Assurez-vous que la caméra est accessible sur le réseau
- Vérifiez les règles du pare-feu (port 554 pour RTSP)
Problème 2 : "Latence élevée"
Solutions :
- Utilisez WebRTC au lieu de HLS
- Réduisez la taille
hls_time(pour HLS) - Utilisez un serveur plus proche de la caméra
- Vérifiez la vitesse du réseau/bande passante
Problème 3 : "Le flux se déconnecte"
Solutions :
- Ajoutez une logique de reconnexion automatique
- Vérifiez la stabilité du réseau
- Augmentez les délais d'attente FFmpeg
- Utilisez un watchdog pour redémarrer les processus bloqués
Problème 4 : "Erreurs CORS dans le navigateur"
Solutions :
- Ajoutez des en-têtes CORS appropriés sur le serveur
- Utilisez un proxy pour ajouter les en-têtes CORS
- Assurez-vous que le serveur et le client sont sur le même domaine
Considérations de Sécurité
1. N'exposez Jamais les Identifiants RTSP
❌ Mauvais :
<video src="rtsp://admin:password@192.168.1.100/stream"></video>
✅ Bon :
<iframe src="https://your-secure-proxy.com/stream/abc123"></iframe>
2. Utilisez HTTPS/WSS
- Diffusez toujours via HTTPS
- Utilisez des WebSockets sécurisés (WSS)
- Les navigateurs bloquent le contenu HTTP mixte
3. Implémentez l'Authentification
- Authentification basée sur des jetons
- Jetons à expiration
- Contrôle d'accès basé sur les rôles
4. Limitez le Débit
- Prévenez l'abus
- Limitez les connexions simultanées
- Surveillez l'utilisation de la bande passante
Conclusion
Afficher des flux RTSP dans un navigateur web nécessite une conversion vers des formats compatibles avec les navigateurs comme WebRTC ou HLS. Bien que l'auto-hébergement soit possible, l'utilisation d'un service géré comme WebRTSP.io peut vous faire gagner beaucoup de temps et de complexité.
Pour commencer rapidement :
- Trouvez votre URL RTSP (testez dans VLC)
- Choisissez une méthode de conversion (WebRTSP.io recommandé)
- Intégrez le lecteur dans votre page web
- Ajoutez une sécurité appropriée
Prochaines Étapes
- Comprendre le protocole RTSP
- Vérifier le support RTSP de votre caméra
- Essayer WebRTSP.io gratuitement
Prêt à diffuser vos caméras RTSP sur le web ? Essayez WebRTSP.io pour une conversion instantanée de RTSP vers WebRTC.