Autostart-plugin
(→Aktuelle Version) |
|||
(20 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
Zeile 2: | Zeile 2: | ||
'''Autor:''' Ulrich Eckhardt | '''Autor:''' Ulrich Eckhardt | ||
− | Ermöglicht das automatische Starten von Plugins beim | + | Ermöglicht das automatische Starten von Plugins oder Erzeugen von Keypress Events beim Einlegen von Wechselmedien. |
− | + | ||
− | + | ===Status=== | |
− | + | Letzes Update 06/2013 | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
==Softwareanforderungen== | ==Softwareanforderungen== | ||
− | + | * [http://www.gnu.org/software/libcdio/ libcdio] | |
− | * [http://www.gnu.org/software/libcdio/ libcdio | + | * [http://www.mplayerhq.hu/design7/news.html libdvdread] |
− | * [http://www.mplayerhq.hu/design7/news.html libdvdread | + | |
* [http://www.freedesktop.org/wiki/Software/dbus/ Dbus] | * [http://www.freedesktop.org/wiki/Software/dbus/ Dbus] | ||
− | * Devicekit-Disks oder besser UDisk | + | * Devicekit-Disks oder besser UDisk bzw UDisks2 |
==Installation== | ==Installation== | ||
Zeile 39: | Zeile 19: | ||
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 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: | Die folgenden zwei Schlüsselwörter müssen in jedem Abschnitt enthalten sein: | ||
{| class ="wikitable" | {| class ="wikitable" | ||
Zeile 89: | Zeile 50: | ||
Die Zeile "''keys = @externalplayer OK''" bedeutet, starte Plugin externalplayer und sende die OK Taste. | Die Zeile "''keys = @externalplayer OK''" bedeutet, starte Plugin externalplayer und sende die OK Taste. | ||
− | + | === Schlüsselwörter für den FILE-Media Tester === | |
{| class ="wikitable" | {| class ="wikitable" | ||
Zeile 102: | Zeile 63: | ||
|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. | |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. | ||
+ | <pre>; 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 plug-in | ||
+ | [MP3] | ||
+ | type = file ; File Media tester | ||
+ | files = mp3 ; Suffix to match | ||
+ | keys = @music YELLOW ; If a file ending with .mp3 is found, start music plug-in | ||
+ | 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 plug-in | ||
+ | keys = @image YELLOW DOWN RED RED | ||
+ | linkpath = /video/mount/image</pre> | ||
==== Beispielkonfiguration für das externalplayer-Plugin ==== | ==== Beispielkonfiguration für das externalplayer-Plugin ==== | ||
Zeile 113: | Zeile 102: | ||
OutputMode = extern; | OutputMode = extern; | ||
InputMode = slave; | InputMode = slave; | ||
− | BlockMenu = true; # This makes sense, | + | BlockMenu = true; # This makes sense, because an invisible main menu would block all the keys. |
vdrKeyUp = specialKeyPageUp; # See below for a full list of "special keys." | vdrKeyUp = specialKeyPageUp; # See below for a full list of "special keys." | ||
vdrKeyDown = specialKeyPageDown; | vdrKeyDown = specialKeyPageDown; | ||
Zeile 121: | Zeile 110: | ||
vdrKeyBack = noKey; | vdrKeyBack = noKey; | ||
vdrKeyRed = noKey; | vdrKeyRed = noKey; | ||
− | vdrKeyGreen = "<"; vdrkeyyellow= | + | vdrKeyGreen = "<"; |
+ | vdrkeyyellow = ">"; | ||
.... | .... | ||
}</pre> | }</pre> | ||
Zeile 137: | Zeile 127: | ||
<pre>/video/images; Bilder;0; *.jpg *.jpeg *.png *.tif* *.bmp | <pre>/video/images; Bilder;0; *.jpg *.jpeg *.png *.tif* *.bmp | ||
/video/mount/image; USB; 0; *.jpg *.jpeg *.png *.tif* *.bmp</pre> | /video/mount/image; USB; 0; *.jpg *.jpeg *.png *.tif* *.bmp</pre> | ||
− | |||
− | |||
===Parameter=== | ===Parameter=== | ||
Zeile 147: | Zeile 135: | ||
!Beschreibung | !Beschreibung | ||
|- | |- | ||
− | | -c <directory> || --configdir=<directory> || Konfigurationsverzeichnis | + | | -c <directory> || --configdir=<directory> || Konfigurationsverzeichnis |
|} | |} | ||
− | + | ||
+ | ===[[SVDRP]] Befehle=== | ||
+ | Die Medienerkennung kann mittels svdrpsend.pl plug autostart DETECT z.B. per Skript gestartet werden. | ||
+ | |||
+ | ==PolicyKit configuration== | ||
+ | Falls der VDR nicht als root oder unter X gestartet wird, hat VDR nicht die Berechtigung Geräte automatisch zu mounten. Im syslog findet sich in dem Falle folgende Fehlermeldung: | ||
+ | ''AutoMount DeviceKit Error dbusdevkit.cc dbus_connection_send_with_reply failed Not Authorized'' | ||
+ | |||
+ | Im Verzeichnis contrib des Plugins gibt es die Datei "com.vdr.autostart.pkla". Diese muss nach /var/lib/polkit-1/localauthority/10-vendor.d kopiert werden. Wird der VDR nicht mit dem vdr-Benutzer gestartet, muss in der Datei noch der Benutzer angepasst werden. | ||
+ | |||
+ | com.vdr.autostart.pkla: | ||
+ | <pre>[Mounting, checking, etc. of internal drives] | ||
+ | Identity=unix-user:vdr | ||
+ | Action=org.freedesktop.udisks.filesystem-* | ||
+ | ResultActive=yes | ||
+ | ResultAny=auth_admin | ||
+ | ResultInactive=yes</pre> | ||
==Probleme== | ==Probleme== | ||
Zeile 170: | Zeile 174: | ||
gdb $1 --core $2 --quiet --batch -ex "thread apply all bt full" -ex "where" -ex "quit"</pre> | gdb $1 --core $2 --quiet --batch -ex "thread apply all bt full" -ex "where" -ex "quit"</pre> | ||
Das erste Argument ist das VDR-Executable, das zweite Argument das Core-File. Diese Ausgabe kann man dann dem Bugreport noch anhängen. | 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 | + | ==Entwicklerversion== |
− | # [http://www.uli-eckhardt.de/vdr/download/vdr-autostart-0. | + | git clone http://git.uli-eckhardt.de/vdr-plugin-autostart.git |
− | + | ||
− | + | ==Aktuelle Version== | |
+ | # Version 0.9.7 mit UDisks2 support gibt es derzeit nur über die Projekthomepage oder git repository | ||
+ | # [http://www.uli-eckhardt.de/vdr/download/vdr-autostart-0.9.6.tgz Version 0.9.6] | ||
==Links== | ==Links== | ||
# [http://www.uli-eckhardt.de/vdr/autostart.de.html Homepage des Plugins] | # [http://www.uli-eckhardt.de/vdr/autostart.de.html Homepage des Plugins] | ||
− | # [http:// | + | # [http://git.uli-eckhardt.de/?p=vdr-plugin-autostart.git;a=summary Git Repository des Plugins] |
+ | |||
[[Kategorie:Plugins]] | [[Kategorie:Plugins]] | ||
+ | [[Kategorie:Medienspieler-Plugins]] | ||
{{i18n|autostart-plugin}} | {{i18n|autostart-plugin}} |
Aktuelle Version vom 14. Juli 2018, 13:03 Uhr
Inhaltsverzeichnis
|
[Bearbeiten] Beschreibung
Autor: Ulrich Eckhardt
Ermöglicht das automatische Starten von Plugins oder Erzeugen von Keypress Events beim Einlegen von Wechselmedien.
[Bearbeiten] Status
Letzes Update 06/2013
[Bearbeiten] Softwareanforderungen
- libcdio
- libdvdread
- Dbus
- Devicekit-Disks oder besser UDisk bzw UDisks2
[Bearbeiten] Installation
Das Plugin wird wie üblich installiert.
[Bearbeiten] 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.
[Bearbeiten] 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.
[Bearbeiten] 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. |
[Bearbeiten] 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.
[Bearbeiten] 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 plug-in [MP3] type = file ; File Media tester files = mp3 ; Suffix to match keys = @music YELLOW ; If a file ending with .mp3 is found, start music plug-in 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 plug-in keys = @image YELLOW DOWN RED RED linkpath = /video/mount/image
[Bearbeiten] 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, because 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 = ">"; .... }
[Bearbeiten] 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
[Bearbeiten] 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
[Bearbeiten] Parameter
Parameter (kurz) | Parameter (lang) | Beschreibung |
---|---|---|
-c <directory> | --configdir=<directory> | Konfigurationsverzeichnis |
[Bearbeiten] SVDRP Befehle
Die Medienerkennung kann mittels svdrpsend.pl plug autostart DETECT z.B. per Skript gestartet werden.
[Bearbeiten] PolicyKit configuration
Falls der VDR nicht als root oder unter X gestartet wird, hat VDR nicht die Berechtigung Geräte automatisch zu mounten. Im syslog findet sich in dem Falle folgende Fehlermeldung: AutoMount DeviceKit Error dbusdevkit.cc dbus_connection_send_with_reply failed Not Authorized
Im Verzeichnis contrib des Plugins gibt es die Datei "com.vdr.autostart.pkla". Diese muss nach /var/lib/polkit-1/localauthority/10-vendor.d kopiert werden. Wird der VDR nicht mit dem vdr-Benutzer gestartet, muss in der Datei noch der Benutzer angepasst werden.
com.vdr.autostart.pkla:
[Mounting, checking, etc. of internal drives] Identity=unix-user:vdr Action=org.freedesktop.udisks.filesystem-* ResultActive=yes ResultAny=auth_admin ResultInactive=yes
[Bearbeiten] 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.
[Bearbeiten] Entwicklerversion
git clone http://git.uli-eckhardt.de/vdr-plugin-autostart.git
[Bearbeiten] Aktuelle Version
- Version 0.9.7 mit UDisks2 support gibt es derzeit nur über die Projekthomepage oder git repository
- Version 0.9.6