Hallo!
Ich suche nach einer cleveren und preiswerten Lösung für eine Videowall. Da VLC Player sehr viele Formate, viele Endgeräte und sogar Netzwerkstreaming unterstützt, kam die Frage auf, ob man nicht gleich mehrere VLC Player auf mehreren Endgeräten via Ethernet synchronisieren kann?
Gibt es sowas vielleicht schon?
Ideal wäre natürlich Vsync synchrone Wiedergabe - das wäre schon wichtig. Es gibt kommerzielle Software, die das kann - aber die ist meist sehr teuer. Dann könnte man vielleicht sogar verschiedene Endgeräte mischen und daraus eine große Videowall zusammen setzen. Auf jedem Bildschirm läuft dann ein eigenes Video. Falls es sowas noch nicht gibt - wäre doch mal eine sinnvolle Erweiterung.
Würde mich freuen, wenn jemand was dazu sagen kann.
Video Wall? Ist es möglich, mehrere VLC Player auf verschiedenen Geräte synchron laufen zu lassen?
-
Axel Mertes -
25. November 2017 um 16:39 -
Unerledigt
-
-
- Offizieller Beitrag
Hallo Alex,
mit dem VLC-Player kann man eine Videowall bespielen. Im Menü / Werkzeuge / Effekte und Filter / Register Videoeffekte / Geometrie gelangt man im Auswahlfeld "Wand" zur Aktivierung der Videowall.
Diese Funktion ist aber für einen Computer mit mehreren, daran angeschlossenen Monitoren und ein wieder zu gebendes Video gedacht.
Will man von einem Computer verschiedene Medieninhalte auf mehreren, am Computer angeschlossenen Monitoren wiedergeben, so kann man dies per Script umsetzen. Auf jedem Bildschirm kann ein eigenes Video wiedergegeben werden.
Beispiel: Kunst-Installation mit 2 Beamern und einem TV
Du möchtest für die Videowiedergabe mehrere Endgeräte verwenden, die über ein lokales Netzwerk (Ethernet) verbunden und synchronisiert sind. Solange es sich um den gleichen Inhalt handelt, der auf allen Geräten (Computer) mit angeschlossenem Bildschirmen im lokalen Netzwerk wiedergegeben wird, habe ich eine Lösung gefunden, die im Link mit einer älteren VLC-Version umgesetzt wurde.
Siehe dazu das Video im Link: http://www.hackedexistence.com/project-vlc.html
Kann mir vorstellen, dass man per Script hier eine Lösung umsetzen kann.
Link: https://wiki.videolan.org/Documentation:Modules/netsync
Wenn auf jedem Bildschirm in der Videowall ein eigenes Video laufen soll, wozu braucht man dann eine Synchronisation und verschiedene Endgeräte?
Eine Videowall oder auch "Mosaic" kann man auf einem Bildschirm realisieren.
Link TV-Mosaic: DVB-T Empfang und paralleler Stream der Programme
Link Mosaic: Mosaik Outputs flackern
Soweit meine ersten Anmerkungen.
MfG
Thomas
-
Hallo Thomas,
Wow!
Erstmal vielen Dank für diese umfangreichen Informationen und Links. Das hilft auf jeden Fall schon mal sehr weiter!
Die Netzwerksynchronisierung werde ich mal austesten. Es wäre wichtig, dass alles möglichst taktsynchron umschaltet, damit schnelle Bewegungen nicht zerrissen wahrgenommen werden. Bin gespannt wie gut das funktioniert. Idealerweise wünscht man sich hier, das allen den exakt gleichen V-Sync haben. In der Videotechnik macht man das mit einem Genlock/Taktgeber, aber es geht auch per Software - ich hab es schon mal so gesehen bei einem kommerziellen Produkt.
Die Scripts konnte ich mir schon teils anpassen, ich experimentiere noch.
Ich denke ich werde mehr als einen Rechner benötigen und idealerweise wird jeder Bildschirm ein eigenes Video abspielen (also nicht ein Split von einem größeren, sondern eine eigene Datei).
Bin gespannt wie das zusammen funktioniert.
MfG
Axel -
Ich muss nochmal nachhaken:
Ich möchte auf verschiedenen Rechnern verschiedene Videos abspielen, die zusammen ein großes ganzes ergeben (Video Wall). Der Split wird also vorher und seperat gemacht und jeder Bildschirm bekommt dann ein passendes Video zugeteilt - so der plan. Dann könnte das ganze im Grunde fast beliebig hoch aufgelöst sein, indem man mehr Geräte einbindet...
Ich konnte zwar mit diverse Beispielen etwas anfangen und z.B. zwei oder drei Streams parallel anzeigen. Wenn ich jedoch den identischen Stream verwendete, zeigt sich schnell, das hier selbst ein einziger Rechner allein die Videos nicht wirklich synchron abspielt. Extremes Tearing wäre die folge.
Zudem gelignt es mir nicht, die Videos oder Streams per Commandline zu croppen. Die Dokumentation ist dahingehend dürftig und teils wiedersprüchlich. So steht dort der Befehl --crop-geometry den VLC gar nicht versteht...
Dann steht dort auch --crop= und das funktioniert auch nicht:
vlc input --vout-filter=crop --crop-geometry=120x120+10+10
Ich wollte testweise die obere Hälfte ein einzigen HD Videos in 2 Quadranten zerschneiden und diese unabhängig von einander auf demselben Rechner wiedergeben, was einfach nicht gelingt. Die Parameter scheinen sich überhaupt nicht so zu verhalten, wie man das erwarten würde. Ich würde mich gerne eines besseren belehren lassen, aber ich bekomme es einfach nicht hin:
Codestart "" "C:\Program Files\VideoLAN\VLC\vlc.exe" --no-video-deco --no-embedded-video --video-x=1 --video-y=1 --qt-start-minimized --no-video-title-show --zoom=1 --vout-filter=crop --crop=960x540+0+0 "C:\Temp\A.mp4" start "" "C:\Program Files\VideoLAN\VLC\vlc.exe" --no-video-deco --no-embedded-video --video-x=960 --video-y=1 --qt-start-minimized --no-video-title-show --zoom=1 --vout-filter=crop --crop=960x540+960+0 "C:\Temp\A.mp4"
Woran könnte das liegen?
____________
Habe deinen Text aus dem Quellcode-Container kopiert und neu eingefügt. Bitte prüfe und korrigiere noch einmal diese Antwort.
MfG
Thomas
-
- Offizieller Beitrag
Dein Versuch, ein HD-Video in 2 Bereiche zu beschneiden und gleichzeitig, die beschnittenen Bereich nebeneinander wiederzugeben liegt wahrscheinlich an falschen Kommandozeilen-Parametern.
Zitat- start "" "C:\Program Files\VideoLAN\VLC\vlc.exe" --no-video-deco --no-embedded-video --video-x=1 --video-y=1 --qt-start-minimized --no-video-title-show --zoom=1 --vout-filter=crop --crop=960x540+0+0 "C:\Temp\A.mp4"
- start "" "C:\Program Files\VideoLAN\VLC\vlc.exe" --no-video-deco --no-embedded-video --video-x=960 --video-y=1 --qt-start-minimized --no-video-title-show --zoom=1 --vout-filter=crop --crop=960x540+960+0 "C:\Temp\A.mp4"
Welche Dokumentation hast du verwendet?
Wo hast du den Parameter --vout-filter=crop her?
Der Parameter --zoom=1 wird im Beispiel nicht benötigt.
Mit dem Parameter --crop=16:9 kann man ein Video auf ein gewünschtes Bildseitenverhältnis (4:3, 16:9,...) beschneiden.
Woher hast du die Angaben für den Parameter --crop=?
Für das Beschneiden stehen folgende parameter zur Auswahl:
--croppadd-croptop=<integer [0 .. 2147483647]>
Anzahl der Pixel beschneiden von oben
--croppadd-cropbottom=<integer [0 .. 2147483647]>
Anzahl der Pixel beschneiden von unten
--croppadd-cropleft=<integer [0 .. 2147483647]>
Anzahl der Pixels beschneiden von links.
--croppadd-cropright=<integer [0 .. 2147483647]>
Anzahl der Pixels beschneiden von rechts
Soweit meine Anmerkungen für heute.
kleine Ergänzung
Für die Videowiedergabe im Internetbrowser Firefox "v52 ESR (32-Bit)" mit dem Web-Plugin lässt sich ebenso der angezeigte Bildausschnitt beschneiden, z.B. wenn das Bildseitenverhältnis im Video schwarze Balken enthält, die für die Wiedergabe stören.
Script-Beispiel:
Code<embed src="video/Elsterwelle.mp4" type="application/x-vlc-plugin" loop="true" name="VLC" width="350" height="197" vlc.video.crop="0x60+0+0">
Der Parameter vlc.video.crop="0x60+0+0" beeinflusst <Breite> x <Höhe> + <Abstand links> + <Abstand oben> des wiederzugebenden Videos.
Link Web-Plugin: https://wiki.videolan.org/Documentation:WebPlugin/
-
Beitrag von thweiss (
28. November 2017 um 11:03 )Dieser Beitrag wurde vom Autor gelöscht (28. November 2017 um 11:31 ). -
- Offizieller Beitrag
Hallo Axel,
ich musste mich noch updaten und habe mir ein Beispielvideo ("Life-is-a-dance.mp4") aus dem Internet genommen als Grundlage für Tests mit deiner Idee, ein HDTV-Video mit dem VLC-Player in zwei Hälften zu beschneiden und per Batch-Datei abzuspielen.
Zwei Dokumentationen sind dafür wichtig.
Kommandozeilen-Hilfe: https://wiki.videolan.org/VLC_command-line_help/
Verwendung von "Crop": https://wiki.videolan.org/VLC_HowTo/Crop/
Beispiel-Script
Code@echo off start "" "C:\Program Files (x86)\VideoLAN\VLC\vlc.exe" --no-video-deco --no-embedded-video --video-x=1 --video-y=1 --qt-start-minimized --no-video-title-show --video-filter=croppadd --croppadd-cropright=960 --sout-qsv-async-depth=2 "C:\Temp\Life-is-a-dance.mp4" start "" "C:\Program Files (x86)\VideoLAN\VLC\vlc.exe" --no-video-deco --no-embedded-video --video-x=960 --video-y=1 --qt-start-minimized --no-video-title-show --video-filter=croppadd --croppadd-cropleft=960 --sout-qsv-async-depth=2 "C:\Temp\Life-is-a-dance.mp4"
Ich habe die zuverlässigere 32-Bit Version des VLC-Players verwendet, konkret die Version 2.2.6, gegenüber der 64-Bit Version. Beim Parameter --sout-qsv-async-depth=2 bin ich mir nicht sicher, ob es der richtige ist, um eine synchrone Wiedergabe zu unterstützen.
Im Anhang füge ich die Batch-Datei zum herunterladen dazu. Nach dem Herunterladen bitte die Dateiendung *.txt entfernen.
Für das bessere Verständnis zeige ich noch zwei weitere Script-Beispiele.
Video links abschneiden
Code@echo off start "" "C:\Program Files (x86)\VideoLAN\VLC\vlc.exe" --no-video-deco --no-embedded-video --video-x=960 --video-y=1 --qt-start-minimized --no-video-title-show --video-filter=croppadd --croppadd-cropleft=960 "C:\Temp\Life-is-a-dance.mp4"
Video rechts abschneiden
Code@echo off start "" "C:\Program Files (x86)\VideoLAN\VLC\vlc.exe" --no-video-deco --no-embedded-video --video-x=1 --video-y=1 --qt-start-minimized --no-video-title-show --zoom=1 --video-filter=croppadd --croppadd-cropright=960 "C:\Temp\Life-is-a-dance.mp4"
Gelingt dir die Wiedergabe?
MfG
Thomas
-
Hi Thomas,
zuallererst: Danke für Deine wertvollen Tips und Tricks. Ich hab schon viel über VLC gelernt, was ich bislang nicht wusste.
Nun zum aktuelle Stand meiner Versuche:[..]
Welche Dokumentation hast du verwendet?Wo hast du den Parameter --vout-filter=crop her?
Der Parameter --zoom=1 wird im Beispiel nicht benötigt.
Mit dem Parameter --crop=16:9 kann man ein Video auf ein gewünschtes Bildseitenverhältnis (4:3, 16:9,...) beschneiden.
Woher hast du die Angaben für den Parameter --crop=?
[..]
Script-Beispiel:
Code<embed src="video/Elsterwelle.mp4" type="application/x-vlc-plugin" loop="true" name="VLC" width="350" height="197" vlc.video.crop="0x60+0+0">
Der Parameter vlc.video.crop="0x60+0+0" beeinflusst <Breite> x <Höhe> + <Abstand links> + <Abstand oben> des wiederzugebenden Videos.
Link Web-Plugin: https://wiki.videolan.org/Documentation:WebPlugin/
Die Befehle habe ich hier gefunden:
https://wiki.videolan.org/Crop/Das klang jetzt nicht unbedingt wie die falsche Quelle...
Eine wichtig Erkenntnis aus Deinen zweiten Nachrricht heute: 32 Bit statt 64 Bit!
Ich habe bislang nur die 64 Bit Version probiert und die kann das Script erst gar nicht ausführen (den Programmpfad habe ich natürlich korrigiert). Und der Crop verhält sich scheinbar falsch, sofern man es bis zur Anzeige schafft. Ich habe jetzt die 32 Bit Version installiert und da funktioniert Dein Script schon mal gut. Mir war nicht klar wieviel Unterschied zwischen 32 und 64 Bit Version liegt.
Allerdings hat mich schockiert, das die Wiedergabe eine einfachen 1920x1080y MPEG4 Files auf einem i7 3930QM Notebook mit NVidia GT 650M Grafik mit 2 GByte von eine Samsung 850 EVO SSD kommend ruckelt und nicht im Ansatz synchron läuft. So wäre das für mich faktisch unbrauchbar. Wäre die 64 Bit Version schneller/synchroner? Fraglich...
Du schreibst auch:ZitatBeim Parameter --sout-qsv-async-depth=2 bin ich mir nicht sicher, ob es der richtige ist, um eine synchrone Wiedergabe zu unterstützen.
Ich hab das auf --sout-qsv-async-depth=0 oder 1 geändert, dann wird es bei mir deutlich besser, ist aber noch lange nicht ruckelfrei.
Unter dem Strich liegt das Problem wohl primär darin, das die einzelnen Player hier nicht untereinander kommunizieren und sich so synchronisieren. Das könnte ja z.B. mit einem zentralen Taktgeber funktinieren, der allen das Kommando zum Umschalten schickt usw. Es geht, ich hab das wie gesagt bei kommerziellen Lösungen schon gesehen, die handeln untereinander sogar den vertikalen Sync (V-Sync) aus - die laufen quasi perfekt, per Software. Und natürlich kann ich auch auf einem Rechner alleine damit mehrere Instanzen synchronisieren oder aber mehrere Rechner parallel laufen lassen.
Jetzt gibt es im Grunde 3 Möglichkeiten:
1. Eine teure Multiportkarte für einen PC besorgen, die entsprechend viele Bildschirme gleichzeitig ansteuern kann. Dann kann man einfach ein entsprechend sehr großes Video auf dem Desktop zeigen und VLC kann das ruckelfrei wiedergeben. Beispiel: Matrox C900, schlappe 1750 Euro... Das ist die "sichere" aber auch teure Lösung. Man kann damit bis zu zwei Karten taktsynchron fahren, macht bis zu 18 * Full HD Bildschirme.
2. Weiter mit VLC experimentieren, ob man die Ursachen finden und beheben kann. Ich bin da gerade nicht mehr so optimistisch, möchte aber noch nicht aufgeben. Zumal ich nicht Monate damit verbringen will (Das Leben ist (k)ein Betatest...).3. Eine andere Lösung suchen. Z.B. via Rapsberry Pi. Da gibt es eine interessante dezentrale Lösung. Die sind womöglich nicht perfekt taktsynchron, aber wenigstens Bildsynchron. Was ich davon in einem Video gesehen habe, war schon mindestens so gut, wenn nicht besser, als das, was ich nach der Korrektur dieses Sync-Parameters auf 0 oder 1 auf dem Notebook gesehen habe. Siehe auch hier: Raspberry Pi Video Wall "PiWall" Es wäre doch toll, wenn VLC DAS auch könnte und so sich alle Geräte, die VLC unterstützt zu einer großen Video Wall zusammenschalten lassen.
Ich werde nochmal mit dem Netzwerksynchronisieren herum probieren, vielleicht passiert ja ein kleines Wunder.
MfG
Axel -
- Offizieller Beitrag
Hallo Axel,
das sind viele Informationen, die du hier eingebracht hast. Die Video-Wall mit "Raspberry Pi" kannte ich noch nicht, gefällt mir aber. Habe mit dem "Raspberry Pi" noch keine Erfahrungen gesammelt.
Der VLC-Player hat keine "Vsync"-/"Tearing-" Funktion eingebaut. Es gibt hier keinen Schalter bzw. keine zu aktivierende Funktion oder Kommunikation zwischen zwei VLC-Instanzen.
Link: https://forum.videolan.org/viewtopic.php?t=78376
Bezüglich gemeinsamen Taktgeber gibt es eine Möglichkeit für die Kommunikation in einem Netzwerk (siehe Beispiel: http://www.hackedexistence.com/project-vlc.html).
Die Videolan-Dokumentation zu "crop" hatte ich nicht im Blick, darum auch mein Update.
Was mich stutzig macht, ist die ruckelnde Video-Wiedergabe des obigen Beispielvideos (HDTV, "H.264-MPEG-4 AVC" und "MPEG AAC Audio") auf deinem Notebook mit Intel core i7 3930QM, Samsung SSD und Nvidia GT650M Grafik.
Hier scheint etwas mit den Einstellungen nicht zu stimmen oder die Treiber von Grafik, SSD und Chipsatz sind nicht aktuell.
Schaue auch bitte in die Taskleiste des Betriebssystems, rechts unten, müssen alle gestarteten VLC-Instanzen nach der Video-Wiedergabe beendet werden.
Ich habe eine flüssige Videowiedergabe mit einem Intel Core i5-2500 Prozessor, 8 GB Arbeitsspeicher, 220 GB SSD und Nvidia GTX750 Grafik unter Windows 10 erreicht. Ebenso auf einem Windows 7 Computer mit Intel core i7-870, 4 GB Arbeitsspeicher, 250 GB HDD und AMD Radeon HD 4300/4500 Grafik.
Als Abhilfe könnte man die Einstellungen im VLC-Player zurücksetzen.
Menü / Werkzeuge / Einstellungen ganz unten die Schaltfläche [Einstellungen zurücksetzen] anklicken. Die Änderung speichern und den VLC-Player neu starten.
Für die 64-Bit Version ("C:\Program Files\VideoLAN\VLC\vlc.exe") unterscheidet sich das Script nur im Installationsverzeichnis des VLC-Players, gegenüber der 32-Bit Version ("C:\Program Files (x86)\VideoLAN\VLC\vlc.exe").
Ich will noch ein weiteres Script-Beispiel für die 32-Bit Version des VLC-Players zeigen, in dem kleine Änderungen enthalten sind, gegenüber dem ersten Beispiel (Siehe #7).
Code@echo off start "" "C:\Program Files (x86)\VideoLAN\VLC\vlc.exe" :file-caching=300 --netsync-master --no-video-deco --no-embedded-video --video-x=1 --video-y=1 --qt-start-minimized --no-video-title-show --video-filter=croppadd --croppadd-cropright=960 "C:\Temp\Life-is-a-dance.mp4" start "" "C:\Program Files (x86)\VideoLAN\VLC\vlc.exe" :file-caching=300 --netsync-master-ip=127.0.0.1 --no-video-deco --no-embedded-video --video-x=960 --video-y=1 --qt-start-minimized --no-video-title-show --video-filter=croppadd --croppadd-cropleft=960 "C:\Temp\Life-is-a-dance.mp4"
Den Parameter --sout-qsv-async-depth=2 habe ich weggelassen. Hinzugenommen habe ich :file-caching=300, --netsync-master und --netsync-master-ip=127.0.0.1 (lokale Loop IP-Adresse).
Die Werte für den Parameter :file-Caching= werden in ms angegeben und könnte man für beide VLC-Instanzen anpassen, um einen kleinen zeitlichen Versatz auszuprobieren.
MfG
Thomas
-
Hallo Thomas,
Danke für die Mühe - ich krieg langsam ein schlechtes Gewissen
Kleiner Zwischenstand:
Das sieht schon besser aus. 64 Bit lief letztes Mal bei mir nicht, muss ich hier nochmal testen...
Ein Punkt ist mir aufgefallen und an dem verweifle ich gerade auch ein wenig:
Alle Positionsparameter sind mit =1 angegeben, aber das lässt die erste Zeile/Spalte des Bildschirm aus. Korrekt wäre =0. Aber das führt beim 2. Video (rechts) dazu, das es nicht zu sehen ist. Der Player läuft, beim Umschalten mit Alt-Tab kann man ihn in der Übersicht sehen - aber eben nicht auf dem Desktop.
Ich hab den Wert dann mal auf --video-y=-1 gestellt - und dann scheint es zu gehen. Was ist denn das für eine Logik?
Und wenn ich die Videos in der Höhe versuche zu beschränken um z.B. 4 Videos mit einem schwarzen Trennkreuz (zur Simulation von Bildschirmrändern) dazwischen auf dem Bildschirm zu zaubern mit dem Befehl --croppadd-cropbottom=200 dann werden die Videos breiter statt flacher...?!??
Die Logik hinter diesem Crop erschließt sich mir nicht. Warum kann man nicht einfach oben links als Position plus resultieren Breite/Höhe angeben (wie in jeder anderen Software)?
Ich probiere es weiter... -
- Offizieller Beitrag
Hallo Alex,
auch von mir ein kurzer Zwischenstand. In den x,y-Positionsangaben für die linkere, obere Ecke sollten nie den Wert =0 enthalten.
Warum es im linken Fenster trotzdem klappt kann ich dir leider auch nicht beantworten.
In der Mathematik heisst es auch Division durch Null ist nicht gestattet.
Hier im Forum gibt es ein anderes Beispiel, wo genau die gleiche Problematik auftritt.
Link: Player mit definierter Größe in oberer linker Ecke
Im Grunde kann man sich entscheiden, entweder für x=1 und y=1 oder x=-1 und y=-1. Solange der Bildhintergrund schwarz ist, fällt die Zeile 0 und Spalte 0 dann nicht mehr so störend auf.
Meine nächste Überlegung war ebenso, das gleiche Testvideo in vier Teilbereich, wie in einem Puzzle mittels "crop" zu zerlegen und zusammen wiederzugeben.
Script-Beispiel
Code@echo off start "" "C:\Program Files (x86)\VideoLAN\VLC\vlc.exe" :file-caching=300 --netsync-master --no-video-deco --no-embedded-video --video-x=1 --video-y=1 --qt-start-minimized --no-video-title-show --video-filter=croppadd --croppadd-cropright=960 --croppadd-cropbottom=540 "C:\Temp\Life-is-a-dance.mp4" start "" "C:\Program Files (x86)\VideoLAN\VLC\vlc.exe" :file-caching=300 --netsync-master-ip=127.0.0.1 --no-video-deco --no-embedded-video --video-x=960 --video-y=1 --qt-start-minimized --no-video-title-show --video-filter=croppadd --croppadd-cropleft=960 --croppadd-cropbottom=540 "C:\Temp\Life-is-a-dance.mp4" start "" "C:\Program Files (x86)\VideoLAN\VLC\vlc.exe" :file-caching=300 --netsync-master-ip=127.0.0.1 --no-video-deco --no-embedded-video --video-x=1 --video-y=540 --qt-start-minimized --no-video-title-show --video-filter=croppadd --croppadd-cropright=960 --croppadd-croptop=540 "C:\Temp\Life-is-a-dance.mp4" start "" "C:\Program Files (x86)\VideoLAN\VLC\vlc.exe" :file-caching=300 --netsync-master-ip=127.0.0.1 --no-video-deco --no-embedded-video --video-x=960 --video-y=540 --qt-start-minimized --no-video-title-show --video-filter=croppadd --croppadd-cropleft=960 --croppadd-croptop=540 "C:\Temp\Life-is-a-dance.mp4"
Mein Tests mit dem Script-Beispiel haben ebenso ein fehlerhaftes Ergebnis geliefert. Das könnte mit dem bekannten Problem der Videowall-Funktion im Menü / Werkzeuge / Effekte und Filter / Register Videoeffekte / Geometrie zusammenpassen. Die variable Aufteilung einen Bildes in Teilbereich gelingt nur teilweise mit geraden Teilungsverhältnissen.
Aus meiner Sicht liegt hier ein Programmfehler vor.
Jetzt ist der Zeitpunkt da, wo man als Beta-Tester aktiv werden und mit der "nigthly"-Version 3.0 arbeiten kann.
Eventuell gibt es eine ältere VLC-Version (2.0.8, 2.1.5...), wo die Videowall fehlerfrei funktionierte.
-
- Offizieller Beitrag
Kleine, aktuelle Ergänzung zum obigen Beispiel Script.
Code@echo off start "" "C:\Program Files (x86)\VideoLAN\VLC\vlc.exe" :file-caching=310 --netsync-master --no-video-deco --no-embedded-video --video-x=1 --video-y=1 --qt-start-minimized --no-video-title-show --video-filter=croppadd --croppadd-cropright=960 --croppadd-cropbottom=540 --zoom=0.5 "C:\Temp\Life-is-a-dance.mp4" start "" "C:\Program Files (x86)\VideoLAN\VLC\vlc.exe" :file-caching=310 --netsync-master-ip=127.0.0.1 --no-video-deco --no-embedded-video --video-x=960 --video-y=1 --qt-start-minimized --no-video-title-show --video-filter=croppadd --croppadd-cropleft=960 --croppadd-cropbottom=540 --zoom=0.5 "C:\Temp\Life-is-a-dance.mp4" start "" "C:\Program Files (x86)\VideoLAN\VLC\vlc.exe" :file-caching=300 --netsync-master-ip=127.0.0.1 --no-video-deco --no-embedded-video --video-x=1 --video-y=540 --qt-start-minimized --no-video-title-show --video-filter=croppadd --croppadd-cropright=960 --croppadd-croptop=540 --zoom=0.5 "C:\Temp\Life-is-a-dance.mp4" start "" "C:\Program Files (x86)\VideoLAN\VLC\vlc.exe" :file-caching=300 --netsync-master-ip=127.0.0.1 --no-video-deco --no-embedded-video --video-x=960 --video-y=540 --qt-start-minimized --no-video-title-show --video-filter=croppadd --croppadd-cropleft=960 --croppadd-croptop=540 --zoom=0.5 "C:\Temp\Life-is-a-dance.mp4"
Das ganze Script füge ich noch als Download hinzu. Nach dem Herunterladen bitte die Dateienung *.txt entfernen.
Siehst du, welche Änderungen ich vorgenommen habe?
-
Hi Thomas,
Danke, das Script hat gut funktioniert und läuft einigermaßen flüssig. Danke für die Netzwerkvariante. So kann ich das Script leicht für weitere Rechner modifizieren, die sich dann an diesen anhängen. Werde ich morgen oder am Wochenende mal testen.
Ich muss sehen, wie sehr das stört, wenns nachher mehrere Bildschirme sind und immer noch ein klein wenig Tearing zeigt.
Das mit dem Wert ungleich 0 ist SCHLIMM. Eine Division durch Null darf damit nichts zu tun haben, jede Bildbearbeitungssoftware arbeitet mit Koordinaten von (0;0) als Bildschirmecke. Die gesamte Grafik Library Mathematik ist so aufgebaut. Ich bin ja auch Informatiker... Ich dachte es gäbe endlich mal ein Programm, bei dem nicht ich den Betatest machen muss... Für eine so verbreitete Software wie den VLC Player schockiert mich das schon.
Ich kann ja ein 1902x1082 Video machen mit einem 1 Pixel Rand ums Bild und das bei (-1;-1) positionieren. Nicht gerade ein elegante Lösung, aber in Fusion für mich nur eine Fingerübung von 10 Sekunden...
Und diese Bugs im Crop sind furchtbar. Ich vermute, hier beherrscht jemand der Dreisatz nicht. Das habe ich schon so oft durchexerziert...
Naja, vielleicht ist ja an den Nightly Builds was dran. Muss ich mal testen.
Wie immer: Vielen Dank für die Mühe. Wir nähern uns eine praktikablen Lösung.
Aber mal im Ernst:
Wäre es nicht toll, ein wirklich taktsynchrone Master/Slave Wiedergabe mit VLC realisieren zu können, um aus allen unterstützten Endgeräte eine Videowall zu bauen? Ich denke ich baue damit jetzt ein stromfressendes Monitorendlager in amorpher Form. Das wird spannend. Stell Dir vor es sitzen alle im Schwimmbad zusammen, es läuft Fussball. Handies zusammenlegen, Stream im Split und zack, Großbildfernsehen (mit Fensterkreuz). Ich sehe da viele durchaus nette Anwendungen.
Gruß
Axel -
- Offizieller Beitrag
Hallo Axel,
ja, wo fange ich am besten an. Warum sollte man die Bildposition x=0 und y=0 nicht verwenden, zumindest nicht mehrfach? Ist vielleicht auch ein Bug im Programm.
Im Grunde staune ich selbst, dass man über die crop-Funktion der Bildbeschneidung im VLC-Player vielleicht eine weitere Möglichkeit hat, eine Videowall zusammen zu bauen. Es gibt ja für diese Funktion (Mosaic, Videowall) bereits verschiedene andere Lösungen, die man mit dem VLC-Player realisieren kann. Die meisten davon gehen von einem Computer mit einem oder mehreren Bildschirmen aus.
Mal sehen, ob man an der Tearing bzw. VSync-Problematik etwas machen kann.
Die Idee verschiedene mobile Geräte für eine synchrone Videowiedergabe einzusetzen ist irgendwie spannend.
MfG
Thomas
-
Hallo Thomas,
Ich weiß, das einige professionelle Systeme zunächst den Netzwerk Handshake aushandeln, um auf einen gleichen Takt zu kommen (es wird die Laufzeit in jede Richtung gemessen und dann ein synchronisiertes Signal ausgetauscht. Idealerweise wird dieser Synchrontakt regelmäßig kontrolliert und ggf. justiert. Wenn das Netzwerk schnell genug ist (z.B. GBit LAN), dann sollte eine V-Sync synchrone Umschaltung machbar sein. Im Prinzip wird der Genlock über das Ethernet bereitgestellt, wobei der Takt ggf. etwas vorausläuft und jedes System seine individuelle Wartezeit drauf addiert, damit dann alle gleichzeitig umschalten. Andersherum geht es meiner Meinung nach auch nicht.
Man kann auch eine Autokalibration durchführen z.B. mit einer Kamera. Dann würde jeder Player einen Messpattern anzeigen, die Kamera nimmt das auf und kennt somit Lage, Größe, Orientierung und kann so ggf. aus einem großen Video das richtig Teilstück darauf anzeigen. In meinem Fall will ich jedoch den Content präzise für jeden Bildschirm vorproduzieren, das ist effizienter und hat eine höhere Qualität. Natürlich kann man mit einer Autokalibration auch den V-Sync ausloten.
Ja, wäre ein sehr spannendes Projekt. Wenn das funktioniert wird das glaube ich ein nettes Feature mit vielen spannenden Anwendungen. Vom spontanen "Zusammen Video schauen" bis hin zur Installationskunst, Messe, Event, Präsentation ist da so viel denkbar.
Naja, man darf träumen. Aber ich denke es ist im Grunde nur eine relativ kleine Erweiterung nötig, um den zentralen Takt auszuhandeln/vorzugeben.
Gruß
Axel -
Hallo Zusammen,
bei meinen Recherchen bin ich auf http://syncplay.pl/ gestoßen.
Damit kann man mehrere VLC Instanzen parallel steuern.
Ist kostenfrei.
LG Uwe
-
Hallo Uwe,
danke - das schau ich mir gerne an. Einige der wirklich guten Lösung sind auf ähnliches Weise entstanden - wobei es letztlich es etwas völlig anderes ist zwei Video zeitgleich oder wirklich taktsynchron abzuspielen. Vielleicht geht es ja besser als gedacht! Bin gespannt...
LG
Axel -
Hallo Uwe,
ich hab das SyncPlay jetzt mal schnell getestet und es ist sehr ernüchternd. Der externe Server erzeugt diverse Latenzen über das Internet und das Playback von Videos zweier direkt nebeneinander stehende Rechner, die vom selben lokalen Netzwerkserver ein Video abspielten war offensichtlich etwas asynchron. Mal war es ok, mal ein paar Frames auseinander. Am meisten jedoch nervte die Bildschirmanzeige, wer gerade bereit oder nicht bereit ist.
Damit kann man für den Zweck einer Videowall nicht wirklich arbeiten. Allenfalls die Software untendrunter könnte als Gerüst dienen, da was besseres zu entwickeln.
Schade. Aber mir gefällt der Gedanke in VLC selbst diese Funktion zu haben ohnehin viel besser. Im Grunde gibt es das ja schon (über den Netzwerkserver, wie oben in den Beispielen von Thomas auch schon umgesetzt). Allein an der Synchronität müsste man noch feilen und eine Methode finden, mit der man V-Sync überein bekommt.
Dennoch Danke! Ich kannte es noch nicht.
LG
Axel -
Ich glaube mittlerweile, das diese Network Sync Feature in VLC "Broken" ist. Je mehr ich probiere, umso mehr scheint sich das zu manifestieren.
Man findet im Netz Beiträge zur Version 0.8, mit der Leute seinerzeit erfolgreich synchron Musik aus mehreren Rechner in mehreren Räumen oder Ecken abspielen könnten. Hier würde man jede noch so kleine Latenz sehr viel mehr merken als im Bild. Und es lässt sich offenbar nicht mehr reproduizieren. Und zwei Videoplayer auf zwei Rechnern damit zu synchroniesieren scheint irgendwie nicht zu funktionieren.
Was mich auch etwas irritiert sind die ständig anderen Schreibweisen der Steuerkommandos. Und die Wiki scheint hier so mit auf dem ältesten Stand zu sein.
Einige User nutzen nun wohl den MPlayer um sowas hinzubekommen. Den schau ich mir jetzt auch mal an. Dennoch ist es super schade, das es in VLC die Grundlagen längst gibt, sie aber aus irgendeinem Grunde nicht funktionieren (oder nur bescheiden dokumentiert sind). Es ist zum verzweifeln...
LG
Axel -
- Offizieller Beitrag
Hallo Axel,
hallo Uwe,
will mich zum Thema wieder melden. Ich habe noch keine Rückmeldung bezüglich Tearing bzw. VSync von Videolan erhalten. Muss hier wahrscheinlich nachhaken.
Die Netzwerksynchronisierung im VLC-Player habe ich noch nicht getestet. Hier muss ich bei Gelegenheit noch eigene Versuche starten.
Laut dem verlinken Projekt-Beispiel der netzsynchronen Video-Wiedergabe von einem Smartphone über des Webinterface des VLC-Servers kann die Netzwerksynchronisierung nicht auf dem lokalen Computer erfolgen (vgl.: "...the local playback will be out of sync with the rest of the clients.").
Damit wird die in meinem Beispielscript enthaltene Netzwerksynchronisierung bei der lokalen Wiedergabe nicht funktionieren.
Kann mir gut vorstellen, dass in der aktuellen VLC-Version die Netzwerksynchronisierung Probleme bereiten kann. Habe selbst noch keinen Test mit der Netzwerksynchronisierung durchgeführt.
Man könnte eine der zuverlässigeren 32-Bit VLC-Versionen 2.0.8 und 2.1.5 ausprobieren.
Die verschiedenen Schreibweisen der Steuerkommandos sind für verschiedene Betriebssysteme (Linux, Windows) und zum Teil auch für ältere Versionen. Hier den Überblick zu behalten ist nicht ganz so einfach.
Es gibt einmal die Steuerung über die Benutzeroberfläche des VLC-Players und dann die umfangreiche Steuerung über die Kommandozeile.
Es gibt dann noch drei Terminal-Interfaces (rc, ncurses und telnet). Link: https://wiki.videolan.org/Console/
Zusätzlich steht z.B. auch noch eine Weboberfläche zur Steuerung des VLC-Players zur Verfügung.
Link: https://wiki.videolan.org/Web_Interface/
Dann gibt es noch die Web-Plugins für Internetbrowser, wo der VLC-Player in *.html-Seiten eingebunden werden kann.
Link: https://wiki.videolan.org/Documentation:WebPlugin/
...
Die vorhandenen Dokumentationen sollte man immer als Grundlage sehen bzw. zur Orientierung für die eigenen Beispiele verwenden.
Die wiki-Angaben sollten eigentlich den aktuellen Informationsstand haben.
Link: https://wiki.videolan.org/How_to/
Das Videolan-Forum und das VLC-Forum bieten eine weitergehende Unterstützung an.
Kodela hat hier im Forum viele nützliche Beispiele und Beschreibungen der Funktionen eingebracht.
Eine vollständige Dokumentation kann ich mir bei dem Funktionsumfang des VLC-Players nur schwer vorstellen.
Zumindest fängt früher oder später von den vielen Informationen der Kopf an zu rauchen.
Meine Erfahrung sagt mir, dass man viel Zeit braucht, um die Funktionen der Steuerung über die Kommandozeile zu verstehen und ebenso braucht man technisches Fachwissen für die digitale Signalverarbeitung.
Aus meiner Sicht helfen funktionierende Beispiel am besten um die Steuerung des VLC-Players zu verstehen.
Nützlich sind auf alle Fälle die von VLC-Anwendern eingebrachten Ideen und Hinweise, wie z.B. von Uwe bzgl. "Syncplay" oder die von dir eingebrachte Idee einer Videowall mit dem "Raspberry Pi".
MfG
Thomas
-