Daniels Blog
19Jan/110

Mehrere Videos synchron ferngesteuert übers Netzwerk starten mit VLC

Eine befreundete Designstudentin wollte für die Präsentation ihrer Diplomarbeit eine Videoinstallation aufbauen. Auf im Raum angeordneten Fernsehern sollten parallel 3 von ihr erstellte Filme laufen und gleichzeitig gestartet werden. Die 3 Filme sind so geschnitten, dass sie gemeinsam ein Gesamtkunstwerk (und hoffentlich eine gute Abschlussnote) ergeben. Ein Veranstaltungsunternehmen verlangte für den Aufbau einige 1000 Euro. Das überstieg das Budget meiner Bekannten leider um einige 1000 Euro, deshalb haben wir den Aufbau selbst mit Open Source Software zusammengefrickelt. 3 (Windows)-Notebooks wurden per HDMI an die jeweiligen Fernseher angeschlossen und über einen Switch vernetzt. Ein viertes (Linux)-Notebook diente als zentraler Steuerrechner. Der VLC Media-Player bietet neben einer hervorragenden Unterstützung fast aller Videoformate auch viele weitere nützliche Funktionen. In diesem Aufbau kam das Remote Control Interface des VLC zum Einsatz, das es ermöglicht, den Player übers Netzwerk oder das Internet komplett fernzusteuern.

Die Windows Rechner bekamen die IP's 192.168.0.1 bis 192.168.0.3. Der Linux-Steuer-Rechner die IP 192.168.0.100.
Das Fernsteuerungsskript ist angelehnt an das Tutorial von Markus Berg (vielen Dank).

#/bin/bash

ip[0]="192.168.0.1"
ip[1]="192.168.0.2"
ip[2]="192.168.0.3"

port=20000

function send_cmd {

for address in ${ip[@]} 
	do 
                echo "$1" | nc $address $port &
	done

}


while ( [ 1 ] )
do
clear
echo "Video Command"
echo
echo " s  | START"
echo " p  | PAUSE/PLAY"
echo " z  | ZURUECKSPULEN"
echo " zp | ZURUECKSPULEN + PAUSE"
echo " f  | VOLLBILD AN/AUS"
echo " b  | Beenden"
echo
echo

echo
echo -n "Kommando? "
read command

case "$command" in
     s)
	   send_cmd play
           ;;
     p)
	   send_cmd pause
           ;;
     z)
	   send_cmd prev
           ;;
     zp)
	   send_cmd prev
	   perl -e 'select(undef,undef,undef,.3)'
	   send_cmd pause
           ;;
     f)
	   send_cmd fullscreen 
           ;;
     b)
	   exit
	   ;;
esac
done;

Dieses Skript auf dem Steuerungsrechner ergibt dieses spartanische menü:

Video Command

 s  | START
 p  | PAUSE/PLAY
 z  | ZURUECKSPULEN
 zp | ZURUECKSPULEN + PAUSE
 f  | VOLLBILD AN/AUS
 b  | Beenden



Kommando? 

Auf den Windowsrechner musste nun nur noch aus der Windows-Konsole heraus VLC im Remote Control Modus gestartet werden:

vlc --extraintf oldrc --rc-host 192.168.0.1:20000

Nun wurde noch das Video in die jeweilige VLC-Playlist eingefügt. Die Fernsteuerung war fertig.

Leider gab es (wie fast immer) einige Fallstricke. Bei unseren Tests zickte zunächst die Windows-Firewall herum. Für die Präsentation musste diese deaktiviert werden. Generell war Windows keine besonders gute Wahl für die Präsentation, da Update-Meldungen, Avira-Popups und andere Nervereien natürlich im Video ziemlich peinlich wirken. Die Windows-Rechner mussten ziemlich kastriert werden. Firewalls, Virenscanner und Automatische Updates wurden deaktiviert. Zahlreiche Programme, die es sich im Tray gemütlich gemacht hatten, wurden deinstalliert. Im Endeffekt würde ich beim nächsten Mal das Abspielen auch mit Linux Clients realisieren, die aber wegen des Zeitdrucks nicht verfügbar waren.

hat dir dieser Artikel gefallen?

Dann abonniere doch diesen Blog per RSS Feed!

Kommentare (0) Trackbacks (0)
  1. Hallo,
    ich habe es heute auch ausprobiert, da ich das gleiche Problem habe, leider funktioniert es bei mir nicht? gibt es hier irgend was neues

  2. Hallo Michael,
    ich habe leider keinerlei Erfahrungen mit Macs, deshalb kann ich leider nicht helfen, aber falls Du eine Lösung findest kannst Du sie gerne hier posten. lG Daniel

  3. Hi Daniel,

    danke für einen Beitrag her, der hat mir schon einmal bei einer Ausstellung geholfen, 4 Videos synchron zu projizieren. Nun versuche ich nach 3 Jahren das gleiche noch einmal mit der selben, überarbeiteten Installation. Damals habe ich 4 Linux Rechner benutzt und es klappte alles wunderbar. Nun fehlt mir ein Linux Rechner und dafür will ich Mac Mini nutzen (mich interessiert es auch einfach, ob es auch mit Mac realisierbar wäre). Dein Befehl für die Windowsrechner funktioniert bei mir auf den Linux Systemen wunderbar, allerdings unter Win10 im CMD (C:\Users\USER>) fehlt mir anscheinend ein Befehl. Unter Mac bekomme ich den VLC zwar über die Konsole geöffnet, aber weiß nicht wie ich die Optionen anwenden kann.
    Vielleicht hast du da eine Lösung für mich.
    Die Seite von Markus Bei ist leider auch nicht mehr online. Ich glaube da hatte ich mich damals auch noch bedient.

  4. Hallo,

    Ich habe für eine Kubstausstellung mal etwas ähnliches realisiert.

    Dabei sollten parallel zu echten Kunstwerken auch Fotographien, Videos und PowerPoints abgespielt werden (einige Künstler wollen die Effekte etc gaanz genau selber bestimmen 😉 )

    Wer hier Kommentare bringt wie „Matrox xx wäre das besser gegangen“ oder „jede graka kann 3 Bildschirme,“, der hat selber so etwas noch nie realisiert.
    Erstmal sind die Fernseher im Raum angeordnet, d.h. u.U. weit auseinander.
    Da bräuchte man wieder längere VGA oder DVI bzw HDMI Kabel. Das kostet.
    Ausserdem sind mehrere parallele Player etc auf einem Rechner nicht soo einfach.

    Die Lösung mit den Laptops ist ideal. Man brauch keine kabel zusätzlich kaufen und kann bestehende Hardware nutzen.
    Für eine einmalige sache lohnt es sich nicht irgenwas zu kaufen.
    Das Script ist schnell geschrieben und verhindert auch komische mauszeiger auf den Präsentationen.

    Viele grüße
    Vincent

  5. Viele neuere Grakas haben 3 Ausgänge! Und in Windows kann man locker 3 Monitore verwalten und fertig! 🙂
    Hättest nur mit ner Batch 3 VLCs parallel starten müssen auf den 3 Monitoren…

  6. ist auch eine Endlosschleife mit diesem Script auf den Windows Rechnern realisierbar? d.h. das die Filme synchron den gesamten Tag über die Präsentation abspielen.

  7. Schöne Sache. Evtl. wäre auch eine Matrox Graka im „Videoserver-Rechner“ eine Lösung.


Leave a comment

Noch keine Trackbacks.