Hallo Leute,
ich habe mehrere Reolink-Kameras im Haus und diese geben leider keinen MJPEG-Stream aus, sondern "nur" einen RTSP-Stream bzw. natürlich auch einen Snapshot. Den Snapshot stelle ich schon immer im Edomi dar und das reicht auch für die meisten Dinge. Der Wunsch den RTSP-Stream live darzustellen war aber schon immer da und ich habe mehrere Wochen daran rumgebastelt und alles mögliche versucht mit FFMPEG-Kodierung, VLC-Transcoding,MotionEye, etc. und hatte bei allen Lösungen kein Ergebnis mit dem ich wirklich leben konnte.
Nun habe ich aber eine Lösung gefunden, die für mich richtig gut funktioniert und ich dachte mir, dass ich sie euch ja mal vorstellen könnte. In 1-2 anderen Threads war ja auch schon die Frage danach. Und im Grunde ist es damit sogar recht einfach.
Es geht um das Projekt "RTSPtoWeb". Hiermit kann man in nur wenigen Befehlen (sind auf der Webseite zu sehen) einen Converter installieren, der den RTSP-Stream nimmt und ihn in Web-Formate umwandelt. Ich habe das ganze unter einem eigenen Proxmox-Container laufen, da ich das getrennt vom Edomi haben wollte. Bin auch nicht ganz sicher, ob das direkt auf dem Edomi laufen sollte, da RTSPtoWeb eine Weboberfläche hat und ich nicht getestet habe, wie gut sich der mit dem Edomi-Webserver dann verträgt.
Grundsätzlich kann man über das Dashboard von RTSPtoWeb seine Streams einrichten und dann auch die verschiedenen Ausgabearten direkt testen. Da Edomi selbst nur MJPEG anbietet, habe ich dann einfach eine kleine Webseite pro Kamera erstellt, die ich dann im Edomi in einem IFRAME aufrufe.
Beispiel:
Ich habe festgestellt, dass jeder Browser auf jedem Berät sich etwas anders verhält, weshalb man etwas gucken muss, welche Streaming-Technologie hier am Besten funktioniert. RTSPtoWeb hat folgende Möglichkeiten für die Ausgabe:
MSE
WebRTC
HLS
HLSLL
und noch 2-3 weitere
Auf meinen Androids (FireHD und Samsung) mit Fully funktioniert die MSE-Variante mit abstand am Besten. Keine Ruckler/Aussetzer und wenn WLAN mal kurz weg ist, dann läuft das auch schnell weiter. Auf dem gleichen Samsung-Tablet mit WallPanel als Browser war es WebRTC.
Vorteile:
- Verschiedene Ausgabemöglichkeiten mit Beispiele
- Konvertierung on Demand (Es wird wirklich nur umgewandelt, wenn ein Client etwas braucht)
- Niedrige Prozessorlast gegenüber MotionEye, VLC, etc....
Nachteile:
- Eventuell auf eigenem Server/Instanz (nicht getestet)
- Auf den Androiden kann immer nur ein Stream angezeigt werden. Ich habe es bisher nicht geschafft alle Kameras auf einer Seite anzuzeigen. Ich denke aber, dass das ein Android-Problem ist. Hier gucke ich weiter.
Vielleicht ist es ja wirklich für irgendwen von euch auch interessant und er kann damit seinen Livestream anzeigen.
Viele Grüße
Dustin
ich habe mehrere Reolink-Kameras im Haus und diese geben leider keinen MJPEG-Stream aus, sondern "nur" einen RTSP-Stream bzw. natürlich auch einen Snapshot. Den Snapshot stelle ich schon immer im Edomi dar und das reicht auch für die meisten Dinge. Der Wunsch den RTSP-Stream live darzustellen war aber schon immer da und ich habe mehrere Wochen daran rumgebastelt und alles mögliche versucht mit FFMPEG-Kodierung, VLC-Transcoding,MotionEye, etc. und hatte bei allen Lösungen kein Ergebnis mit dem ich wirklich leben konnte.
Nun habe ich aber eine Lösung gefunden, die für mich richtig gut funktioniert und ich dachte mir, dass ich sie euch ja mal vorstellen könnte. In 1-2 anderen Threads war ja auch schon die Frage danach. Und im Grunde ist es damit sogar recht einfach.
Es geht um das Projekt "RTSPtoWeb". Hiermit kann man in nur wenigen Befehlen (sind auf der Webseite zu sehen) einen Converter installieren, der den RTSP-Stream nimmt und ihn in Web-Formate umwandelt. Ich habe das ganze unter einem eigenen Proxmox-Container laufen, da ich das getrennt vom Edomi haben wollte. Bin auch nicht ganz sicher, ob das direkt auf dem Edomi laufen sollte, da RTSPtoWeb eine Weboberfläche hat und ich nicht getestet habe, wie gut sich der mit dem Edomi-Webserver dann verträgt.
Grundsätzlich kann man über das Dashboard von RTSPtoWeb seine Streams einrichten und dann auch die verschiedenen Ausgabearten direkt testen. Da Edomi selbst nur MJPEG anbietet, habe ich dann einfach eine kleine Webseite pro Kamera erstellt, die ich dann im Edomi in einem IFRAME aufrufe.
Beispiel:
HTML-Code:
<!doctype html> <html lang="de"> <head> <meta charset="utf-8"> <title>Kamera</title> <style> * { margin: 0; padding: 0; overflow-x: hidden; overflow-y: hidden; } div { width: 100%; height: 100%; } </style> </head> <body> <input type="hidden" name="mse-url" id="mse-url" value="ws://192.168.0.15:8083/stream/ID_DER_KAMERA/channel/0/mse?uuid=ID_DER_KAMERA&channel=0"> <div> <video id="mse-video" autoplay muted playsinline style="pointer-events: none; max-width: 100%; max-height: 100%;"></video> </div> <script src="main_mse.js"></script> </body> </html>
MSE
WebRTC
HLS
HLSLL
und noch 2-3 weitere
Auf meinen Androids (FireHD und Samsung) mit Fully funktioniert die MSE-Variante mit abstand am Besten. Keine Ruckler/Aussetzer und wenn WLAN mal kurz weg ist, dann läuft das auch schnell weiter. Auf dem gleichen Samsung-Tablet mit WallPanel als Browser war es WebRTC.
Vorteile:
- Verschiedene Ausgabemöglichkeiten mit Beispiele
- Konvertierung on Demand (Es wird wirklich nur umgewandelt, wenn ein Client etwas braucht)
- Niedrige Prozessorlast gegenüber MotionEye, VLC, etc....
Nachteile:
- Eventuell auf eigenem Server/Instanz (nicht getestet)
- Auf den Androiden kann immer nur ein Stream angezeigt werden. Ich habe es bisher nicht geschafft alle Kameras auf einer Seite anzuzeigen. Ich denke aber, dass das ein Android-Problem ist. Hier gucke ich weiter.
Vielleicht ist es ja wirklich für irgendwen von euch auch interessant und er kann damit seinen Livestream anzeigen.
Viele Grüße
Dustin
Kommentar