[GELÖST] Ist die Anzeige einer html-Datei möglich?

  • Hallo Gemeinde,

    ich habe mir eine html-Datei auf den Webserver geladen, die 4 Webcams ums Haus verkleinert darstellt und würde diese Seite gern irgendwie als Channel im VDR anzeigen. Zoneminder selbst hat zwar auch solch eine Seite (Montage), aber die funktioniert schonmal nicht...

    Ist sowas in irgendeiner Form (vielleicht komfortabel per IPTV) möglich?


    Danke im voraus für alle Tipps! ;)


    Lösung:

    • Im Beitrag #8 sind die notwendigen Eintragungen für das IPTV-Plugin um externe Bilder zu einer Montage mit 4-Bild Darstellung zu machen und als Kanal im TV darzustellen. Hier explizit für das Beispiel von Webcams!
    • Das Script in Beitrag #19 nutzt die Harbwarebeschleunigung (in diesem Fall vaapi) und liefert ggflls. bessere Ergebnisse was die Systemlast durch das kodieren betrifft (ausprobieren)...

    Einmal editiert, zuletzt von Taipan ()

  • Ist das reines HTML oder gibt es da dynamische Elemente (z.B. JS, Webassembly usw.)?


    Eine Idee wäre einen virtuellen X-Server wie Xvfb mit einem Browser laufen zu lassen, regelmäßig Screenshots zu machen und das in einen Videostream zu überführen (hier ist ein Beispiel wie man das mit ffmpeg und einem rtmp-Stream machen könnte: https://stackoverflow.com/a/42736726).


    Ansonsten gibt es auch noch einen Ansatz mit headless Chrome (und Puppeteer): https://bitsofco.de/using-a-he…capture-page-screenshots/, so dass man sich den Umweg über einen virtuellen X-Server sparen kann.

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Hi,

    die Streams sind dynamisch. Die Seite beinhaltet die Monitore von Zoneminder in dieser Form:


    Einzeln habe ich die Webcams ja als Kanäle mit IPTV und EPG eingebunden, aber nun hätte ich sie gern als Übersicht mit allen 4 Cams im Bild...

  • Also kann man die Bilder direkt vom Server laden, statt da die Webseite zu bemühen?

    Also sowas wie

    Code
    wget 'http://192.168.10.39/zm/cgi-bin/nph-zms?monitor=1&scale=100' -O test
    magick identify -verbose test

    damit man sehen kann, was man da für ein Bildformat zurück bekommt?


    Die vier Bilder sollte man dann z.B. mit montage (vgl. https://legacy.imagemagick.org/Usage/montage/#tile) in einer 2x2 Matrix zusammensetzen können, bevor man das resultierende Bild von ffmpeg als Videostream versenden lässt.

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • In der Theorie:

    Erstelle einen virtuellen Desktop und öffne darin deine Webseite.
    Starte einen Screenrecorder oder vlc und "streame" den Inhalt in eine FIFO Datei.
    Öffne die FIFO Datei mit dem IPTV PLugin.

    Wohnzimmer: NUC10I3 - Logitech z-5500 - Panasonic 55" TV - Hauppauge Dual DVB-C Stick - Ubuntu 22.04 LTS - yavdr ansible
    Schlafzimmer: NUC10I3 - LG 42" TV - Hauppauge Dual DVB-C Stick - Ubuntu 22.04 LTS - yavdr ansible

    Streamingserver: -im Aufbau-
    diverse Test Clients: -Raspberry Pi + openelec, i3 mit Geforce1030

  • Oder ein Webbrowser im Kiosk-Modus über den VDR legen? Mach ich so für netflix etc. X Server läuft ohne Window Manager.


    Skript über commands.conf starten:

    Code
    Browser                        : nohup /usr/local/bin/start-chrome  >/dev/null 2>&1 &

    start-chrome:

    Audio bei mir über pulseaudio. Der VDR wird gemuted. Muss auf eigene Gegebenheiten angepasst werden, wenn Browser auch Audio spielen soll.


    Sobald der Broswer läuft, wird xbindkeys gestarted um Fernbedienungstasten sinvoll zu nutzen und auch um den Browers wieder zu beenden.


    /etc/xbindkeysrc:

    Braucht eventuell nicht jede Taste. Kann damit aber mit der den Zahlen-Tasten auf der Fernbedienung den Maus-Pfeil bewegen und Maus-Links-Klicks machen.

    VDR: Zotac ZBOX EN860, 16GB RAM, 2 TB HDD, Debian Bookworm, vdr-2.4.1, softhdcuvid, satip

  • Hi,

    zunächst mal danke Euch, das ist mir aber alles etwas zu komplex als das ich damit den Server belasten möchte. Letztendlich möchte ich ja nur einen Kanal auf dem TV sehen 'können', der alle 4 Kameras gleichzeitig anzeigt.

    Dauerhaft irgendwelche Tools im Hintergrund laufen zu haben wäre wohl eher angemessen wenn man die Übersicht permanent nutzt...


    Trotzdem Danke für alle Vorschläge!

  • Dauerhaft irgendwelche Tools im Hintergrund laufen zu haben wäre wohl eher angemessen wenn man die Übersicht permanent nutzt...

    Der IPTV-Stream wird ja nur gestartet, wenn man auf den Kanal schaltet (und danach wieder beendet) - und das kann komplett auf dem VDR passieren, wenn man will - das könnte z.B. so aussehen (die Datei muss ausführbar gemacht werden, mit dem Pfad bin ich noch nicht glücklich - da stimmt noch etwas am Paket nicht):


    Das montage Programm steckt im Paket graphicsmagick-imagemagick-compat. Ich mache das hier im Beispiel mit mpeg2, weil die CPU am Testrechner komplexere Codecs nicht packt, aber grundsätzlich kann man da auch andere Formate nehmen, die der VDR unterstützt.


    Eintrag in der channels.conf:

    Code
    Überwachungskamera;IPTV:100:S=0|P=0|F=EXT|U=image.sh|A=1:I:0:256=2:257=@4:0:0:3:0:0:0


    Das einzige unschöne ist, dass das mit dem leeren Audio noch nicht klappt (softhddevice meckert dann im Log), aber das sollte sich noch beben lassen.

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

    Einmal editiert, zuletzt von seahawk1986 ()

  • seahawk1986


    Oha ich danke Dir,

    das Montage-Bild wird angelegt und ist auch korrekt, nur auf den TV bekomme ich es nicht...

  • Ich hatte ein Anführungszeichen am Ende des ffmpeg-Befehls beim Kopieren nicht erwischt (habe ich gerade nachgepflegt) - probier mal bitte, ob es das war.

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Hi,

    leider nein. Per wget holt er das "erste Bild". Leider ist dies eine Bildfolge die Zoneminder ebenfalls per ffmpeg erstellt - will heißen, es ist ein unendlicher "Stream-Download" und das Script arbeitet nicht weiter!

    Es müßten wohl alle vier Streams zeitgleich in das Montagebild fließen...

  • Dann könnte man mal versuchen Einzelbilder anzufordern (den Parameter habe ich in https://forums.zoneminder.com/…d2fdf8b4cb0b77b55ad552767 gesehen):

    Code
    wget "http://192.168.10.39/zm/cgi-bin/nph-zms?mode=single&monitor=${i}&scale=100" -O "${TMPDIR}/image_${i}"

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Ich hatte bereits die URL auf Einzelbild geändert - Downloads gehen, image.png liegt vor, aber ich bekomme kein TV-Bild...

  • ...während ich auf dem Sender geschaltet habe sollte eigentlich doch auch die Instanz ffmpeg im loop laufen - tut sie aber nicht :/

  • ...während ich auf dem Sender geschaltet habe sollte eigentlich doch auch die Instanz ffmpeg im loop laufen - tut sie aber nicht :/

    ffmpeg sollte einmalig gestartet werden und dann durchlaufen, bis das iptv-Plugin das Skript beendet (z.B. wenn man auf einen anderen Kanal wechselt).

    Sieht man da eventuell eine Ursache, wenn man statt LOG=/dev/null einen Pfad angibt?


    Ansonsten könnte man auch noch ein set +x vor der Zeile mit dem trap unterbringen, dann sieht man in den Logausgaben des VDR, wie weit das Skript kommt.

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Ich habe gerade festgestellt:

    Durch das Umschalten des Senders wird das Script garnicht ausgeführt - nur händisch...


    Wenn ich es ausführe kommt:

  • Durch das Umschalten des Senders wird das Script garnicht ausgeführt - nur händisch...

    Ist das Skript an der richtigen Stelle? Wo der VDR sucht, kann man z.B. mit strace verfolgen: An den VDR hängen: strace -p $(pidof vdr) | grep image.sh und dann auf den Sender umschalten.


    Außerdem muss das Skript ausführbar sein und der User vdr muss die Berechtigung haben in dem Ordner zu schreiben und falls das Skript mal nicht unter dem Benutzer vdr ausgeführt wurde, musst du die vom Skript erstellten Dateien löschen bzw. den Besitzer auf vdr ändern, damit die wieder überschrieben werden können.

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Es läuft !

    Und es lag tatsächlich an den Rechten/Löschung alter Dateien...


    Kann man die Qualität noch hochschrauben? Die Einzelbilder könnten etwas Schärfe vertragen...

    Und meine CPU kocht nach 10 Sekunden hoch auf 80 Grad - ist das normal ?

  • Und meine CPU kocht nach 10 Sekunden hoch auf 80 Grad - ist das normal ?

    80 °C kann eine CPU noch gut aushalten, aber letztendlich hängt das daran, wie man die Kühlung für das System im Verhältnis zur Verlustleistung unter Volllast dimensioniert.

    Kann man die Qualität noch hochschrauben? Die Einzelbilder könnten etwas Schärfe vertragen...

    Und meine CPU kocht nach 10 Sekunden hoch auf 80 Grad - ist das normal ?

    Das ist das Problem, dass das recht rechenintensiv ist, wenn man das rein in Software macht - selbst wenn da nur SD-Material rauspurzelt.


    Die FPS auf 1 zu reduzieren sollte helfen, um weniger Enkodieren zu müssen.


    Das zusammengefügte Bild größer zu machen ist auch einfach:

    Code
    montage "${TMPDIR}/"image_{1..4} -tile 2x2 -geometry 1920x1080+0+0 -background black "${IMAGE}" || echo "whoops"


    Das packt deine CPU dann aber vermutlich nicht mehr in der Auflösung als Video zu enkodieren - da könnte man mal versuchen die Hardwarebeschleunigung zu nutzen: https://trac.ffmpeg.org/wiki/Hardware/VAAPI


    Auf meinem Haswell System klappt das so mit VAAPI-Encoding, nur musste ich das Skript etwas umbauen, weil der Encoder gerne mal aussteigt, wenn man das Bild austauscht:

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Hi,

    das zweite Script mit Hardwarebeschleunigung läuft auch hier besser (und schneller bis zum Bild)! Ich habe es mal in 1920x1080 gelassen und beobachte weiter. Die Last/Temperatur ist damit auch reduziert.


    Damit ist das Ursprungs-Problem gelöst und ich trage das oben mal nach!

    Ich bekomme langsam ein schlechtes Gewissen - wie können wir Dir bloß mal helfen?


    Ich sage wieder einmal (dreimal) DANKE für Deine Intensiv-Hilfe bis zum Ziel - bleib uns und dem VDR erhalten! ;)

  • Taipan

    Hat den Titel des Themas von „Ist die Anzeige einer html-Datei möglich?“ zu „[GELÖST] Ist die Anzeige einer html-Datei möglich?“ geändert.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!