Sources : * https://github.com/deepch/RTSPtoWeb/blob/master/README.md * https://medium.com/@carlos.alvaro.g/streaming-from-an-ip-camera-to-a-website-through-rtsp-using-aws-0ca9f274ad3f * https://www.videosdk.live/developer-hub/media-server/rtsptoweb-webrtc ====== Serveur RTSPtoWeb (stream de flux RTSP sur le web) ====== On commence par installer go : apt-get install go Puis par télécharger le code source : git clone https://github.com/deepch/RTSPtoWeb On se rend dans le répertoire et on teste le lancement : cd RTSPtoWeb/ GO111MODULE=on go run *.go En cas d'erreur "build cache is required, but could not be located: GOCACHE is not defined and neither $XDG_CACHE_HOME nor $HOME are defined" : Cela provient d'un version trop ancienne de go sur Debian. Il faut donc passer par les dépôts bookworm-backports pour avoir une version plus récente de go. On ajoute bookworm-backports au sourcelist : nano /etc/apt/sources.list deb http://deb.debian.org/debian bookworm-backports main Mettre à jour les dépôts : apt-get update Installer désinstaller l'ancienne version de go, et réinstaller celle des backports : sudo remove go && sudo apt install -t bookworm-backports golang-go Puis on peut commenter la ligne afin de ne plus utiliser les backports : nano /etc/apt/sources.list deb http://deb.debian.org/debian bookworm-backports main Et refaire un update des dépôts : apt-get update On configure le serveur : sudo nano config.json Par exemple : { "server": { "debug": true, "log_level": "info", "http_debug": false, "http_demo": true, "http_dir": "web", "http_login": "$TONLOGIN", "http_password": "$TONPASS", "http_port": ":8083", "https": true, "https_auto_tls": false, "https_auto_tls_name": "", "https_cert": "/etc/letsencrypt/live/$TONDNS/cert.pem", "https_key": "/etc/letsencrypt/live/$TONDNS/privkey.pem", "https_port": ":8084", "ice_servers": ["stun:stun.l.google.com:19302"], "log_level": "debug", "rtsp_port": ":5541", "token": { "backend": "http://127.0.0.1/test.php" }, "defaults": { "audio": true } }, "streams": { "Cam1": { "name": "Cam1", "channels": { "0": { "url": "rtsp://$TONLOGIN:$TONPASS@$TONIP:554/Streaming/Channels/102", "debug": false, "on_demand": true, "audio": true, "status": 0 } } }, "Cam2": { "name": "Cam2", "channels": { "0": { "name": "ch1", "url": "rtsp://$TONIP:554/11", "debug": false, "on_demand": true, "audio": true, "status": 0 } } } }, "channel_defaults": { "on_demand": true } } On teste si tout fonctionne : GO111MODULE=on go run *.go Et lancer un navigateur et se rendre sur https://$TONDNS:8084 Si tout fonctionne, on peut lancer le build de l'application : sudo GO111MODULE=on go build -o /$TONPATH/RTSPtoWeb/RTSPtoWeb.bin Puis créer le service RTSP : sudo nano /etc/systemd/system/rtsp.service [Unit] Description=Service RTSPtoWebRTC [Service] Type=simple Restart=always ExecStart= /$TONPATH/RTSPtoWeb/RTSPtoWeb.bin WorkingDirectory=/$TONPATH/RTSPtoWeb [Install] WantedBy=multi-user.target On recharge les services, on lance le service RTSP et on vérifie son status : sudo systemctl daemon-reload sudo systemctl start rtsp.service sudo systemctl status rtsp.service Une fois que c'est testé via le navigateur, on l'ajoute au lancement lors du boot : sudo systemctl enable rtsp.service Exemple : https://$TONDNS:8084 ====== Intégrer les vidéos dans une page html ====== Source : * https://stackoverflow.com/questions/19782389/playing-m3u8-files-with-html-video-tag * https://videojs.com/getting-started/#videojs-cdn * https://github.com/videojs/http-streaming?tab=readme-ov-file#initialization * https://unpkg.com/browse/@videojs/http-streaming@3.15.0/dist/videojs-http-streaming.min.js * https://github.com/videojs/http-streaming?tab=readme-ov-file#installation Pour l'ajouter dans une page Web, il faut utiliser videojs ( https://github.com/videojs/http-streaming?tab=readme-ov-file#initialization ). Fichiers : {{ :linux:installation:videojs_js_et_css.7z |}} Exemple dans une page PHP : Titre width='540' height='360' class="vjs-default-skin" controls autoplay muted style="margin-bottom:10px;"> type="application/x-mpegURL">   ====== Ajouter une nouvelle Cam ====== Editer la config de RTSPtoWeb : nano /$TONPATH/RTSPtoWeb/config.json Ajouter dans les streams : ,"NomDeLaCam": { "name": "NomDeLaCam", "channels": { "0": { "name": "ch1", "url": "rtsp://IPDELACAM:554/11", "debug": false, "on_demand": true, "audio": true, "status": 0 } } } Redémarrer le service rtsp : sudo systemctl restart rtsp.service Vérifier son statut : sudo systemctl status rtsp.service Si tout est OK, la nouvelle cam est disponible par le gestionnaire de RTSPtoWeb.