xineliboutput mit xine-lib/xine-ui als X11-Streaming-Client - Howto

· 660 words · 4 minute read

Da ich in meiner 2-Zimmer-Wohnung nur eine Leitung der Haussatelitenanlage habe, und ich somit nur einen VDR betreiben kann, ich jedoch in beiden Zimmern die Möglichkeit haben möchte, fernzusehen, kam mir der Gedanke, einfach einen Streamingclient für den zweiten Raum aufzubauen.

Als Streamingclient kommt im ersten Versuch ein Gericom Notebook (Webboy, 800MHz, 128MB-Ram, Shared-Memory-Grafikkarte) mit Ubuntu 5.10 (Breezy Badger) zum Einsatz. Der VDR besteht aus einem Rechner mit EPIA-Board (EPIA MII-12000, 1,2GHz, 512MB-Ram, Hauppaugge Nexus-S-2.3-FF) mit Debian Etch

Folgende Software wird verwendet:

vdr-1.4.5-1 mit BigPatch
xineliboutput-1.0.0pre7

# Client
xine-lib-1.1.4 (CVS Snapshot 2006-12-09)
xine-ui-0.99.5cvs (CVS Snapshot 2006-12-09)
autoconf-2.61
automake-1.9.6
libtool-1.5.22```




Da alles auf i386-Architektur laufen wird, kann alles auf einem zentralen Entwicklungsrechner übersetzt werden. Danach müssen nur mehr die benötigten Librarys und die kompilierten Binarys auf den Client kopiert werden. Somit kann man eine getrennte Infrastruktur zur Entwicklung und zum "Live"-Betrieb erstellen, wodurch natürlich auch unnötiger Balast am Client eingespart werden kann.




Ich muss hier jedoch gestehen, dass ich nicht alles nur auf einem Rechner kompiliert habe.





Als erste benötigt man zum Kompilieren von xine-lib und xine-ui automake, autoconf und libtool.
Man kann sich nun fragen, wieso ich diese Librarys selber kompiliert habe - die Antwort ist relativ einfach - übersetzen mit den mitgelieferten Paketen der Distribution Ubuntu wollte pardou nicht funktionieren.


Dazu richten wir zuerst eine Entwicklungsumgebung ein:

**Entwicklungsumgebung**


```# mkdir -p /usr/local/xine-lib/src
# mkdir -p /usr/local/xine-ui/src
# chown -R user:usergrp /usr/local/xine-lib /usr/local/xine-ui
# apt-get install gettext libx11-dev x11proto-xext-dev libxv-dev libpng12-dev

$ cd /usr/local/xine-lib/src
$ wget http://home.vr-web.de/~rnissl/xine-lib-cvs-20061209220000.tar.bz2
$ wget http://home.vr-web.de/~rnissl/vdr-xine-0.7.10.tgz
$ tar xvfz vdr-xine-0.7.10.tgz
$ tar xvfj xine-lib-cvs-20061209220000.tar.bz2```




```$ cd /usr/local/xine-ui/src
$ wget http://home.vr-web.de/~rnissl/xine-ui-cvs-20061209220000.tar.bz2
$ tar xvfj xine-ui-cvs-20061209220000.tar.bz2```


Nun können die benötigten Tools übersetzt werden.

**automake**


```$ cd /usr/local/xine-lib/src
$ wget whereever.at/automake-1.9.6.tar.bz2
$ tar xvfj automake-1.9.6.tar.bz2
$ cd automake-1.9.6
$ ./configure --prefix=/usr/local/xine-lib/automake
$ make
$ make install
$ cd ..```


**autoconf**


```$ wget whereever.at/autoconf-2.61.tar.bz2
$ tar xvfj autoconf-2.61.tar.bz2
$ cd autoconf-2.61
$ ./configure --prefix=/usr/local/xine-lib/autoconf
$ make
$ make install
$ cd ..```


**libtool**


```$ wget whereever.at/libtool-1.5.22.tar.gz
$ tar xvfz libtool-1.5.22.tar.gz
$ cd libtool-1.5.22
$ ./configure --prefix=/usr/local/xine-lib/libtool
$ make
$ make install
$ cd ..```




Die Tools stehen nun zur Verwendung. Als nächstes wird xine-lib in Angriff genommen. Hier muss als erstes ein Patch angewandt werden, um die VDR-Funktionen, wie Kanalwechsel etc. zu aktivieren.


**xine-lib**


```$ export PKG_CONFIG_PATH=/usr/local/xine-lib/lib/pkgconfig/
$ export PATH="/usr/local/xine-lib/bin:/usr/local/xine-lib/automake/bin:/usr/local/xine-lib/autocon f/bin:/usr/local/xine-lib/libtool/bin:$PATH"
$ cd xine-lib
$ patch -p1 < ../xine-0.7.10/patches/xine-lib.patch
$ ./autogen.sh --prefix=/usr/local/xine-lib
$ make
$ make install```


xine-lib sollte nun kompiliert und installiert sein. Als nächsteswird xine-ui kompiliert.

**xine-ui**


```$ cd /usr/local/xine-ui/src/
$ export PKG_CONFIG_PATH=/usr/local/xine-lib/lib/pkgconfig/
$ export PATH="/usr/local/xine-lib/bin:/usr/local/xine-lib/automake/bin:/usr/local/xine-lib/autoconf/bin:/usr/local/xine-lib/libtool/bin:$PATH"
$ wget http://home.vr-web.de/~rnissl/xine-ui-cvs-20061209220000.tar.bz2
$ tar xvfj xine-ui-cvs-20061209220000.tar.bz2
$ cd xine-ui
$ patch -p1 < /usr/local/xine-lib/src/xine-0.7.10/patches/xine-ui.patch```


An dieser Stelle muss noch ein Makefile um einen Include-Pfad erweitert werden.


```$ cd src/common
$ vi Makefile
Zeile INCLUDES = -I... erweitern mit:
-I/usr/local/xine-lib/include/```


Nun ist alles bereit zum kompilieren.


```$ ./autogen.sh --prefix=/usr/local/xine-ui --enable-vdr-keys
$ make
$ make install```




Wenn xine-lib und xine-ui nun kompiliert und installiert sind, kann der Pfad zur installierten Library nun in die Datei ld.so.conf eingetragen werden und die neue Library dem System bekannt gemacht werden.





```# echo "/usr/local/xine-lib/lib" >> /etc/ld.so.conf
# ldconfig -v```


Nun sollte xine zum ersten Mal gestartet werden können.


```$ /usr/local/xine-ui/xine```




Wenn xine nun grundsätzlich läuft muss noch das xineliboutput-Plugin und die benötigten Frontends kompiliert werden.


**vdr mit xineliboutput-Plugin**


```$ cd /src_vdr145-1_sc061.xine/
$ cd vdr
$ make
$ make plugins
$ make install

$ cd PLUGINS/src/xineliboutput/
$ export PATH="/usr/local/xine-lib/bin/:/usr/local/xine-lib/automake/bin:/usr/local/xine-lib/autoconf/bin:/usr/local/xine-lib/libtool/bin:$PATH"
$ make frontends```




Die kompilierten Frontends werden nun in das Plugin-Verzeichnis von xine-lib kopiert. Somit kann nun xine xvdr-Inputs verarbeiten.





```$ cp xineplug_* /usr/local/xine-lib/lib/xine/plugins/1.1.4```


Als letzter Schritt muss noch die VDR-Konfiguration für das xineliboutput-Plugin vorbereitet werden.


```# mkdir -p /etc/vdr/plugins/xine
# cp data/* /etc/vdr/plugins/xine/```


Nun kann der VDR mit dem xineliboutput-Plugin gestartet werden.


```# vdr ... -P'xineliboutput --local=none --primary --remote=37890'```


**Streamingclient**


Zum Starten von xine am Streamingclient habe ich mir folgendes kurzes shell-Script angelegt. Dies könnte zum Beispiel in die ~/.xinitrc eingetragen werden, somit würde beim Starten vom X-Server sofort xine im Vollbildmodus gestartet werden.





```#!/bin/sh
/usr/local/xine-ui/xine -f "xvdr:tcp://vdr:37890#nocache;demux:mpeg_block"```