Salut,
Perso je me suis monté un portail en nodejs. J'enregistre le flux rtsp avec ffmpeg en HD sur mon serveur. Pour la vision en temps réel, mes caméras supportent le onvif, l'avantage et qu'il ya un mode pour extraire un screen shot en jpeg. En javascript, tu peu rafraichir la source de ton image a chaque chargement de source etc... Dit comme ça c un peu fouilli mais ça fonctionne parfaitement...
Exemple d'enregistrement du flux : /usr/local/bin/ffmpeg -i rtsp://192.168.x.x:554/user=xxxx&password=xxxx&channel=0&stream=0.sdp -y -loglevel warning -analyzeduration 60M -probesize 60M -stimeout 2000 -c copy -map 0 -fflags igndts -reset_timestamps 1 -an -rtsp_transport tcp -f segment -segment_atclocktime 1 -segment_time 300 -segment_format mp4 -metadata title="CamPorte 27-06-2019 00:00" -strftime 1 -use_localtime_mkdir 1 /data/video/CamPorte/%Y-%m-%d/%Y-%m-%d_%H.%M.%S.mp4
/usr/local/bin/ffmpeg -i rtsp://192.168.x.x:554/stream0?username=xxx&password=xxx -y -loglevel warning -analyzeduration 60M -probesize 60M -stimeout 2000 -c copy -map 0 -fflags igndts -reset_timestamps 1 -an -rtsp_transport tcp -f segment -segment_atclocktime 1 -segment_time 300 -segment_format mp4 -metadata title="CamMaison 27-06-2019 03:27" -strftime 1 -use_localtime_mkdir 1 /data/video/CamMaison/%Y-%m-%d/%Y-%m-%d_%H.%M.%S.mp4
Apres j'ai 2 scripts qui font des capture de frame de chaque vidéo enregistré pour video les enregistrements etc...
Sinon tu a shinobi, mais consomme pas mal de ressource serveur. https://shinobi.video/