VLC Player als Digital Signage Basis - Anzeige von 9 IP-Cams, automatische Umschaltung der Kanäle (eventgesteuert), Einblendung von Texten und/oder jpgs/gifs

  • Hallo zusammen!


    Ich suche seit Wochen nach einer Möglichkeit, mehrere IP-Cams (in meinem Fall 9 Stück) auf 3 Smart-TV's darzustellen. Dazu hätte ich gerne die Möglichkeit, Texte und JPGs zeitgesteuert einzublenden. Das ganze muß im internen Netzwerk realisiert werden! HP-Raid-Server, Cisco Managed Switche und Virtual Client Software vorhanden (also an der Netzwerkperformance wird's nicht scheitern ;)) Auch laufen die TV's, der NVR und die Cams in ihrem eigenen Subnetz. Die TV's sind Android-Smart, also irgendwie garnicht smart. Aber nen Browser haben sie, was ja reichen sollte... vielleicht...


    Zunächst hatte ich versucht, das über den NVR (Netzvideorecorder) zu realisieren. Der zeigt auch problemlos die 9 Cams an und verfügt über einen HDMI-Out (HDMI->RJ45 Adapter gibt's ja für nen paar Pfennige...), aber eine Umschaltung der Bildauswahl (2x2, 3x3 oder 1+8) geht nicht automatisch. Auch ist eine Einblendung von "externen" Texten oder Bildern nicht möglich.


    Mein zweiter Gedanke war die Nutzung von OBS (Open Broadcaster Software). "Einfach" verschiedene Szenen mit unterschiedlichen Einstellungen vorbereiten und diese dann z. B. alle 30 Sekunden wechseln. Den so erzeugten Desktop - anstatt an einen Streamingdienst - "einfach" an den eigenen Server schicken und von den Smart-TV's abrufen lassen... Auch dieses Ansinnen scheiterte jämmerlich.


    Versuch 3 basierte auf dem Gedanken, eine Digital Signage Software zu verwenden. Scenen vorbereiten, der Reihe nach durchtickern lassen, den Stream auf die TV's bringen und fertig... mit den Nerven... Ich konnte keine Software finden, die sowohl RTSP-Streams verarbeitet als auch offline (also nur Netzwerk intern) arbeitet. Alles läuft über irgendwelche Server in irgendwelchen Clouds, verursacht Unmengen an Trafic und ist mit einer Sechstausender Leitung einfach nicht umzusetzen (mehr können hier weder die Magenta-, noch die Roten Jungs liefern...). Auch möchte ich keine 3000 TV's anfahren sondern nur 3!


    Und jetzt bin ich bei Versuch Nummer 4: also hier


    Gedanke: Ich installiere mir ein bis drei virtuelle Windows Client-PC's (pro TV einen?). Auf diesen läuft dann eine VBA Anwendung (vermutlich über Excel), die dann zeit- oder eventgesteuert bis zu 9 VLC-Player an festgelegten Desktoppunkten in definierter Größe aufruft. Möglichst rahmenlos! Ebenso würde die Einblendung von JPG's oder Texttafeln gesteuert. Excel hätte natürlich den riesigen Vorteil, daß sich Texte direkt aus Userforms heraus bedienen ließen, komplexe Playlisten verarbeitet werden könnten usw...


    Jetzt zu meiner Frage: Haltet ihr das für überhaupt mit VLC für realisierbar? Oder scheitert das schon im Ansatz, da der VLC-Player dieses oder jenes gar nicht kann? Kennt ihr Alternativen? Windows Media Player beispielweise? RTSP-Streams zeigt der VLC jedenfalls in einer adäquaten Geschwindigkeit an, wenn ich das mal mit OBS vergleiche... Bei OBS stände der Kunde schon beim Metzger nebenan am Tresen, wenn er denn dann endlich mal auf meinen TV's auftauchen würde ||


    Abschließend noch die Erklärung, warum das alles: Es geht um Überwachungskameras im Einzelhandel. Diese sollen - von den Kunden gut sichtbar - auf drei großen Smart-TV's angezeigt werden. Damit aber Details auf den Bildern erkennbar sind, sollen in regelmäßigen Abständen die Kamerabilder mit Eventmeldung ("Hallo, hier hat sich was bewegt!") größer angezeigt werden (also z. B. 2x2 statt 3x3). Zwischendurch sollen Produktinfos oder Hinweise zur Kaffeebar eingeblendet werden. Highlight wäre dann vielleicht noch der Wetterbericht für heute und morgen ;)


    VBA kann jedenfalls relativ problemlos Netzwerkevents überwachen und externe Programme starten/beenden. Vielmehr braucht es ja eigentlich nicht *lach*


    Hoffe, ich habe mich einigermaßen verständlich ausgedrückt :/


    Machbar? Oder nicht?


    Schon mal großen Dank für Eure Bemühungen!

  • Moi Thomas!


    Zunächst mal ein GROSSES DANKE! Da scheint wirklich das ein oder andere nützliche Kommandoprompt dabei zu sein. Werde das Projekt dann mal in Angriff nehmen, da das tatsächlich gute Ausicht auf Erfolg verspricht und ich nicht auf den von einem Kollegen vorgeschlagenen Plan 5 setzen muss, der den Einsatz von Gogo-Girls und Pappschildern vorsah *fg*


    Sollte ich auf für mich unüberwindbare Hürden stoßen, darf ich mich sicherlich nochmal melden?


    LG


    André

  • Hallo zusammen!


    Also grundsätzlich funktioniert meine Idee. Je nach gewünschter Darstellung (2x2, 3x3, 1x1, 1+5, ...) startet Excel bzw. VBA die benötigten VLC Player an den fest definierten Stellen, abhängig von der gewählten Bildschirmauflösung.


    Wie wechsele ich jetzt den Stream in einem laufenden VLC Player? Und wie spreche ich überhaupt den richtigen Player an? Immerhin laufen ja jetzt bis zu 9 VLC Anwendungen parallel, die im Task Manager zwar separat angezeigt werden, jedoch alle nur als "VLC Player" und nicht als beispielsweise "VLC-Player(1)" bis "VLC-Player(9)". :/


    Der Start erfolgt von VBA aus durch die Parameter Übergabe. Also quasi wie durch eine Batch-Datei. Natürlich wäre es möglich, die gerade laufenden Player zu schließen und mit den neuen Parametern neu zu starten, aber das dauert entsprechend lange und wirkt wenig professionell. Gibt's da vielleicht ein "Hintertürchen"? Eigentlich ändert sich ja nur die Source-IP, solange nicht eine Umschaltung von beispielsweise 3x3 auf 1+5 erfolgen soll...


    Ich benötige als irgendwie einen "Realtime" Zugriff.


    Schon mal Besten Dank für Eure Bemühungen! :)

  • Hallo André,


    hier habe ich leider auch keine Lösung bzw. habe noch nicht weitergeforscht, ob man die einzelnen VLC-Instanzen gezielt ansprechen bzw. den Stream im laufenden VLC austauschen kann.

    Das Forum-Mitglied Edmund hat mit Hilfe von Stackoverflow-Experten eine PowerShell-Lösung für das TV-Mosaic gefunden, um die VLC-Instanzen zu beenden.


    Ein Stream liefert ja kontinuierlich Daten, so dass nur eine Signalunterbrechung diesen anhält. Im Prinzip bleibt dann ein Standbild stehen.


    Wäre für eine Lösung auch dankbar.


    MfG

    Thomas

  • Hallo Thomas!


    Danke für den Hinweis auf Mosaic. Verstehe ich das richtig, dass dann mehrere Streams über einen VLC Player angezeigt werden?


    Hatte gestern noch versucht durch kopieren der VLC.exe mit Umbenennung auf VLC1.exe bis VLC9.exe den Player "auszutricksen". Die Player starten zwar mit den neuen Namen, allerdings unkontrollierbar an willkürlichen Bildschirmkoordinaten und ohne Berücksichtigung der übergebenen Parameter. Ich vermute mal, dass ich die jeweilige config Datei auch noch erzeugen muss...


    Über Putty komme ich inzwischen auch durchs Hintertürchen. Die Telnetsitzung lässt sich ja problemlos über sendkey durch VBA 'fernsteuern'. Mal schauen, wohin mich das führt... Die Streams in der Playliste definieren um dann via Telnet umschalten müsste ja funzen, oder?


    Wenn ich dann noch die VLC1 - VLC9.exe in den Griff bekomme, wären alle Probleme gelöst. Aktuell kann ich ja nur eine Telnetsitzung öffnen, da der Zugriff über die Rechner IP erfolgt... 8|


    Bin nach wie vor für jede Hilfestellung dankbar! Melde mich, sobald ich Fortschritte vermelden kann :)


    LG


    André

  • Hallo André,


    es gibt mehrere Möglichkeiten für ein Mosaic mit dem VLC-Player.

    Am besten funktionieren die Lösungen (z.B. Kommandozeile, Webbrowser) mit mehreren Instanzen des VLC-Players.

    Hier wird einmal der VLC-Player auf dem Computer installiert und so oft eine neue Instanz gestartet, wie gebraucht wird.

    Das Limit wird durch die Computerhardware bestimmt und deren Leistungsfähigkeit (Netzwerk, Prozessor, Arbeitsspeicher...).


    Was man auch machen kann, wäre verschiedene VLC-Versionen einzusetzen. Dabei wird immer nur eine Version installiert.

    Die anderen Versionen werden nur heruntergeladen und ausgepackt. Dabei sollten die nicht installierten Versionen immer mit einer eigenen Config-Datei gestartet werden.


    Kodela hat im folgenden Link beschrieben, wie man dies per Kommandozeile umsetzen kann.

    - Mehrere Versionen des VLC gleichzeitig verwenden


    Unter Verwendung der Kommandozeile bietet sich die Einbindung über den --config="C:\..." Parameter um nicht installierte Versionen zusätzlich zu verwenden.

    Siehe auch den folgenden Link (Teil 5):

    - https://www.vlc-forum.de/thread/1867-f30-kommandozeile-aufruf-und-parameterübergabe/


    In der Konfigurationsdatei könnte man möglicherweise einen bestimmten Platz und Fenstergröße auf dem Bildschirm speichern.

    Der VLC-Player merkt sich ja die Fensterposition bzw. letzten Einstellungen.

    Im Benutzerverzeichnis liegt die Konfigurationsdatei vlcrc (%appdata% ...Roaming\VLC\...).

    Hier einfach eine Kopie erstellen z.B. vlcrc-208 oder vlcrc-306... und im --config="..." Parameter den Pfad zur Datei eintragen.


    In diesem Beitrag ist ein Bildschirmfoto zu sehen mit drei Kommandozeilenscripten, also drei VLC-Instanzen (2× DVB-T, 1× DVB-S).

    - https://www.vlc-forum.de/thread/2702-vlc-dvb-gerät-adapter-frontend-m3u/


    MfG

    Thomas