Videos fernsteuern über VLC

Erstellt am 13.12.08 von Markus, keine Kommentare, Tags: Informatik,

Um ein (bzw. verschiedene) Video(s) auf mehreren Rechnern zeitgleich abzuspielen, bedarf es einer Software, die sich fernbedienen lässt. Hierzu eignet sich der VLC-Player hervorragend, da er über ein eigenes Remote Control-Interface verfügt. Einsatzzwecke sind zum Beispiel Videowände, die alle Wände eines Raumes abdecken und somit einen 360°-Eindruck vermitteln sollen. Jede dieser Wände zeigt einen Ort aus einer anderen Richtung. Somit gibt es mehrere unterschiedliche Videos, die alle gemeinsam gesteuert werden sollen.

Das Remote Control Interface kann über vlc -I rc gestartet werden und ermöglicht nun die Eingabe von Befehlen. Über help kann eine komplette Liste angezeigt werden. Besonders hilfreich sind:

  • add: Ein Video der Playlist hinzufügen und abspielen
  • play: Abspielen des aktuellen Videos
  • stop: Beenden des aktuellen Vidos
  • seek: Springen an eine bestimmte Stelle (in Sekunden)
  • pause: Anhalten/Fortsetzen des aktuellen Videos
  • logout: Konsole verlassen, ohne VLC zu beenden

Um nun übers Netzwerk mehrere Rechner steuern zu können, muss VLC als Server gestartet werden. Dies wird unter Linux durch den Befehl vlc --rc-fake-tty --extraintf rc --rc-host ip:port & erreicht, also z.B.
vlc --rc-fake-tty --extraintf rc --rc-host 10.10.20.105:20000 & Unter Windows wird folgendes eingegeben:
vlc --extraintf rc --rc-host 10.10.20.105:20000 Um nun einem Rechner, auf dem ein VLC-Server mit Remote Control Interface läuft, einen Befehl zu erteilen, wird auf einem Linux-Rechner netcat 10.10.20.105 20000 < play eingegeben. Hierdurch wird auf dem Host mit der IP 10.10.20.105 der Anwendung auf Port 20000 (also VLC) der Inhalt der Datei play geschickt. In dieser Datei stehen folgende Zeilen:
play
logout
Der logout-Befehl ist notwendig, da über den netcat-Befehl die VLC-Konsole gestartet wird und diese wieder verlassen werden muss, um sie für den nächsten Befehl freizugeben. Für jeden VLC-Befehl sollten nun solche Dateien angelegt oder über ein Skript dynamisch erzeugt werden. Das folgende Bash-Skript erlaubt die einfache Fernsteuerung über den Aufruf skriptname vlc_befehl, z.B. videoctrl play.


#!/bin/bash
clear
echo "commando: $1"
net="10.10.20."
ip[0]=$net"103"
ip[1]=$net"104"
ip[2]=$net"114"
ip[3]=$net"113"
ip[4]=$net"105"
port=20000
echo "specified port: $port"
for address in ${ip[@]}
do
  echo "starting on $address"
  netcat $address $port < $1
done

Hierdurch wird der angegebene Befehl an die definierten Hosts geschickt. Dabei sollte der Steuerrechner der Einfachheit halber ein Linux-basiertes System sein, da es sich so sehr einfach gestaltet einen SSH-Zugriff einzurichten, um von einem anderen Rechner aus Kontrolle über die Videos erhalten zu können und es weiterhin möglich ist, über netcat Befehle an beliebige Rechner zu versenden. Die Videos liegen dabei lokal auf jedem Rechner vor. Dies ist im Gegensatz zum Streaming wesentlich schneller und zeitunkritischer. Das Bash-Skript liegt nur auf dem Steuerrechner.

Über diese Methode können auf einfache Art und Weise Videos auf verschiedenen Rechnern (relativ synchron) gesteuert werden. Dies kann für verschiedene Projekte und Events interessant sein.

Quelle & weitere Infos: Advanced use of VLC

Kommentare

Noch keine Kommentare.

Kommentar erstellen