Xine-plugin
Inhaltsverzeichnis |
Beschreibung
Autor: Reinhard Nissl
Beschreibung: http://www.thunderbolt2000.de/index.php?content=vdr-sw-plugins
Das Xine-Plugin ist dafür gedacht, mit einer LowBudget-DVB-Karte den VDR nutzen zu können. Normalerweise war mindestens eine Hardware-MPEG2-Decoderkarte nötig (also eine DXR3-Karte oder eine fullfeatured-DVB-Karte), wobei aber LowBudget-Karten als zusätzliche Karten zu einer solchen wunderbar eingesetzt werden konnten/können (z.B. um mehrere Aufnahmen gleichzeitig zu ermöglichen).
Dank des Xine-Plugins ist es nun möglich, eine reine Software-Decodierung mit reinen LowBudget-Karten zu ermöglichen; entsprechend schnelle Hardware vorausgesetzt. LowBudget-Karten haben keinen MPEG2-Decoderchip und demzufolge kein Device für einen Hardwaredecoder (Device = Zugriffspunkt im Dateisystem auf eine Hardwarekomponente). Für die regulären Medienspieler (XawTV und Co) benötigt man aber ein solches Demuxer-Device, von dem die Daten demuxed (demultiplext) werden können. Mit einer DXR3 oder fullfeatured-DVB ist das kein Problem, da diese so ein Gerät zur Verfügung stellen.
Das Xine-Plugin setzt hier an; es holt den noch nicht demultiplexten MPEG2-Datenstrom von der LowBudgetDVB-Karte und füllt die Daten in einen FIFO-Puffer, also in einen Zwischenspeicher, von dem der Xine-Medienspieler (oder andere Programme, die DVB-Daten demuxen können) die Daten wieder runternimmt und mit seinem Software-Demuxer umwandelt und als Video ausgibt.
Eine alternative ist das Softdevice-plugin.
Auch eine Clientlösung ohne DVB (lokal) ist mit Hilfe des Streamdev-plugins möglich.
Clientlösung Skizze zum Verständnis: Link
Bilder
Hardwareanforderungen
Hier sind einige Beispielkonfigurationen (bitte ergänzen):
CPU@MHz / RAM | Grafikkarte | Last | Sonstiges | ||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
PIII@550 / 512 | Matrox G550 mit vidix | ruckelt bei OSD oder mit Deinterlaceing | |||||||||||||||||||||||||||
PIII@933 / 512 | nVidia GForce MX 5200 | ~ 50% | Xine-lib und Xine-Ui selber compiliert; xv; auch mit OSD immer ruckelfrei; Deinterlacing 70% Last | ||||||||||||||||||||||||||
Athlon@800 / 512 | ATI Radeon VE | ruckelt bei hohen Auflösungen | |||||||||||||||||||||||||||
PIII@700 / 256 | ATI Radeon 7000 | ~ 42% | Xine über Netzwerk; xv; ruckelfrei @1280x1024x24, Deinterlacing ~60% Last | ||||||||||||||||||||||||||
P4@2800 / 512 | Matrox G550 | ~ 50% | ruckelt bei OSD, Deinterlaceing oder Fenstergröße | ||||||||||||||||||||||||||
PII@400 / 256 | NVIDIA Geforce 4 MX 480 | XvmC nahezu ruckelfrei, leider kein OSD; xv: kann man sich nicht ansehen | |||||||||||||||||||||||||||
PII@400 / 196 | NVIDIA Geforce 4 MX 480 | ~ 60% | XvmC nahezu ruckelfrei, nur beim Ein- und Ausblenden ein kleines Stocken; Deinterlacing möglich | ||||||||||||||||||||||||||
Athlon@1800 / 512 | NV Gf Ti 4200 | ~ 10% | xv-Ausgabe: ruckelfrei für DVB | ||||||||||||||||||||||||||
AMD64@32bit, 1800 / 512 | NV Gf 6600 (PEG) | ~ 35% | Xv, tvtime wie in MANUAL vorgeschlagen. CPU läuft auf 1000 (Cool'n'Quiet). Nahezu perfekt | ||||||||||||||||||||||||||
AMD Duron@1200 / 256 | SIS740 (TV-Out) | ~ 40% | Xv, kein Ruckeln, Bild stockt kurz beim Umschalten | ||||||||||||||||||||||||||
Athlon@1800 / 768 | NV GF4 MX 440(TV-Out) | ~ 14% | XvMC-Ausgabe, ruckelfrei, nur kurze Aussetzer beim umschalten
Softwareanforderungen
Installation## laden der Sourcen cd $SOURCEDIR wget http://home.vr-web.de/~rnissl/xine-lib-cvs-<VERSION>.tar.bz2 wget http://home.vr-web.de/~rnissl/xine-ui-cvs-<VERSION>.tar.bz2 wget http://home.vr-web.de/~rnissl/vdr-xine-<VERSION>.tgz ## entpacken der Sourcen tar xvzf vdr-xine-<VERSION>.tgz -C $(pwd)/VDR/PLUGINS/src tar jxvf xine-lib-cvs-<VERSION>.tar.bz2 tar jxvf xine-ui-cvs-<VERSION>.tar.bz2 ## setzen des Symlinks cd VDR/PLUGINS/src ln -s xine-<VERSION> xine ## Kopieren der "loops" cd xine mkdir -p /etc/vdr/plugins/xine find . -name *.pes -exec cp -v \{} /etc/vdr/plugins/xine \; ## link für den Player ln -vs $(pwd)/xineplayer /usr/local/bin/xineplayer ## uebersetzen der xine-lib cd ../../../../xine-lib find $SOURCEDIR/VDR/ -name xine-lib.patch -exec patch -p1 -i \{} \; ./autogen.sh --prefix=/usr/local make make install ldconfig ## uebersetzen des frontends cd ../xine-ui find $SOURCEDIR/VDR/ -name xine-ui.patch -exec patch -p1 -i \{} \; ./autogen.sh --prefix=/usr/local \ --enable-vdr-keys make make install Für 64-bit Prozessoren z.B. AMD64 ist das Makefile zu ändern - #CXXFLAGS ?= -O2 -Wall -Woverloaded-virtual + #CXXFLAGS ?= -O2 -Wall -Woverloaded-virtual -fPIC Dannach wie gewohnt übersetzen: cd $SOURCEDIR/VDR make clean make <OPTIONEN> all plugins Nach dem ausführen der runvdr für X basiert: xine "vdr:/tmp/vdr-xine/stream#demux:mpeg_pes" Entgegen jeder Aussage, gehts natürlich auch "minimal" via Framebuffer: fbxine "vdr:/tmp/vdr-xine/stream#demux:mpeg_pes" Optionen
KonfigurationIn der aktuellen Version des Plugins befindet sich ein Player, mit welchen man andere Formate abspielen kann. cp $SOURCEDIR/VDR/PLUGINS/src/mp3/examples/mplayer.sh.example /usr/local/bin/mplayer.sh Anpassen - MPLAYER="mplayer" + MPLAYER="/usr/local/bin/xineplayer" Es sollte dazu gesagt werden, dass diese Geschichte im jetzigen Stadium nur mit Lirc funktioniert, somit auch nur im Modus TRADITIONAL des mplayer-plugins.
Parameter
Die Parameter des Plugins können folgendermaßen übergeben werden. vdr <VDR Parameter> -P'xine <parameter>' <weitere VDR Parameter> Beispiel: vdr -P'xine -r' Probleme
SuSE spezifischDie Orginal Xine Packages von SuSE sind zu deinstallieren, da Sie für unseren Zweck vollkommen unbrauchbar sind. echo xine-ui xine-lib xine-devel|xargs rpm -e --nodeps Das dürfte im jetzigen Stadium bei jeder Distri aufs selbe hinaus laufen, da Sourcen benötigt werden. (Ab?)Mit SuSe 9.3 ist der Xine-Player bereits mit VDR ablauffähig. ABER: Bei SuSe 9.3 hohe Prozessorlast bei den fertigen RPM Packages. Auf PIII@933 war VDR nur als teilweise Lauffähig (Ruckeln bei OSD und Timeshift). Das selber kompilieren von Xine-Lib, Xine-UI und des VDR brachte eine um 40-50% niedrigere Last (xv als Videotreiber, NVidia GForce FX5200). Debian Sarge spezifischDebian kommt mit einer recht alten Version von automake(1.4). Diese muss auf min 1.5 upgedated werden. Ich habe 1.9 genommen. Also apt-get install automake1.9 gefolgt von update-alternatives --config automake Dann sollte es gehen. TippsMplayerStatt des xineplayers kann auch weiterhin der mplayer benutzt werden (sogar im SLAVE-Modus). Hier eine minimale mplayer.sh (fuer die Benutzung unter X11 und slave): #!/bin/sh CMDLINE="$(which mplayer) -fs -vo xv -ao oss -cache 4096 -slave -nolirc -quiet" DISPLAY=:0.0 $CMDLINE "$1" 2>&1 | logger exit Xine mit VDR startenFalls man Xine beim Start des VDR gleichzeitig mit öffnen möchte, müssen vor dem Kompilieren des Plugins noch folgende Zeilen im xine.c, Quellcode eingefügt werden: bool cPluginXine::Start(void) { // Start any background activities the plugin shall perform. if (!PluginXine::cXineDevice::Open()) return false; + pid_t cpid; + switch (cpid = fork()){ + case 0: execl("/usr/local/bin/xine","/usr/local/bin/xine","-f","vdr:/tmp/vdr-xine/stream#demux:mpeg_pes",(char *)0); return true; }
Links
|