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 *.goEn 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.listdeb 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.listdeb 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.