Autostart-plugin
Inhaltsverzeichnis |
Beschreibung
Autor: Ulrich Eckhardt
Ermöglicht das automatische Starten von Plugins beim einlegen von Wechselmedien. Im Gegensatz zum mediad-Plugin ist man nicht auf vorkompilierte Plugins angewiesen, es lassen sich beliebige Plugins starten und ggf. Tastendrücke automatisch erzeugen.
Softwareanforderungen
- vdr >= 1.6
- libcdio >= 0.8.0
- libdvdread >= 4.1.0
- Dbus
- Devicekit-Disks oder besser UDisk
Installation
Das Plugin wird wie üblich installiert.
Konfiguration
Die Konfiguration des Plugins wird in der Datei $VDRCONFIG/conf/plugins/autostart/autostart.conf vorgenommen. Hier werden die Zuordnungen zwischen Medien und aufzurufenden Plugins konfiguriert.
Die autostart.conf ist ähnlich einer Windows ini Datei aufgebaut. Ein Abschnitt wird mit [Name] eingeleitet, darunter kommen Schlüssel/Werte Paare, getrennt durch ein =.
Der so genannte Media-Tester ist eine Instanz, die es ermöglicht nach bestimmten Medien zu suchen. Innerhalb eines Abschnittes muss der Media-Tester mittels einer "TYPE = tester" Zeile spezifiziert werden. Mittels des Schlüsselwortes KEY werden dann die Aktionen spezifiziert, die ausgeführt werden sollen sollen, wenn der Media-Tester ein entsprechendes Medium detektiert hat.
Schlüsselwörter für alle Media Tester.
Die folgenden zwei Schlüsselwörter müssen in jedem Abschnitt enthalten sein:
Schlüsselwort | Beschreibung | ||||||
---|---|---|---|---|---|---|---|
TYPE | Definiert die Instanz eines Media-Testers. Derzeit stehen folgende Media-Tester zur Verfügung:
| ||||||
KEY | Definiert das zu startende Plugin und die auszuführenden Tasten, wenn ein Medium eingelegt und erkannt wurde. Ein @ am Anfang des Namens kennzeichnet das zu startende Plugin. |
Die Zeile "keys = @externalplayer OK" bedeutet, starte Plugin externalplayer und sende die OK Taste.
Schlüsselwörter für den FILE-Media Tester
Keyword | Beschreibung |
---|---|
FILES | Datei-Endungen die der Media-Tester prüfen soll. |
LINKPATH | Generiert einen symbolischen Link vom automatisch gemounteten Medium zu einem fixen Verzeichnis. In der Sektion [MP3] zum Beispiel wird für einen USB-Stick, der z.B. automatisch nach /media/USB-Stick gemountet wird ein Link nach /video/mount/mp3 angelegt. |
GLOBAL Abschnitt
Hier gibt es das Schlüsselwort FILTERDEV. Hier sollte das root devices und alle devices eingetragen werden, die nicht automatisch geprüft werden. Wird FILTERDEV = AUTO eingetragen, so versucht das Plugin automatisch alle internen Platten anhand der /etc/fstab zu erkennen. Andere Devices, die auch nicht geprüft werden sollen, können hinter AUTO angehängt werden.
Beispiel für eine autostart.conf
Eine Audio-CD soll mit dem CD-Player Plugin abgespielt werden, eine Video-DVD via externalplayer-Plugin, ein USB-Stick oder Wechselplatte mit MP3-Files sollte mit dem Music Plugin abgespielt werden und bei Grafik-Dateien soll das Image Plugin verwendet werden.
; The global section contains definitions global to all detectors [GLOBAL] ; exclude the given devices from media detection, e.g. the root hard drives filterdev = sda sdb hda hdb [DVD] type = dvd ; DVD Media tester keys = @externalplayer OK [CD] type = cd ; CD Media tester keys = @cdplayer ; Start CD-Player plugin [MP3] type = file ; File Media tester files = mp3 ; Suffix to match keys = @music YELLOW ; If a file ending with .mp3 is found, start music plugin linkpath = /video/mount/mp3 [IMG] type = file ; File Media tester files = jpg gif bmp ; If a file ends with .jpg .gif or .bmp, start image plugin keys = @image YELLOW DOWN RED RED linkpath = /video/mount/image
Beispielkonfiguration für das externalplayer-Plugin
Bei dieser Konfiguration gibt es nur einen Menüpunkt, entsprechend ist es ausreichend nur einen OK-Tastendruck zu simulieren.
# Externalplayer-plugin example configuration. { Command = "xine -L --stdctl -c /video/etc/xine.conf dvd://"; MenuEntry = "Xine DVD"; OutputMode = extern; InputMode = slave; BlockMenu = true; # This makes sense, beause an invisible main menu would block all the keys. vdrKeyUp = specialKeyPageUp; # See below for a full list of "special keys." vdrKeyDown = specialKeyPageDown; vdrKeyLeft = specialKeyLeft; vdrKeyRight = specialKeyRight; vdrKeyOk = specialKeyReturn; vdrKeyBack = noKey; vdrKeyRed = noKey; vdrKeyGreen = "<"; vdrkeyyellow=">">">"; .... }
Beispielkonfiguration für das music-Plugin
Die musicsources.conf sollte für obiges Beispiel in der ersten Zeile folgenden Eintrag haben:
/video/mount/mp3;USB-Stick;0;*.mp3/*.ogg/*.wav/*.MP3/*.OGG/*.WAV/*.m3u/*.M3U/*.pls/*.PLS
Beispielkonfiguration für das image-Plugin
Ein etwas komplexeres Beispiel für das Image-Plugin:
/video/images; Bilder;0; *.jpg *.jpeg *.png *.tif* *.bmp /video/mount/image; USB; 0; *.jpg *.jpeg *.png *.tif* *.bmp
Parameter
Parameter (kurz) | Parameter (lang) | Beschreibung |
---|---|---|
-c <directory> | --configdir=<directory> | Konfigurationsverzeichnis |
SVDRP Befehle
Die Medienerkennung kann mittels svdrpsend.pl plug cdplayer DETECT z.B. per Skript gestartet werden.
Probleme
Um Probleme und Bugs zu Melden ist es hilfreich möglichst viele Ansatzpunkte zu haben. Entsprechend sollte dann der vdr mittels der Kommandozeilenoption -l 3 möglichst viele Debugging-Infos ins syslog loggen.
Bei Abstürzen ist ein Backtrace äußerst hilfreich. Dazu muß zumindest das Plugin mit Debugging-Informationen compiliert werden. Der Compiler muß mit der -g Option aufgerufen werden. In der Datei Make.config sollte dann folgendes stehen (noch besser ist es, das -O2 noch durch ein -O0 zu ersetzten):
### The C compiler and options: CC = gcc CFLAGS = -g -O2 -Wall CXX = g++ CXXFLAGS = -g -O2 -Wall -Woverloaded-virtual -Wno-parentheses
Dann in einer Shell mittels
ulimit -c unlimited
das schreiben eines Core-Files erlauben und aus der Shell den VDR starten. Nach dem Absturz gibt es dann eine Datei "core", die man mit folgendem Shell-Script auswerten kann:
#!/bin/sh gdb $1 --core $2 --quiet --batch -ex "thread apply all bt full" -ex "where" -ex "quit"
Das erste Argument ist das VDR-Executable, das zweite Argument das Core-File. Diese Ausgabe kann man dann dem Bugreport noch anhängen.
Aktuelle Version(en)
Mercurial Repository
hg clone http://hg.uli-eckhardt.de/autostart