Moin!
Zur Zeit baut gerade der vdr 2.0.6 im testing-PPA.
Änderungen gegenüber dem vorigem vdr 2.0.4:
- statt des "extra-video-directory Patch" ist der "hide-first-recording-level Patch" drin
- zusätzlich gibt es den "conf.d Patch"
- EDIT: Backport des recording hook "started" aus der vdr 2.1.x-Reihe
Bei den Plugins hat sich hier und da etwas getan, aber nicht viel (denke ich).Bei skinnopacity wurde das Nicht-Anzeigen der ersten Kanalinfo deaktiviert, man sieht jetzt also zuerst wieder ein unvollständiges OSD, aber dafür wundert man sich nicht, wenn der erste Druck auf "Menü" nichts tut.
EDIT: gab anscheinend doch Probleme, erst mal wieder Patch entfernt
Beim "hide-first-recording-level Patch" geht es darum, dass man per Parameter "--hide-first-recording-level" dem vdr sagen kann, dass er die erste Verzeichnis-Ebene im Video-Dir nicht darstellen und beim Sortieren missachten soll. Dadurch kann man in seinem Video-Dir mehrere Verzeichnisse erstellen, an denen z.B. NFS-Shares oder USB-Platten gemountet werden können (siehe auch avahi-linker). Lokale Aufnahmen muss man dann aber in das Unterverzeichnis "local" schieben. Dort entstehen auch die Aufnahmen des vdr. Dieses Feature ist nicht dafür gedacht, Aufnahmen auf dem Server zu machen, sondern diverse vdr-Aufnahmeverzeichnisse in einem Baum anzuzeigen. Der Clou ist auch, dass man alle Aufnahmen sieht (nicht wie evlt. bei Overlay-FS, wo sich manchmal Dateien überdecken können) und alle über die Platten verstreute Aufnahmen im gleichen Verzeichnis auch in der Liste zusammen dargestellt werden. Man muss also nicht mehr wissen, auf welcher Archiv-Platte die 3. Staffel seiner Lieblingsserie abgelegt war.
Also: lokale Aufnahmen nach "local" verschieben, Parameter aktivieren (/etc/default/vdr mit template o.ä.) und sich freuen.
Evtl. natürlich den avahi-linker noch konfigurieren, aber das wissen die, die das hier ausprobieren wollen, sicherlich schon, wie das geht. Ich frag dann immer seahawk1986, wenn ich dazu was wissen will...
Den "conf.d Patch" hat Copperhead ja schon vorgestellt. Wird der vdr ohne jegliche Parameter gestartet, liest er alle Dateien unterhalb von /etc/vdr/conf.d in alphabetischer Reihenfolge ein und erwartet pro Zeile einen Parameter. Die Dateien sind INI-mäßig aufgebaut, die vdr-Parameter müssen im Abschnitt "[vdr]" stehen, ist in einem Abschnitt ein anderer Name als "vdr" drin, wird das als Plugin-Name interpretiert und dieses Plugin wird dann geladen. Alle Parameter nach diesem Abschnitt werden an das Plugin übergeben.
vdr-Abschnitte können mehrfach auftauchen, die Parameter werden einfach in das argv-Array übertragen und an getopt übergeben. Der vdr wird sich also genauso verhalten, als ob man die ganzen Parameter auf der Kommandozeile übergeben hat.
Tauchen Plugin-Abschnitte mit gleichem Namen mehrfach auf, wird das Plugin auch mehrfach mit ggf. unterschiedlichen Parametern geladen.
Nützlich ist die Konfiguration in Dateien für die modernen Init-Systeme systemd und upstart, da dann das entsprechende Startscript sehr übersichtlich wird.
Gedacht ist, dass unter /etc/vdr/conf.avail die Distributoren ihre Dateien ablegen und dann nach /etc/vdr/conf.d verlinken. Aber letztendlich kann das auch jeder selbst entscheiden. Im yavdr-Team haben wir darüber noch nicht gesprochen, aber ich denke, wir werden unsere Auslieferkonfiguration unter /etc/vdr/conf.yavdr ablegen. Steht aber noch nicht fest, ist ja auch eine Menge Arbeit.
Praktisch ist dann auch, dass man z.B. das Verzeichnis unter git-Kontrolle stellen kann und so verschiedene Branches für unterschiedliche Konfigurationen benutzen kann. Macht das Backup und das Ausprobieren leichter...
Der Pfad kann über die Make.config (Variable ARGSDIR) gesetzt werden und von anderen Paketen/Programmen durch pkg-config abgerufen werden:
Für Plugins ist das Verzeichnis ähnlich Config-Dir usw. zur Laufzeit nicht abfragbar. Da die Plugins zur Zeit sowieso noch nicht dafür ausgelegt sind, zur Laufzeit ihre Parameter neu einzulesen, ist das nicht nötig.
Es gibt den neuen Parameter "--showargs", der die Dateien alle einliest und die Parameter auf stdout ausgibt, wie sie interpretiert wurden. Damit kann man seine Dateien vor dem Start testen, der vdr beendet sich bei Benutzung dieses Parameters sofort wieder (ähnlich "--help"). Wenn ihr euch angewöhnt, die Langnamen der Parameter zu benutzen, sieht das schon sehr übersichtlich aus.
So ist z.B. mein Test-vdr konfiguriert:
~$ vdr --showargs
--video=/srv/vdr/video.00
--config=/var/lib/vdr
--lib=/usr/lib/vdr/plugins
--record=/usr/lib/vdr/vdr-recordingaction
--shutdown=/usr/lib/vdr/vdr-shutdown.wrapper
--epgfile=/var/cache/vdr/epg.data
--user=vdr
--grab=/tmp
--port=6419
--resdir=/usr/share/vdr
--cachedir=/var/cache/vdr
--dirnames=,,1
--watchdog=0
--hide-first-recording-level
--userdump
--plugin=conflictcheckonly
--plugin=dbus2vdr --shutdown-hooks=/usr/share/vdr/shutdown-hooks --shutdown-hooks-wrapper=/usr/share/vdr-plugin-dbus2vdr/shutdown-wrapper --upstart --network --session --log=2
--plugin=epgsearch -f /usr/bin/svdrpsend
--plugin=epgsearchonly
--plugin=femon
--plugin=live --port=8008 --ip=0.0.0.0 --log=INFO --epgimages=/var/cache/vdr/epgimages
--plugin=menuorg
--plugin=quickepgsearch
--plugin=recsearch
--plugin=restfulapi --port=8002 --ip=0.0.0.0 --epgimages=/var/cache/vdr/epgimages --channellogos=/usr/share/vdr-channellogos
--plugin=skinnopacity --epgimages=/var/cache/vdr/epgimages --logopath=/var/lib/vdr/channellogos
--plugin=softhddevice -D
--plugin=streamdev-server
--plugin=tvguide -l /var/lib/vdr/channellogos/ -e /var/cache/vdr/epgimages/
--plugin=xineliboutput --local=none --primary --remote=127.0.0.1:37890 -d :1 --truecolor
--plugin=xmltv2vdr
--plugin=xvdr -t 10
--plugin=dynamite
Alles anzeigen
Und die Datei(en) dazu sehen so aus:
~$ for i in /etc/vdr/conf.d/*; do echo $i; cat $i; echo; done
/etc/vdr/conf.d/00-vdr.conf
[vdr]
--video=/srv/vdr/video.00
--config=/var/lib/vdr
--lib=/usr/lib/vdr/plugins
--record=/usr/lib/vdr/vdr-recordingaction
--shutdown=/usr/lib/vdr/vdr-shutdown.wrapper
--epgfile=/var/cache/vdr/epg.data
--user=vdr
--grab=/tmp
--port=6419
--resdir=/usr/share/vdr
--cachedir=/var/cache/vdr
--dirnames=,,1
--watchdog=0
--hide-first-recording-level
/etc/vdr/conf.d/01-vdr-dbg.conf
# create coredump for debugging
[vdr]
--userdump
/etc/vdr/conf.d/50-conflictcheckonly.conf
[conflictcheckonly]
/etc/vdr/conf.d/50-dbus2vdr.conf
[dbus2vdr]
--shutdown-hooks=/usr/share/vdr/shutdown-hooks
--shutdown-hooks-wrapper=/usr/share/vdr-plugin-dbus2vdr/shutdown-wrapper
--upstart
--network
--session
--log=2
/etc/vdr/conf.d/50-epgsearch.conf
[epgsearch]
-f /usr/bin/svdrpsend
/etc/vdr/conf.d/50-epgsearchonly.conf
[epgsearchonly]
/etc/vdr/conf.d/50-femon.conf
[femon]
/etc/vdr/conf.d/50-live.conf
[live]
--port=8008
--ip=0.0.0.0
--log=INFO
--epgimages=/var/cache/vdr/epgimages
/etc/vdr/conf.d/50-menuorg.conf
[menuorg]
/etc/vdr/conf.d/50-quickepgsearch.conf
[quickepgsearch]
/etc/vdr/conf.d/50-recsearch.conf
[recsearch]
/etc/vdr/conf.d/50-restfulapi.conf
[restfulapi]
--port=8002
--ip=0.0.0.0
--epgimages=/var/cache/vdr/epgimages
--channellogos=/usr/share/vdr-channellogos
/etc/vdr/conf.d/50-skinnopacity.conf
[skinnopacity]
--epgimages=/var/cache/vdr/epgimages
--logopath=/var/lib/vdr/channellogos
/etc/vdr/conf.d/50-softhddevice.conf
[softhddevice]
-D
/etc/vdr/conf.d/50-streamdev-server.conf
[streamdev-server]
/etc/vdr/conf.d/50-tvguide.conf
[tvguide]
-l /var/lib/vdr/channellogos/
-e /var/cache/vdr/epgimages/
/etc/vdr/conf.d/50-xineliboutput.conf
[xineliboutput]
--local=none
--primary
--remote=127.0.0.1:37890
-d :1
--truecolor
/etc/vdr/conf.d/50-xmltv2vdr.conf
[xmltv2vdr]
/etc/vdr/conf.d/50-xvdr.conf
[xvdr]
-t 10
/etc/vdr/conf.d/99-dynamite.conf
[dynamite]
Alles anzeigen
Man beachte vdr.conf und vdr-dbg.conf als Beispiel für das Verteilen der Parameter für den vdr auf mehrere Dateien oder "recsearch" für ein Plugin ohne Parameter.
Kommentare sind natürlich auch möglich.
So, während des Schreibens dieses Beitrags hab ich vergessen, ob ich noch irgendwas erläutern muss... Wird schon passen, ich bin auf eure Rückmeldungen gespannt.
Viel Spaß
wünscht Lars.