Autostart-plugin

Aus VDR Wiki
(Unterschied zwischen Versionen)
Wechseln zu: Navigation, Suche
(Aktuelle Version(en))
(Aktuelle Version)
 
(14 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 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.
+
Ermöglicht das automatische Starten von Plugins oder Erzeugen von Keypress Events beim Einlegen von Wechselmedien.
<!-- ===Status=== -->
+
 
<!-- ==Bedienung== -->
+
===Status===
<!-- ===[[SVDRP]] Befehle===
+
Letzes Update 06/2013
Das Plugin kann mittels
+
          svdrpsend.pl plug autostart [Befehl]
+
gesteuert werden. Es stehen derzeit folgende Kommandos zur Verfügung:
+
{| class="wikitable"
+
|-
+
!Kommando
+
!Bescreibung
+
|-
+
| PLAY || CD abspielen
+
|-
+
| PAUSE || Pause
+
|-
+
| STOP || Stopp
+
|-
+
| NEXT || Nächster Titel
+
|-
+
| PREV || Vorheriger Titel
+
|} -->
+
<!-- ==Hardwareanforderungen== -->
+
  
 
==Softwareanforderungen==
 
==Softwareanforderungen==
* vdr >= 1.6
+
* [http://www.gnu.org/software/libcdio/ libcdio]
* [http://www.gnu.org/software/libcdio/ libcdio >= 0.8.0]
+
* [http://www.mplayerhq.hu/design7/news.html libdvdread]
* [http://www.mplayerhq.hu/design7/news.html libdvdread >= 4.1.0]
+
 
* [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 100: Zeile 80:
 
[CD]
 
[CD]
 
type = cd          ; CD Media tester
 
type = cd          ; CD Media tester
keys = @cdplayer    ; Start CD-Player plugin
+
keys = @cdplayer    ; Start CD-Player plug-in
 
[MP3]                                                                                                               
 
[MP3]                                                                                                               
 
type = file            ; File Media tester
 
type = file            ; File Media tester
 
files = mp3            ; Suffix to match  
 
files = mp3            ; Suffix to match  
keys = @music YELLOW    ; If a file ending with .mp3 is found, start music plugin
+
keys = @music YELLOW    ; If a file ending with .mp3 is found, start music plug-in
 
linkpath = /video/mount/mp3
 
linkpath = /video/mount/mp3
 
[IMG]
 
[IMG]
 
type = file            ; File Media tester
 
type = file            ; File Media tester
files = jpg gif bmp    ; If a file ends with .jpg .gif or .bmp, start image plugin
+
files = jpg gif bmp    ; If a file ends with .jpg .gif or .bmp, start image plug-in
 
keys = @image YELLOW DOWN RED RED
 
keys = @image YELLOW DOWN RED RED
 
linkpath = /video/mount/image</pre>
 
linkpath = /video/mount/image</pre>
Zeile 122: Zeile 102:
 
   OutputMode      = extern;
 
   OutputMode      = extern;
 
   InputMode        = slave;
 
   InputMode        = slave;
   BlockMenu        = true; # This makes sense, beause an invisible main menu would block all the keys.
+
   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 130: Zeile 110:
 
   vdrKeyBack      = noKey;
 
   vdrKeyBack      = noKey;
 
   vdrKeyRed        = noKey;
 
   vdrKeyRed        = noKey;
   vdrKeyGreen      = "<"; vdrkeyyellow=">">">";
+
   vdrKeyGreen      = "<";  
 +
  vdrkeyyellow     = ">";
 
         ....
 
         ....
 
}</pre>
 
}</pre>
Zeile 146: 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>
 
<!-- ===Einstellungen=== -->
 
  
 
===Parameter===
 
===Parameter===
Zeile 158: Zeile 137:
 
| -c <directory> || --configdir=<directory> || Konfigurationsverzeichnis
 
| -c <directory> || --configdir=<directory> || Konfigurationsverzeichnis
 
|}
 
|}
<!-- ==Sonstiges== -->
 
  
 
===[[SVDRP]] Befehle===
 
===[[SVDRP]] Befehle===
Die Medienerkennung kann mittels svdrpsend.pl plug cdplayer DETECT z.B. per Skript gestartet werden.
+
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 182: 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.  
<!-- ===Tipps=== -->
 
<!-- ===Wunschliste=== -->
 
  
==Aktuelle Version(en)==
+
==Entwicklerversion==
# [http://www.uli-eckhardt.de/vdr/download/vdr-autostart-0.9.2.tgz Version 0.9.2]
+
git clone http://git.uli-eckhardt.de/vdr-plugin-autostart.git
===Mercurial Repository===
+
 
<pre>hg clone http://hg.uli-eckhardt.de/autostart</pre>
+
==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://hg.uli-eckhardt.de/autostart Mercurial Repository des Plugins]
+
# [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

[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:
DVD Erkennt Video DVDs mittels libdvdread.
CD Erkennt Audio CDs mittels libcdio.
FILE Mountet Wechselmedien und versucht anhand der Endung den Dateityp zu erkennen.
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

  1. Version 0.9.7 mit UDisks2 support gibt es derzeit nur über die Projekthomepage oder git repository
  2. Version 0.9.6

[Bearbeiten] Links

  1. Homepage des Plugins
  2. Git Repository des Plugins
In anderen Sprachen