Hallo Thomas,
Vielen Dank für Dein Engagement. Ich werde das in Ruhe ausprobieren. Rechner sollten genug da sein.
Wenn ich das Script richtig verstehe, findet hier eine Neukodierung in Echtzeit für ein Streaming statt, oder?
Wird das nicht sehr auf die Ressourcen gehen?
Naja, wenn ich vorberechnete Videos je Bildschirm habe, sollte das Problem ja kleiner werden - die müsste dann ja nicht zwingend transkodiert werden.
Bin gespannt und melde mich!
MfG
Axel
Beiträge von Axel Mertes
-
-
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 -
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 -
-
-
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 -
-
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 -
-
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... -
-
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 -
-
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
-
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 -
-
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. -