|
|
Zeile 1: |
Zeile 1: |
− | ==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-plugin]]s möglich.<br>
| |
− | Clientlösung Skizze zum Verständnis: [http://mitglied.lycos.de/peterweber69/ Link]
| |
− |
| |
− | ==Bilder==
| |
− | {|
| |
− | |[[Bild:xine-plugin-00.jpg|thumb|none|''Ausgabe ueber Kaffeine'']]
| |
− | |[[Bild:xine-plugin-01.jpg|thumb|none|''Ausgabe ueber Xine-ui'']]
| |
− | |}
| |
− |
| |
− | ==Hardwareanforderungen==
| |
− | Hier sind einige Beispielkonfigurationen ('''bitte ergänzen'''):
| |
− | {| border=1 cellpadding=4 cellspacing=0 style="empty-cells:show;"
| |
− | |- bgcolor=#efefef
| |
− | ! 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==
| |
− | * xine-{lib,ui}, wobei Xine-ui nicht zwingend ist, normal sollte jedes Frontend welches auf Xine-lib aufsetzt funktionieren. (die anderen Frontends werden im Moment jedoch nicht die Option '''--enable-vdr-keys''' beherschen, '''./configure --help''' weiß meistens mehr)
| |
− |
| |
− | ==Installation==
| |
− | <pre>
| |
− | ## 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
| |
− | </pre>
| |
− |
| |
− | Für 64-bit Prozessoren z.B. AMD64 ist das Makefile zu ändern
| |
− |
| |
− | <pre>
| |
− | - #CXXFLAGS ?= -O2 -Wall -Woverloaded-virtual
| |
− | + #CXXFLAGS ?= -O2 -Wall -Woverloaded-virtual -fPIC
| |
− | </pre>
| |
− |
| |
− | Dannach wie gewohnt übersetzen:
| |
− |
| |
− | <pre>
| |
− | cd $SOURCEDIR/VDR
| |
− | make clean
| |
− | make <OPTIONEN> all plugins
| |
− | </pre>
| |
− |
| |
− | Nach dem ausführen der [[runvdr]] für X basiert:
| |
− |
| |
− | <pre>
| |
− | xine "vdr:/tmp/vdr-xine/stream#demux:mpeg_pes"
| |
− | </pre>
| |
− |
| |
− | Entgegen jeder Aussage, gehts natürlich auch "minimal" via [[Framebuffer]]:
| |
− |
| |
− | <pre>
| |
− | fbxine "vdr:/tmp/vdr-xine/stream#demux:mpeg_pes"
| |
− | </pre>
| |
− |
| |
− | ==Optionen==
| |
− | {| border=1 cellpadding=2 cellspacing=0
| |
− | |-
| |
− | |bgcolor=#efefef|VDR_XINE_SET_VIDEO_WINDOW=1
| |
− | |für volle [[yaepg-plugin]] Unterstützung aktivieren
| |
− | |}
| |
− |
| |
− | <!-- ==Patches== -->
| |
− |
| |
− | ==Konfiguration==
| |
− | In der aktuellen Version des Plugins befindet sich ein Player, mit welchen man andere Formate abspielen kann.
| |
− |
| |
− | <pre>
| |
− | cp $SOURCEDIR/VDR/PLUGINS/src/mp3/examples/mplayer.sh.example /usr/local/bin/mplayer.sh
| |
− | </pre>
| |
− |
| |
− | Anpassen
| |
− |
| |
− | <pre>
| |
− | - MPLAYER="mplayer"
| |
− | + MPLAYER="/usr/local/bin/xineplayer"
| |
− | </pre>
| |
− |
| |
− | Es sollte dazu gesagt werden, dass diese Geschichte im jetzigen Stadium nur mit [[LIRC|Lirc]] funktioniert, somit auch nur im Modus '''TRADITIONAL''' des [[mplayer-plugin]]s.
| |
− |
| |
− | <!-- ==Einstellungen== -->
| |
− | <!-- ==Parameter== -->
| |
− |
| |
− | ==Parameter==
| |
− | {| border=1 cellpadding=2 cellspacing=0
| |
− | |- bgcolor=#efefef
| |
− | !Parameter
| |
− | !Beschreibung
| |
− | |-
| |
− | | -i N || instance number to append to FIFO directory
| |
− | |-
| |
− | | -q || turn off debug messages on console
| |
− | |-
| |
− | | -r || turn on remote (pressing keys in xine controls VDR)
| |
− | |-
| |
− | | -s || switch to curses skin, while xine is disconnected
| |
− | |-
| |
− | | -n || enable network functions for remote xine-clients (only available if network-patch was aplied before)
| |
− | |}
| |
− |
| |
− | Die Parameter des Plugins können folgendermaßen übergeben werden.
| |
− |
| |
− | <pre>
| |
− | vdr <VDR Parameter> -P'xine <parameter>' <weitere VDR Parameter>
| |
− | </pre>
| |
− |
| |
− | Beispiel:
| |
− |
| |
− | <pre>
| |
− | vdr -P'xine -r'
| |
− | </pre>
| |
− |
| |
− | ==Probleme==
| |
− | * keine OSD-Wiedergabe bei der Verwendung der XvMC Unterstützung, d.h. Prozessormindestanforderung beachten! [wohingegen das OSD mit XxMC läuft! [wird auch von Nvidia unterstützt], leider etwas farbverzerrt]
| |
− |
| |
− | ===SuSE spezifisch===
| |
− | Die Orginal Xine Packages von [[SuSE]] sind zu deinstallieren, da Sie für unseren Zweck vollkommen unbrauchbar sind.
| |
− |
| |
− | <pre>
| |
− | echo xine-ui xine-lib xine-devel|xargs rpm -e --nodeps
| |
− | </pre>
| |
− |
| |
− | Das dürfte im jetzigen Stadium bei jeder Distri aufs selbe hinaus laufen, da Sourcen benötigt werden.
| |
− |
| |
− | <b>(Ab?)Mit SuSe 9.3 ist der Xine-Player bereits mit VDR ablauffähig.</b>
| |
− |
| |
− | 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 spezifisch===
| |
− | Debian 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.
| |
− |
| |
− | ==Tipps==
| |
− |
| |
− | ===Mplayer===
| |
− | Statt 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):
| |
− |
| |
− | <pre>
| |
− | #!/bin/sh
| |
− |
| |
− | CMDLINE="$(which mplayer) -fs -vo xv -ao oss -cache 4096 -slave -nolirc -quiet"
| |
− | DISPLAY=:0.0 $CMDLINE "$1" 2>&1 | logger
| |
− | exit
| |
− | </pre>
| |
− |
| |
− | ===Xine mit VDR starten===
| |
− | Falls 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:
| |
− |
| |
− | <pre>
| |
− | 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;
| |
− | }
| |
− | </pre>
| |
− |
| |
− | <!-- ==Wunschliste== -->
| |
− | <!-- ==Snapshot== -->
| |
− |
| |
− | ==Links==
| |
− | {|
| |
− | | [1]
| |
− | | http://xinehq.de
| |
− | | Xine Projekt Homepage
| |
− | |-
| |
− | | [2]
| |
− | | http://home.vr-web.de/~rnissl
| |
− | | Homepage des Plugins
| |
− | |-
| |
− | | [3]
| |
− | | http://mitglied.lycos.de/peterweber69/xine/xine.htm
| |
− | | Xine-Plugin über Netzwerk nutzen
| |
− | |-
| |
− | | [4]
| |
− | | [[Kanotix - Streaming-Server mit Xine-Plugin für Client mit Xine-Player]]
| |
− | | Streaming-Server mit Xine-Plugin für Client mit Xine-Player
| |
− | |}[[Kategorie:Plugins]][[en:xine-plugin]]
| |