Für yaVDR werden verschiedene Dienste und Methoden kombiniert um eine Verzeichnisstruktur zu erzeugen, die es erlaubt lokale und von anderen Computern eingebundene Freigaben zusammenzuführen und gemeinsam im Dateisystem abzubilden.
Für lokal abgelegte Musik, Filme und Bilder existieren bereits Verzeichnisse unter /srv/, die per NFS und SAMBA im Netzwerk freigegeben sind, die Aufnahmen des VDR liegen unter /srv/vdr/video.00 und werden als recordings via Samba exportiert (siehe Tabelle)
Tabelle 2.1. Verzeichnisse für lokale Medien in yaVDR
Kategorie | Pfad | NFS | SAMBA |
---|---|---|---|
Bilder | /srv/picture | /srv/picture | picture |
Musik | /srv/audio | /srv/audio | audio |
Videos | /srv/video | /srv/video | video |
Aufnahmen | /srv/vdr/video | /srv/share/vdr | recordings |
Unterstützung mehrerer Aufnahmeverzeichnisse | |
---|---|
Beim VDR > 2.1.3 ist die Unterstützung für das automatische Verteilen von Aufnahmen auf mehrere Verzeichnisse entfallen. Daher unterstützt yaVDR 0.6 auch den NFS-Export dieser Verzeichnisstruktur über mhddfs nicht mehr. Wer noch die alte Aufteilung nutzt, sollte daher rechtzeitig eine Umstellung der Verzeichnisstruktur planen. |
Der Avahi-Linker ist ein Python-Skript, das nach Avahi-Announcements für NFS-Freigaben im Netzwerk sucht und diese - falls eine gültige Service-Konfiguration existiert - automatisch zusammen mit den lokalen Medien unter /media/<Kategorie>/<Ort der Dateien> verlinkt. Freigaben mit dem Subtyp "vdr" werden zusätzlich in das Aufnahmeverzeichnis des VDR verlinkt und danach ein erneutes Einlesen des Aufnahmeverzeichnis durch den VDR angestoßen.
Das Einbinden der NFS-Freigaben erfolgt über Autofs. In der Voreinstellung wird eine Freigabe nach einer Inaktivitätsdauer von 60 Sekunden wieder ausgehängt, so dass das der Server, der die Freigabe bereitstellt, herunterfahren kann, wenn die Clients diese nicht mehr benötigen. In der Datei /etc/autofs/auto.master.d/avahi-linker.autofs kann man über die Option --timeout= festlegen, nach wie vielen Sekunden Inaktivität eine vom avahi-linker eingebundene Freigabe wieder ausgehängt werden soll. Für Rechner mit yaVDR 0.6 geschieht das automatisch für alle lokalen Standardverzeichnisse.
Möchte man also sowohl lokale als auch über das Netzwerk eingebundene Dateien für VDR-Plugins oder KODI nutzen, empfiehlt es sich als Standard-Verzeichnis /media/<Kategorie>/ zu wählen.
Beispiel für die Dateistruktur unter /media/ auf einem yaVDR 0.6 System, das Verzeichnisse von einem weiteren Rechner mit yaVDR 0.6 im Netzwerk mit dem Namen "VDR" automatisch eingebunden hat. Wie man sieht sind die lokal abgelegten Medien jeweils über einen Ordner "local" verlinkt:
Ausgabe von tree.
/media/ ├── Bilder │ ├── local -> /srv/picture │ └── Pictures on VDR.local -> /net/VDR/srv/picture ├── Musik │ ├── Christmas │ ├── local -> /srv/audio │ └── Music on VDR.local -> /net/VDR/srv/audio ├── vdr │ ├── files │ ├── files2 │ └── Recordings on VDR.local for vdr4arch -> /net/VDR/srv/share/vdr └── Video ├── Filme │ └── local -> /srv/video/Filme ├── Serien │ ├── local -> /srv/video/Serien │ └── Serien on VDR.local └── Videos on VDR.local -> /net/VDR/srv/video
Die Konfigurationsdatein für den avahi-linker liegen im Ordner /etc/avahilinker/.
Konfigurationsdatei für den avhi-linker default.cfg.
[localdirs] # localdirs are linked to the "media" path defined under targetdirs # localdirs can be defined for any used subtype # examples: audio = /srv/audio video = /srv/video picture = /srv/picture [media_static_mount] # path is relative to autofs directory #files = <hostname>/path/to/directory [vdr_static_mount] # path is relative to autofs directory # <optional dir>/<Mountname> = <hostname>/path/to/directory [targetdirs] # directory for all created symlinks media = /media # VDR recording dir vdr = /srv/vdr/video [options] # use dbus2vdr instead of SVDRP dbus2vdr = True # set svdrp_port svdrp_port = 6419 # add prefix to dynamic avahi nfs mounts (can be omitted) nfs_prefix = # add suffix to dynamic avahi nfs mounts (can be omitted) nfs_suffix = (nfs) # add suffix to static mounts (can be omitted) static_suffix = [static] # autofs NFS-automount dir # /etc/auto.master.d/avahi-linker: # /net -hosts -intr,soft --timeout=60 # umount after 60 seconds if a mount is # unused autofsdir = /net # Use translations for subtypes and categories: use_i18n = True # replace special characters in path (like vdr with --dirnames=,,1) fat_safe_names = True # allow ip ranges and ip addresses - default: all (0.0.0.0/0 and # 0::0/0) #ip_whitelist = 0.0.0.0/0 # blacklist ip ranges or single ip addresses, e.g. 192.168.178.115 # 192.168.177.0/24 #ip_blacklist = [Logging] use_file = False logfile = /tmp/avahi-linker.log # Loglevel = DEBUG|INFO|WARNING|ERROR|CRITICAL loglevel = INFO
Inaktivitäts-Timeout für eingebundene Freigaben. In der Voreinstellung werden Freigaben, auf die nicht zugegriffen wird, nach 60 Sekunden Inaktivität wieder ausgehängt (und beim Zugriff wieder eingebunden). Der Wert für den Inaktivitästtimeout lässt sich in der /etc/auto-master.d/avahi-linker.autofs konigurieren. So können sich andere yaVDR 0.6 im Netzwerk gemäß ihren Inaktivitäts-Timeouts automatisch abschalten, wenn sie nicht mehr benötigt werden. Wird eine Wiedergabe pausiert, wird der NFS-Mount gehalten, so dass kein undefinierter Zustand beim fortsetzen der Wiedergabe eintreten kann. Im Gegensatz zu früheren yaVDR-Versionen ist es nicht mehr notwendig in den Einstellungen für das lifeguard-Addon den Shutdown bei bestehenden NFS-Verbindungen zu deaktivieren, wenn man möchte, dass ungenutzte VDRs sich selbstständig abschalten können.
avahi-linker deaktivieren. Um den avahi-linker zu deaktivieren genügt es in der /etc/default/avahi-linker die Variable ENABLED auf "0" zu setzen:
/etc/default/avahi-linker
ENABLED=0
Um eine NFS-Freigabe für den avahi-linker anzukündigen, kann man in /etc/avahi/services/ eine Dateien anlegen, die die nötigen Informationen enthalten. Der avahi-linker bringt bereits entsprechende Dateien für die weiter oben erwähnten NFS-Freigaben der Standardverzeichnisse mit.
Beispiel für eine eigene Service-Datei /etc/avahi/services/vdr-vdr-series.service.
<?xml version="1.0" standalone='no'?> <!DOCTYPE service-group SYSTEM "avahi-service.dtd"> <service-group> <name replace-wildcards="yes">Serien-Archiv on %h</name> <service> <type>_nfs._tcp</type> <port>2049</port> <txt-record>path=/srv/archive/vdr/series</txt-record> <txt-record>subtype=vdr</txt-record> <txt-record>category=Serien</txt-record> </service> </service-group>
name: Einzigartiger Name für die Freigabe (im gesamten Netzwerk). Wird von avahi-linker für die Benennung der eingebundenen Freigabe genutzt. Der Platzhalter %h wird durch den Hostnamen ersetzt. | |
type, port: Typ und Port für die Freigabe. Für NFS-Freigaben ist der Typ _nfs._tcp und der Port 2049. | |
path: Pfad der NFS-Freigabe, die angekündigt werden soll | |
subtype: Subtyp für die Freigabe, der bestimmt, wo der avahi-linker diese einhängt. Wenn use_i18n im Abschnitt [Options] auf True gesetzt ist, werden die Subtypen übersetzt. Standard-Subtypen sind: audio, picture, video and vdr. Prinzipiell können beliebige Bezeichnungen genutzt werden, die dann unter /media/<subtype> eingebunden werden. Freigaben mit dem Subtyp vdr werden ins Aufnahmeverzeichnis verlinkt. | |
category: Kategorie für die Freigabe mit der ein Unterverzeichnis bestimmt werden kann. In diesem Beispiel wird ein Verzeichnis mit einem Archiv für Serien-Aufnahmen freigegeben, die im Unterverzeichnis "Serien" im VDR einsortiert werden sollen. |
Unter yaVDR gibt es mehrere Möglichkeiten NFS-Freigaben zu mounten. Wie man Freigaben auf einem Server announciert, die per Avahi-Linker eingebunden werden kann man in diesem Artikel auf yavdr.org nachlesen. NFS-Freigaben, die VDR-Aufnahmen enthalten, aber nicht über avahi angekündigt werden, lassen sich über das Webfrontend über den Punkt Netzwerk konfigurieren. Diese Freigaben werden unter /etc/avahi-linker/wfe-static.cfg abgelegt und beim Start des Avahi-Linker berücksichtigt.