tutorial8 min read

Comment Afficher une Caméra RTSP dans un Navigateur Web

Guide complet pour convertir et afficher des flux RTSP de caméras de sécurité directement dans n'importe quel navigateur web en utilisant WebRTC et HLS. Sans plugins requis.

WebRTSP Team
WebRTSP Team
22 février 2026
Comment Afficher une Caméra RTSP dans un Navigateur Web

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 playlist
  • segment0.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éthodeLatenceDifficultéCoûtMeilleures Pour
WebRTSP.ioTrès faibleFacilePayantDéploiement rapide, production
Auto-hébergé WebRTCTrès faibleDifficileServeurSolutions personnalisées
Auto-hébergé HLSÉlevéeMoyenServeurÉvolutivité, CDN

Dépannage des Problèmes Courants

Problème 1 : "Le flux ne se charge pas"

Solutions :

  1. Vérifiez que l'URL RTSP fonctionne dans VLC
  2. Vérifiez les identifiants (nom d'utilisateur/mot de passe)
  3. Assurez-vous que la caméra est accessible sur le réseau
  4. Vérifiez les règles du pare-feu (port 554 pour RTSP)

Problème 2 : "Latence élevée"

Solutions :

  1. Utilisez WebRTC au lieu de HLS
  2. Réduisez la taille hls_time (pour HLS)
  3. Utilisez un serveur plus proche de la caméra
  4. Vérifiez la vitesse du réseau/bande passante

Problème 3 : "Le flux se déconnecte"

Solutions :

  1. Ajoutez une logique de reconnexion automatique
  2. Vérifiez la stabilité du réseau
  3. Augmentez les délais d'attente FFmpeg
  4. Utilisez un watchdog pour redémarrer les processus bloqués

Problème 4 : "Erreurs CORS dans le navigateur"

Solutions :

  1. Ajoutez des en-têtes CORS appropriés sur le serveur
  2. Utilisez un proxy pour ajouter les en-têtes CORS
  3. 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 :

  1. Trouvez votre URL RTSP (testez dans VLC)
  2. Choisissez une méthode de conversion (WebRTSP.io recommandé)
  3. Intégrez le lecteur dans votre page web
  4. Ajoutez une sécurité appropriée

Prochaines Étapes


Prêt à diffuser vos caméras RTSP sur le web ? Essayez WebRTSP.io pour une conversion instantanée de RTSP vers WebRTC.