SelfLinux Multimedia Video vdr Abschnitt 3 | SelfLinux-0.13.0

| vdr | Autoren Formatierung GFDL

#### 3 Plugins

#### 3.1 VCD

Das Plugin zur Wiedergabe von VCD's oder SVCD's mittels der VDR-Software ist sehr einfach zu installieren, da man hierfür keine zusätzlichen Libraries oder weitere Programme braucht. Lediglich das Plugin selbst wird dazu benötigt.

http://www.heiligenmann.de

Die Installation erfolgt aus dem Verzeichnis /usr/local/src heraus.

root@linux ~# cd /usr/local/src/ root@linux /usr/local/src# tar -xjvf vcd-0.0.3.tar.bz2 -C VDR/PLUGINS/src root@linux /usr/local/src# cd VDR/PLUGINS/src root@linux /usr/local/src/VDR/PLUGINS/src# ln -s vcd-0.0.3 vcd

Der neue symbolische Link für das Plugin-Verzeichnis sollte ausschließlich aus Kleinbuchstaben und Ziffern bestehen.

Für die Verwendung des so genannten NEWSTRUCT-Treibers ist noch eine Zeile des Makefile im Quellverzeichnis des VCD-Plugins anzupassen.

Anpassung des Makefiles

    ...
    ### The directory environment:

    DVBDIR = ../../../../DVB/include
    ...

Anschließend wird das Plugin dann kompiliert.

root@linux ~# cd /usr/local/src/VDR root@linux /usr/local/src/VDR# make plugins

Nun kann man endlich die VDR-Software aus dem Quellverzeichnis heraus starten mit der zusätzlichen Option zur Aktivierung des VCD-Plugins. Es ist dabei nur noch sicherzustellen, dass das betroffene Laufwerk über den Link /dev/cdrom angesprochen wird. Es ist nicht nötig die eingelegte CD vorher zu mounten.

root@linux /usr/local/src/VDR# ./vdr -Pvcd

Das lässt sich auch in das Skript /usr/local/bin/runvdr integrieren um gleichzeitig die DVB-Treiber zu laden. Hierbei muss zusätzlich der Pfad zu dem Libraries der Plugins angegeben werden.

runvdr

    ...
    DVBDIR="/usr/local/src/DVB/driver"
    VDRPRG="/usr/local/bin/vdr -L /usr/local/src/VDR/PLUGINS/lib -c /usr/local/vdr/etc"
    VDRCMD="$VDRPRG -w 60 -t /dev/tty8 -s /usr/local/bin/vdrshutdown $* \
                    -P vcd"
    VDRUSR=vdr
    ...

#### 3.2 DVD

Für die aktuelle Entwicklerversion der VDR-Software existiert auch ein Plugin zum Abspielen von Video-DVD's. Um dies erfolgreich zu bewerkstelligen sind aber noch einige Vorbereitungen zu treffen.

Die meisten Video-DVD's sind mit dem so genannte Content Scrambling System (CSS) versehen.

Dessen Einsatz ist in rechtlicher Hinsicht allerdings nicht unumstritten. Dennoch kann die Installation notwendig werden um die rechtmäßig erworbenen DVD's auf der rechtmäßig erworbenen Hardware abspielen zu können.

Ein zusammengefasstes Paket mit praktischem Installationsskript, welches ebenfalls noch das Paket Libdvdread für den Zugriff auf die DVD, das für den freien Software-Player Ogle auf http://www.drek.chalmers.se/groups/dvd/ entwickelt wurde, ist verfügbar.

http://208.231.8.118/linux/
Die Installation erfolgt mit:

root@linux /usr/local/src# tar -xjvf dvdinstall.tar.bz2 root@linux /usr/local/src# cd dvd root@linux /usr/local/src/dvd# ./install

Des Weiteren ist für die Navigation durch das Menü einer DVD noch eine speziell angepasste Variante der Libdvdnav zuvor zu installieren.

http://linvdr.org/download/vdr-dvd/

Installiert wird dieses folgendermaßen:

root@linux /usr/local/src# tar -xjvf libdvdnav-as-0.0.4.tar.bz2 root@linux /usr/local/src# cd libdvdnav-cvs-as root@linux /usr/local/src/libvdnav-cvs-as# ./configure --prefix=/usr root@linux /usr/local/src/libvdnav-cvs-as# make root@linux /usr/local/src/libvdnav-cvs-as# make install

In jedem Fall ist auch für die mögliche Ausgabe des AC3-Sounds die Liba52 von Nöten, auch dann, wenn man den digitalen Sound gar nicht nutzten will.

http://lib52.sourceforge.net/ Sie wird installiert mit:

root@linux /usr/local/src# tar -xzvf a52dec-0.7.4.tar.gz root@linux /usr/local/src# cd a52dec-0.7.4 root@linux /usr/local/src/a52dec-0.7.4# ./configure --prefix=/usr root@linux /usr/local/src/a52dec-0.7.4# make root@linux /usr/local/src/a52dec-0.7.4# make install

Nun braucht man noch das eigentliche DVD-Plugin.

http://linvdr.org/download/vdr-dvd/

Die Installation erfolgt in diesem Fall aus dem Verzeichnis /usr/local/src heraus.

root@linux ~# cd /usr/local/src/ root@linux /usr/local/src# tar -xjvf vdr-dvd-0.2.0.tar.bz2 -C VDR/PLUGINS/src root@linux /usr/local/src# cd VDR/PLUGINS/src root@linux /usr/local/src/VDR/PLUGINS/src# ln -s dvd-0.2.0 dvd

Nach dem Entpacken wird das Plugin kompiliert.

root@linux ~# cd /usr/local/src/VDR root@linux /usr/local/src/VDR# make NEWSTRUCT=1 plugins

root@linux /usr/local/src/VDR# ./vdr -Pdvd

Es wird dabei angenommen, dass das DVD-Laufwerk unter dem symbolischen Link /dev/dvd ansprechbar ist. Ist dies nicht der Fall kann es auch mit einer zusätzlichen Angabe beim Start der VDR-Software geändert werden. Optionen für ein Plugin müssen in Anführungszeichen eingeschlossen werden.

root@linux /usr/local/src/VDR# ./vdr -P"dvd -C /media/dvd"

Auch das lässt sich in das Skript /usr/local/bin/runvdr integrieren um gleichzeitig die DVB-Treiber zu laden.

runvdr

    ...
    DVBDIR="/usr/local/src/DVB/driver"
    VDRPRG="/usr/local/bin/vdr -L /usr/local/src/VDR/PLUGINS/lib -c /usr/local/vdr/etc"
    VDRCMD="$VDRPRG -w 60 -t /dev/tty8 -s /usr/local/bin/vdrshutdown $* \
                     -P vcd \
                     -P dvd"
    VDRUSR=vdr
    ...

Um die Systemlast bei DVD-Wiedergabe möglichst gering zu halten, sollte man für das Laufwerk den DMA-Modus aktivieren. Bei einer SuSE erledigt man das z. B. durch einen Eintrag in der Datei boot.local, welche beim Systemstart abgearbeitet wird.

boot.local

    ...
    /sbin/hdparm -d1 -X34 /dev/dvd

#### 3.3 MP3

Ein weiteres Plugin für VDR ist das MP3-Plugin zum Abspielen von MP3-Songs von Festplatte oder CD-ROM.

Voraussetzung für die Installation des MP3-Plugins ist zunächst einmal eine aktuelle Libmad von:

http://www.mars.org/home/rob/proj/mpeg/

Diese wird folgendermaßen installiert:

root@linux ~# tar -xzvf mad-0.14.2b.tar.gz root@linux ~# cd mad-0.14.2b root@linux ~/mad-0.14.2b# ./configure --enable-shared root@linux ~/mad-0.14.2b# make root@linux ~/mad-0.14.2b# make install root@linux ~/mad-0.14.2b# ldconfig

Mit der MP3-Erweiterung lassen sich grundsätzlich auch andere Sound-Files wie etwa WAV-Dateien abspielen. Die dafür benötigte zusätzliche Library Libsndfile besorgt man sich von:

http://www.zip.com.au/~erikd/libsndfile/

Diese wird dann installiert:

root@linux ~# tar -xzvf libsndfile-1.0.3.tar.gz root@linux ~# cd libsndfile-1.0.3 root@linux ~/libsndfile-1.0.3# ./configure root@linux ~/libsndfile-1.0.3# make root@linux ~/libsndfile-1.0.3# make install root@linux ~/libsndfile-1.0.3# ldconfig

Hiermit lassen sich aus dem MP3-Menüpunkt bereits WAV-Dateien von der Festplatte abspielen. Um auch die Tracks auf Audio-CD's abspielen zu können benötigt man das Paket cdfs von:

http://www.elis.rug.ac.be/~ronsse/cdfs/

Installiert wird mit:

root@linux ~# tar -xjvf cdfs-0.5c.tar.bz2 root@linux ~# cd cdfs-0.5c root@linux ~/cdfs-0.5c# ./configure root@linux ~/cdfs-0.5c# make root@linux ~/cdfs-0.5c# make install root@linux ~/cdfs-0.5c# ldconfig

Normalerweise kann eine Audio-CD nicht gemountet werden, da diese kein eigentliches Dateisystem enthält. Mit der Hilfe von cdfs erscheinen die Tracks jedoch als WAV-Dateien und können somit abgespielt werden. Es findet allerdings bei dieser Methode keine Fehlerkorrektur wie z. B. beim Auslesen mit den Programmen cdda2wav oder cdparanoia statt, sodass bei zerkratzten CD's Probleme auftreten könnten.

Das MP3-Plugin selbst ist downzuloaden von:

http://www.muempf.de

Die Installation erfolgt aus dem Verzeichnis /usr/local/src heraus.

root@linux ~# cd /usr/local/src root@linux /usr/local/src# tar -xzvf vdr-mp3-0.7.9.tar.gz -C VDR/PLUGINS/src root@linux /usr/local/src# cd VDR/PLUGINS/src root@linux /usr/local/src/VDR/PLUGINS/src# ln -s mp3-0.7.9 mp3

Nach dem Entpacken werden die Quellen des Plugins übersetzt.

root@linux ~# cd /usr/local/src/VDR root@linux /usr/local/src/VDR# make plugins

Dann wird noch beispielsweise ein Verzeichnis /mp3 für die MP3-Dateien angelegt.

root@linux /usr/local/src/VDR# mkdir /mp3

Zuletzt werden noch die beigefügten Beispieldateien als Vorlage für diverse Scripte und Konfigurationsdateien des Plugins in die passenden Verzeichnisse kopiert.

root@linux /usr/local/src/VDR# cd PLUGINS/SRC/mp3/examples root@linux /usr/local/src/VDR/PLUGINS/SRC/mp3/examples# cp mount.sh.example /usr/local/vdr/mount.sh root@linux /usr/local/src/VDR/PLUGINS/SRC/mp3/examples# chmod +x /usr/local/vdr/mount.sh root@linux /usr/local/src/VDR/PLUGINS/SRC/mp3/examples# cp mp3sources.conf.example /usr/local/vdr/etc/plugins/mp3sources.conf

Meine Datei mp3sources.conf musste ich für mein System anpassen und enthält folgende Zeilen.

mp3sources.conf

    /mp3;Locale Platte;0
    /media/cdrom;CDROM;1
    /cdfs;CD-Audio;1;*.wav

Der Einträge für die zu mountenden Wechselmedien müssen mit den Mointpoints in der Datei /etc/fstab korrespondieren.

Auszug aus der fstab

    ...
    /dev/cdrom      /media/cdrom    auto    ro,noauto,user,exec 0 0
    /dev/hdc        /cdfs           cdfs    ro,noauto,user  0 0
    ...

Nun kann man endlich die VDR-Software aus dem Quellverzeichnis heraus starten mit der zusätzlichen Option zur Einbindung des MP3-Plugins. Die Optionen für das Plugin selbst müssen in Anführungszeichen angegeben werden.

root@linux ~# cd /usr/local/src/VDR root@linux /usr/local/src/VDR# ./vdr -P"mp3 -m /usr/local/vdr/mount.sh"

Wer es wünscht, kann sich zur Anzeige der Tracknamen einer Audio-CD auch noch die Abfrage der FreeDB einrichten. Dies geht entweder mit einer lokal installierten Datenbank als auch alternativ oder zusätzlich bei einer Internetverbindung mit Zugriff auf die Online-Datenbank im Internet. Hierzu legt man das Verzeichnis zum Abspeichern der Daten an und startet das Plugin ggf. mit einigen weiteren Angaben zum Auslesen der Datenbank im Internet.

root@linux ~# mkdir /var/lib/cddb root@linux ~# chown vdr:vdrdaem /var/lib/cddb

Das lässt sich auch in das Skript /usr/local/bin/runvdr integrieren, welches die VDR-Software automatisch beim Hochfahren des Rechners startet.

runvdr

    ...
    DVBDIR="/usr/local/src/DVB/driver"
    VDRPRG="/usr/local/bin/vdr -L /usr/local/src/VDR/PLUGINS/lib -c /usr/local/vdr/etc"
    VDRCMD="$VDRPRG -w 60 -t /dev/tty8 -s /usr/local/bin/vdrshutdown $* \
                    -P vcd \
                    -P dvd \
                    -P'mp3 -m /usr/local/vdr/mount.sh -B /var/lib/cddb'"
    VDRUSR=vdr
    ...

#### 3.4 MPlayer

Als Besonderheit beinhaltet das MP3-Plugin gleichzeitig noch die Möglichkeit der Wiedergabe von DivX mit Hilfe von MPlayer. Dies klappt z. Z. in der nachfolgend beschriebenen Art und Weise nur mit der alten DVB-Treiberversion, welche nicht mehr für die VDR-Version 1.1.20 verwendet werden kann! Für flüssige Wiedergabe der verschiedensten DivX-Formate über den TV-Ausgang der DVB-Karte braucht man einen GHz-Prozessor. Die Software gibt es auf:

http://www.mplayerhq.hu/homepage/

Im so genannten Slave-Modus erfolgen die Steuerung des MPlayers und auch die Menüeinblendungen über die laufende VDR-Software. Hierzu muss man jedoch zuvor die Quellen des Mplayers mit der entsprechenden Datei aus dem Quellverzeichnis des MP3-Plugins patchen.

root@linux ~# tar -xjvf MPlayer-0.90pre9.tar.bz2 root@linux ~# cd MPlayer-0.90pre9 root@linux ~/Mplayer-0.90pre9# patch < mplayer-slavemode.diff

Danach schließt man die Installation ab.

root@linux ~/Mplayer-0.90pre9# ./configure --with-extraincdir=/usr/local/src/DVB/ost/include root@linux ~/Mplayer-0.90pre9# make root@linux ~/Mplayer-0.90pre9# make install

Statt der dem Plugin beigefügten Beispieldatei für das Skript mplayer.sh verwendet man geschickterweise das etwas ausgefeiltere Skript von:

http://ma.hoff.bei.t-online.de/mplayer.sh/ Es wird beispielsweise in das Verzeichnis /usr/local/vdr installiert.

root@linux ~# tar -xzvf mplayer.sh004.tar.gz -C /usr/local/vdr

Mit der Hilfe dieses Skripts werden auch DivX-Filme der verschiedensten Auflösungen Bildschirm füllend über die DVB-Karte auf dem TV-Gerät ausgegeben. In der zugehörigen Konfigurationsdatei mplayer.sh.conf im gleichen Verzeichnis sind normalerweise keine Änderungen notwendig. Will man hingegen das MPlayer-Plugin im Slave-Modus nutzen muss am Ende dieser Datei noch eine Ergänzung gemacht werden.

mplayer.sh.conf

    ...
    # Lirc RC File
    ## LIRCRC       /usr/local/vdr/etc/.lircrc

    # Userdefined Options - make sure they do not collide with options
    # used in mplayer.sh
    # Only for experienced users
    # userdef -what -option you ever -like to give -to mplayer

    # mplayer options for SlaveMode
    USERDEF "-slave -quiet -nolirc"

    # End of Options

Für die mplayersources.conf kann man einen symbolischen Link auf die vorhandenen Konfigurationsdatei des MP3-Plugins anlegen oder aber auch eine separate Datei hierfür anlegen.

Jetzt kann man die VDR-Software aus dem Quellverzeichnis heraus starten mit den benötigten Optionen des MPlayer-Plugins.

root@linux ~# cd /usr/local/src/VDR root@linux /usr/local/src/VDR# ./vdr -P"mplayer -m /usr/local/vdr/mount.sh -M /usr/local/vdr/mplayer.sh"

Auch dies kann man in das Skript /usr/local/bin/runvdr integrieren.

runvdr

    ...
    DVBDIR="/usr/local/src/DVB/driver"
    VDRPRG="/usr/local/bin/vdr -L /usr/local/src/VDR/PLUGINS/lib -c /usr/local/vdr/etc"
    VDRCMD="$VDRPRG -w 60 -t /dev/tty8 -s /usr/local/bin/vdrshutdown $* \
                    -P vcd \
                    -P dvd \
                    -P'mp3 -m /usr/local/vdr/mount.sh' \
                    -P'mplayer -m /usr/local/vdr/mount.sh -M /usr/local/vdr/mplayer.sh'"
    VDRUSR=vdr
    ...

#### 3.5 Teletext

Damit die Darstellung des Teletextes mittels des Plugins für VDR über den TV-Ausgang der DVB-Karte möglich ist, braucht man das FFmpeg-Paket von http://ffmpeg.sourceforge.net/ Entpackt wird es in das gleiche Verzeichnis /usr/local/src wie das, aus dem die Installation der VDR-Software erfolgt. Dies klappt z. Z. allerdings nur mit einer etwas älteren Version von FFmpeg!

root@linux ~# tar -xzvf ffmpeg-cvs.tar.gz -C /usr/local/src root@linux /usr/local/src# cd ffmpeg root@linux /usr/local/src/ffmpeg# ./configure root@linux /usr/local/src/ffmpeg# make

Auch die Installation des Teletext-Plugins erfolgt aus dem Verzeichnis /usr/local/src heraus.

root@linux ~# cd /usr/local/src/ root@linux /usr/local/src# tar -xzvf vdr-teletext-0.7.6.tgz -C VDR/PLUGINS/src root@linux /usr/local/src# cd VDR/PLUGINS/src root@linux /usr/local/src/VDR/PLUGINS/src# ln -s teletext-0.7.6 teletext root@linux /usr/local/src/VDR/PLUGINS/src# cd ../.. root@linux /usr/local/src/VDR# make NEWSTRUCT=1 plugins

Nun muss noch das Verzeichnis /vtx zur Speicherung der aufgerufenen Seiten angelegt und mit den passenden Benutzerrechten versehen werden.

root@linux /usr/local/src/VDR# mkdir /vtx root@linux /usr/local/src/VDR# chown vdr:vdrdaem /vtx

Damit das Verzeichnis vtx nicht auf Dauer zugemüllt wird, kann man ein temporäres Filesystem einrichten. Im Gegensatz zu einer RAM-Disk ist es hier nicht nötig ein Filesystem einzurichten. In diesem Beispiel für die Datei /etc/fstab wird der Bereich dynamisch bis zu 16MByte für die Zwischenspeicherung verwendet. Der Inhalt geht bei einem Neustart verloren.

fstab

    ...
    tmpfs   /vtx    tmpfs   size=16m        0 0

Damit der neue Menüpunkt beim nächsten Start der VDR-Software erscheint, ist die Datei /usr/local/bin/runvdr entsprechend zu ergänzen.

runvdr

    ...
    DVBDIR="/usr/local/src/DVB/driver"
    VDRPRG="/usr/local/bin/vdr -L /usr/local/src/VDR/PLUGINS/lib -c /usr/local/vdr/etc"
    VDRCMD="$VDRPRG -w 60 -t /dev/tty8 -s /usr/local/bin/vdrshutdown $* \
                    -P vcd \
                    -P dvd \
                    -P'mp3 -m /usr/local/vdr/mount.sh' \
                    -P'mplayer -m /usr/local/vdr/mount.sh -M /usr/local/vdr/mplayer.sh' \
                    -P teletext"
    VDRUSR=vdr
    ...

#### 3.6 Streaming

Mit dem aktuell verfügbaren Streaming-Plugin kann man bereits jetzt schon mal einen festen Kanal über das Netzwerk auf bis zu 10 entfernte Rechner im lokalen Netz verteilen.

http://www.magoa.net/linux/

Die Installation erledigt man aus dem Verzeichnis /usr/local/src heraus.

root@linux ~# cd /usr/local/src/ root@linux /usr/local/src# tar -xzvf vdr-stream-0.1.0.tgz -C VDR/PLUGINS/src root@linux /usr/local/src# cd VDR/PLUGINS/src root@linux /usr/local/src/VDR/PLUGINS/src# ln -s stream-0.1.0 stream root@linux /usr/local/src/VDR/PLUGINS/src# cd ../.. root@linux /usr/local/src/VDR# make plugins

Zur Aktivierung des Streaming-Plugins ergänzt man die Datei /usr/local/bin/runvdr.

runvdr

    ...
    DVBDIR="/usr/local/src/DVB/driver"
    VDRPRG="/usr/local/bin/vdr -L /usr/local/src/VDR/PLUGINS/lib -c /usr/local/vdr/etc"
    VDRCMD="$VDRPRG -w 60 -t /dev/tty8 -s /usr/local/bin/vdrshutdown $* \
                    -P vcd \
                    -P dvd \
                    -P'mp3 -m /usr/local/vdr/mount.sh' \
                    -P'mplayer -m /usr/local/vdr/mount.sh -M /usr/local/vdr/mplayer.sh' \
                    -P teletext \
                    -P stream"
    VDRUSR=vdr
    ...

Auf dem entfernten Rechner wird die Clientsoftware aus dem Unterverzeichnis der Plugin-Quellen übersetzt.

root@linux ~# tar -xzvf vdr-stream-0.1.0.tgz root@linux ~/stream-0.1.0/client# cd stream-0.1.0/client root@linux ~/stream-0.1.0/client# make root@linux ~/stream-0.1.0/client# cp stream /usr/local/bin

Der aus dem Menü der VDR-Software gestartete Stream des laufenden Kanals kann mit der Clientsoftware unter Angabe der IP-Adresse des VDR-Rechners im Netzwerk sowie dem Programm mplayer empfangen werden.

root@linux ~# stream <IP-ADRESSE_DES_VDR-RECHNERS> | mplayer -

Alternativ kann der Stream auch per Multicast übertragen werden. Dazu ist aber zuvor die entsprechende Route zu setzen.

root@linux ~# route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0

Die Unterstützung für Multicast muss dazu im Kernel grundsätzlich vorhanden sein. Damit diese Route beim Start des Rechners automatisch gesetzt wird, ist eine entsprechende Ergänzung in der Datei /etc/route.conf zu tätigen.

route.conf

    # Destination     Dummy/Gateway     Netmask            Device

    ...
    224.0.0.0         0.0.0.0           240.0.0.0          eth0

Mit mplayer lautet die entsprechende Kommandozeile für den Empfang auf dem Client-Rechner:

root@linux ~# mplayer rtp://224.0.1.2:5002 -cache 2048

Wichtig ist, dass auch auf den Clientrechnern die Multicastroute durch den Eintrag in der Datei /etc/route.conf wie auf dem VDR-Rechner eingerichtet ist. Ansonsten ist kein Empfang des Datenstroms möglich.