Chapter 4.  Konfiguration

Table of Contents

Allgemeine Struktur
Schreiben einer vls.cfg-Datei

VLS liest seine Einstellungen aus der Konfigurationsdatei vls.cfg, welche im aktuellen Verzeichnis oder in SYSCONF_DIR/videolan/vls sein sollte (wobei SYSCONF_DIR /usr/local/etc, wenn Sie VLS von Hand erstellt und installiert haben, oder /etc ist, wenn Sie das binäre Debianpaket installiert haben.).

Um eine vls.cfg-Datei zuschreiben, nehmen Sie am Besten die mit VLS mitgelieferte als Ausgangspunkt.

Allgemeine Struktur

Die Konfigurationsdatei vls.cfg ist in Sektionen aufgeteilt. Jede darf mehrere Variablen enthalten:

 

BEGIN "ErsteSektion"
  Variable1 = "Wert1"
  Variable2 = "Wert2"
  [...]
END

BEGIN "ZweiteSektion"
  Variable1 = "Wert1"
  Variable3 = "Wert3"
  [...]
END

[...]

Alle Sektionsnamen, Variablennamen und Werte sind nicht case-sensitive, d.h. sie werden unabhängig von Groß oder Kleinschreibung ausgewertet. Es darf leere Sektionen und Untersektionen geben. Kommentare müssen einem # folgen. Einige Variablen haben einen standardmäßigen Wert. Dies bedeutet, dass Sie die Deklaration dieser Variablen weglassen können. Dann wird diesen ihr Standardwert zugewiesen.

Schreiben einer vls.cfg-Datei

Nun folgt eine Erklärung aller Sektionen, die in einer vls.cfg-Datei gefunden werden können:

Section "VLS"

Diese Sektion enthält programmweite Einstellungen.

LogFile = "name"

Der Name der VLS-Logdatei. Wenn er leer ("") gelassen wird, wird kein Protokoll in einer Datei gespeichert. Der Standardwert ist "vls.log".

SystemLog = "[disable|enable]"

Protokollierung im Log des Systems. Derzeit wird nur syslog unterstützt. Kompilieren SIe mit ./configure --enable-syslog.

Caution

Wenn VLS durch vlsd gestartet wird, ist die folgende Konfiguration verbindlich:

BEGIN "Vls"
  LogFile   = ""
  SystemLog = "enabled"
  ScreenLog = "disabled"
END
ScreenLog = "[disable|enable]"

Protokollierung in der Konsole.

Beispiel:

BEGIN "Vls"
  LogFile   = "vls.log"
  SystemLog = "disable"
  ScreenLog = "enable"
END

Sektion "Groups"

In dieser Sektion können Sie Benutzergruppen und die Befehle, die diese ausführen dürfen, festlegen. Für jede Gruppe, die Sie festlegen möchten, müssen Sie eine Zeile im folgenden Format hinzufügen:

groupname = "command1|command2|..."

Diese fügt eine Gruppe "groupname" hinzu, deren Nutzern erlaubt ist, command1, command2 usw. auszuführen. Derzeit sind die verfügbaren Befehle help, browse, start, suspend, resume, forward, rewind, stop, shutdown und logout.

Beispiel:

BEGIN "Groups"
  monitor = "help|browse|logout"
  master  = "help|browse|start|resume|suspend|forward|rewind|stop|shutdown|logout"
END

Sektion "Users"

Diese Sektion enthält eine Liste von Benutzern, denen es gestattet ist, VLS durch ein Administrationsinterface zu steuern. Fügen Sie für jeden Benutzer eine Zeile im folgenden Format hinzu:

username = "password:groupname"

Dies fügt einen Benutzer "username" hinzu, der zur Gruppe "groupname" gehört, wie sie in der "Groups"-Sektion festgelegt wurde, und sich mit dem Passwort "password" anmelden kann.

  • Unter Unix/Linux muss das Passwort mit einem Tool wie mkpasswd oder mit der Unix-Funktion "crypt" verschlüsselt werden.

  • Unter Windows muss das Passwort in klaren Text sein.

Beispiel für Unix/Linux:

BEGIN "Users"
  monitor = "3BcKWoiQn0vi6:monitor"       # password is 'monitor'
  admin   = "42BKiCguFAL/c:master"        # password is 'Vir4Gv5S'
END

Sektion "Telnet"

In dieser Sektion können Sie das Telnetadministrationsinterface einstellen.

LocalPort = "port"

Legt fest, welcher Port für den Telnetserver benutzt werden wird. Der Standardport ist "9999".

Domain = "domain"

Entweder "inet4" oder "inet6" (der Standard ist "inet4"). Wenn Sie IPv4-Adressen benutzen möchten, nehmen Sie "inet4". Wenn Sie IPv6 benutzen möchten, nehmen Sie "inet6".

LocalAddress = "IP address"

Legt fest, auf welcher IP-Adresse der Telnetserver nach Befehlen hören wird. Die Standardadresse ist "0.0.0.0" (oder "0::0" bei IPv6).

Beispiel:

BEGIN "Telnet"
  LocalPort = "9999"
END

Sektion "NativeAdmin"

Die gleiche Syntax wie "Telnet". Wird noch nicht benutzt.

Sektion "Inputs"

In dieser Sektion legen Sie fest, welche Inputs Sie benutzen möchten. Fügen Sie für jeden Input, den Sie benötigen, eine Zeile im folgenden Format hinzu:

InputName = "Type"

Dies fügt einen Input namens "InputName" hinzu, dessen Typ "Type" ist. Wie bereits erklärt, gibt es mehrere Arten von Inputs:

  • "local", um einen Stream aus einer Datei oder einer DVD wiederzugeben ,

  • "video", um einen Stream einer MPEG-Kodierungskarte wiederzugeben ,

  • "dvb", um einen Stream einer DVB-Karte wiederzugeben ,

  • "v4l" um einen Stream eines Video4Linux-Gerätes wiederzugeben.

Jeder Input muss in seiner eigenen Sektion konfiguriert werden (siehe den nächsten Abschnitt).

Beispiel:

BEGIN "Inputs"
  local1 = "local"
  pvr    = "video"
  dvb1   = "dvb"
  tuner  = "v4l"
END

Konfiguration der Inputs

Für jeden Input, der in der "Inputs"-Sektion deklariert wurde, müssen Sie, abgesehen von "local"-Inputs, eine Sektion mit dem gleichen Namen hinzufügen. Wenn Sie beispielsweise den Input "pvr" deklariert haben, sollte es auch eine Sektion namens "pvr" geben. Die Syntax solcher Sektionen hängt vom Typus des Inputs ab.

Um einen lokalen Input zu konfigurieren, müssen Sie nichts tun, es sei denn, dass eine andere "trickplay"-Strategie benutzt werden muss:

BEGIN "Local1"
  ProgramCount = "1"
  TrickPlay    = "normal"
END

"Local1" ist der Name des lokalen Inputs, den Sie konfigurieren möchten. "ProgramCount" ist die Anzahl von Programmen, die diesem Input zugewiesen worden sind. "TrickPlay" ist die trickplay-Strategie, die von diesem Input benutzt wird (standardmäßig "normal").

Um einen Video-Input zu konfigurieren, fügen Sie eine Sektion im folgenden Format hinzu:

BEGIN "VideoInputName"
  Device = "device"
  Type   = "type"
END

"VideoInputName" ist der Name des Video-Inputs, den Sie konfigurieren möchten. "Device" ist der Pfad der MPEG-Kodierungskarte, von der Sie lesen möchten (standardmäßig "/dev/video"). "Type" ist entweder "Mpeg2-PS" oder "Mpeg2-TS", entsprechend Ihrer Geräteinstellung (standardmäßig "Mpeg2-PS").

Beispiel für eine Hauppauge WinTV-PVR-250 - Karte:

BEGIN "pvr"
  Device = "/dev/video0"
  Type   = "Mpeg2-PS"
END

Um einen DVB-Input zu konfigurieren, fügen Sie eine Sektion im folgenden Format hinzu:

BEGIN "DvbInputName"
  DeviceNumber = "devicenumber"
  SendMethod   = "0"
END

Beispiel:

BEGIN "dvb1"
  DeviceNumber = "0"
  TrickPlay = "normal"
END

Sektion "Channels"

In dieser Sektion können Sie die Channel (Outputs), die Sie benutzen möchten, definieren. Fügen Sie pro Channel eine Zeile im folgenden Format hinzu:

ChannelName = "Type"

Dies fügt einen Channel namens "ChannelName" hinzu, dessen Typ "Type" ist. "Type" muss entweder "network" oder "file". Wie Inputs müssen Channel in ihrer eigenen Sektion konfiguriert werden.

Beispiel:

BEGIN "Channels"
  localhost  = "network"
  client1    = "network"
  client2    = "network"
  multicast1 = "network"
  multicast2 = "network"
  localfile  = "file"
END

Konfiguration der Channel

Für jeden in der "Channels"-Sektion deklarierten Channel müssen Sie eine Sektion mit dem gleichen Namen hinzufügen. Die Syntax einer solchen Sektion hängt vom Typus des entsprechenden Channels ab.

Um einen network-Channel zu konfigurieren, fügen Sie eine Sektion im folgenden Format hinzu:

BEGIN "NetChannelName"
  Domain    = "Domain"
  Type      = "Type"
  SrcHost   = "SourceHost"
  SrcPort   = "SourcePort"
  DstHost   = "DestHost"
  DstPort   = "DestPort"
  TTL       = "ttl"
  Interface = "Interface"
END
  • "NetChannelName" ist der Name des network-Channels, den Sie einstellen möchten.

  • "Domain" ist entweder "inet4", wenn Sie IPv4-Adressen benutzen, oder "inet6", wenn Sie IPv6 benutzen (standardmäßig "inet4").

  • "Type" ist entweder "unicast", "broadcast" oder "multicast" (standardmäßig "multicast"), abhängig von dem, was Sie machen möchten (und Ihrer "DstHost"-Adresse).

  • "SourceHost" ist die IP-Adresse (oder der DNS-Name) von der VLS den Stream senden wird.

  • "SourcePort" ist der UDP-Port von dem der Stream gesendet werden wird.

  • "DestHost" ist die IP-Adresse (oder der DNS-Name), an den der Stream gesendet werden wird.

  • "DestPort" ist der UDP-Port, an den der Stream gesendet werden wird (standardmäßig "1234").

  • "TTL" ist nur dann eine nützliche Option, wenn "Type" "multicast" ist. Der Standardwert ist "0". Sie können ihn zur Erhöhung der TTL Ihrer Multicast-Pakete benutzen, wenn diese mehrere Router überqueren müssen.

  • "Interface" ist eine nur unter GNU/Linux unterstützte Option, um das Senden des Streams über ein bestimmtes Netzwerk-Interface, beispielsweise "eth1", zu erzwingen. Zur Benutzung dieser Option benötigen Sie root-Rechte.

Note

"SrcHost" und "SrcPort" sind optional (wenn Sie sie nicht einstellen, wird VLS das Socket nicht "binden".

Um einen file-Channel einzustellen, fügen Sie eine Sektion im folgenden Format hinzu:

BEGIN "FileChannelName"
  FileName = "file"
  Append   = "append"
END

"FileChannelName" ist der Name des file-Channels, den Sie einstellen möchten. "file" ist der Name der Datei, in der Stream gespeichert werden wird (standardmäßig "fileout.ts"). "append" ist entweder "yes" oder "no" und legt fest, ob VLS den Stream an der Ende der Datei anhängen oder sie neu schreiben wird.

Beispiel:

BEGIN "localhost"         # The client is on the same host as the server
  DstHost = "localhost"
  DstPort = "1234"
END

BEGIN "client1"           # unicast towards client1
  DstHost = "192.168.1.2"
  DstPort = "1234"
END

BEGIN "client2"           # unicast towards client2 in IPv6
  Domain  = "inet6"
  DstHost = "3ffe:ffff::2:12:42"
  DstPort = "1234"
END

BEGIN "multicast1"         # multicast streaming
  Type    = "multicast"
  DstHost = "239.2.12.42"
  DstPort = "1234"
  TTL     = "2"
END

BEGIN "multicast2"         # multicast streaming in IPv6
  Domain  = "inet6"
  Type    = "multicast"
  DstHost = "ff08::1"
  DstPort = "1234"
  TTL     = "12"
END

BEGIN "localfile"         # file output
  FileName = "stream.ts"
  Append   = "no"
END

Caution

Wenn Sie Windows benutzen, sollten Sie die "SrcHost" und "SrcPort" Werte festlegen. Zum Beispiel:

BEGIN "client1"         # The client is on the same host as the server
  SrcHost = "192.168.1.1"  # IP of VLS
  SrcPort = "1242"         # Source port : the value is not important
  DstHost = "192.168.1.2"  # IP of the client
  DstPort = "1234"
END

Konfiguration der Programme

Wie bereits erklärt, müssen Sie die Programme definieren. Jedes ist ein MPEG-Stream (eine Datei beispielsweise). Um dies zu tun, müssen Sie eine "Input"-Sektion Ihrer vls.cfg-Datei hinzufügen. Jede "Input"-Sektion muss die folgende Syntax haben:

BEGIN "Input"
  FilesPath    = "path"
  ProgramCount = "count"
END

"path" ist der Pfad, in dem Ihre MPEG-Dateien gespeichert sind (standardmäßig das aktuelle Verzeichnis). "count" ist die Anzahl von definierten Programmen (standardmäßig "0").

Für jedes Programm, das Sie definieren möchten, müssen Sie eine Sektion im folgenden Format hinzufügen:

BEGIN "number"
  Name     = "name"
  Type     = "type"
  FileName = "file"
  Device   = "device"
END
  • "number" ist die Programm-Nummer: das erste Programm hat die Nummer 1, das Zweite die Nummer 2, usw.

  • "name" ist der Name des Programms, den Sie zum Start des Programms benutzen (siehe dazu das nächste Kapitel).

  • "type" kann "Mpeg1-PS", "Mpeg2-PS", "Mpeg2-TS", oder "DVD" sein. Wenn Ihr Stream in einer MPEG-Datei (*.mpeg, *.mpg, *.vob, usw.) gespeichert ist, wird es wahrscheinlich im Mpeg1-PS oder Mpeg2-PS - Format sein.

  • Falls "type" auf Mpeg1-PS", "Mpeg2-PS" oder "Mpeg2-TS" eingestellt, wird VLS annehmen, dass der Stream in der Datei "file" im Verzeichnis "path" gespeichert ist (die "path"-Variable wurde in der "Input"-Sektion festgelegt).

  • Falls "type" "DVD" ist, wird die Variable "Device" anstatt von "FileName" benutzt werden (die Variable "FilesPath" wird nicht auf den Devicenamen angewendet!). Die Variable "Device" ist das Device Ihres DVD-Laufwerkes (beispielsweise "/dev/hdc" oder "/dev/cdrom"). Sie können auch eine auf eine Festplatte kopierte DVD wiedergeben. Dann ist "Device" das Verzeichnis, in dem die .vob-Dateien gespeichert sind (beispielsweise "/mnt/data/VIDEO_TS").

Note

VLS kann MPEG-Dateien streamen, die zwei Kriterien entsprechen

  • Die Datei muss entweder MPEG PS (Program Stream) oder MPEG TS (Transport Stream) sein, das gemultiplextes Bild und Ton enthält.VLS kann kein MPEG ES (Elementary Stream), d.h. eine Datei mit nur Ton oder Bild, streamen..

    Um zu erfahren, ob eine MPEG-Datei MPEG PS, MPEG TS oder MPEG ES, lesen Sie die Datei mit VLC und schauen Sie auf die Meldungen (im Meldungenfenster oder benutzen Sie die Befehlszeile vlc -vvv).

    • Wenn Sie sehen:

      [00000107] main module debug: using demux module "ts_dvbpsi"
      

      ist die Datei MPEG TS.

    • Wenn Sie sehen :

      [00000109] main module debug: using demux module "ps"
      

      ist die Datei MPEG PS.

    • Wenn Sie sehen:

      [00000109] main module debug: using demux module "es"
      

      ist die Datei MPEG ES, was VLS nicht streamen kann.

  • Der Sequenz-Header des Videos muss sich selbst regelmäßig wiederholen, was bei MPEG-2 oft der Fall ist, jedoch selten bei MPEG-1. Es gibt keinen einfachen Weg zu erfahren, ob der Sequenz-Header regelmäßig wiederholt wird. Datei mit einem .vob-Suffix sind normalerweise MPEG-2 - Dateien und Datein mit dem .mpg. oder .mpeg-Suffix sind üblicherweise MPEG-1 - Dateien.

Sie können diese streambare MPEG-2 PS - Datei für Ihre Tests herunterladen: presentation_short.vob.

Note

Um DVDs wiedergeben zu können, müssen Sie VLS mit DVD-Unterstützung, die libdvdread und libdvdcss benutzt, kompilieren. Sie werden Lese- und Schreibzugriff auf das DVD-Device benötigen.

Komplettes Beispiel:

BEGIN "Input"
  FilesPath = "/home/videolan/streams"
  ProgramCount = "4"
END

BEGIN "1"     # MPEG2 stream stored in /home/videolan/streams/Dolby.vob
  Name     = "dolby"
  FileName = "Dolby.vob"
  Type     = "Mpeg2-PS"
END

BEGIN "2"     # another file
  Name     = "canyon"
  FileName = "Dolby_Canyon.vob"
  Type     = "Mpeg2-PS"
END

BEGIN "3"     # DVD
  Name     = "dvd"
  Device   = "/dev/cdrom"
  Type     = "Dvd"
END

BEGIN "4"     # DVD stored on a hard disk
  Name     = "matrix"
  Device   = "/mnt/data/matrix/VIDEO_TS"
  Type     = "Dvd"
END