[HOWTO] recoder-tools unter Debian/c't-VDR - divx auf schwachen Rechnern

  • Hi,
    dies ist eine Anleitung, wie man aus den recoder-tools ein .deb macht und es mit Debian/c't-VDR einsetzt. Mit den recoder-tools kann man auf einem VDR mit zu wenig Leistungs für divx-Filme und einem zweiten stärkeren Rechner divx-Dateien abspielen und darin spulen oder pausieren. Bei mir reichte ein Epia SP-13000 (1,3Ghz) nicht aus, aber mein Haupt-VDR mit einem XP-2600+ reicht aus, um selber divx abzuspielen und gleichzeitig eine Datei für meinen anderen VDR zu recoden. Mehr Infos und eine englische Kurz-Anleitung gibts auf der recoder-tools-Homepage.


    Folgendes hat bei mir funktioniert:

    • Man braucht mindestens build-essential und fakeroot, falls noch mehr gebraucht wird dpkg-buildpackage schon meckern.
    • recoder-tools von http://www.errror.org/vdr/recoder-tools.html runterladen, zum Zeitpunkt als das Howto hier geschrieben wurde war die aktuelle Version 0.0.2.
    • Entpacken und ins Verzeichnis wechseln.
    • In der aktuellen Version muss die IP des Servers noch fest beim kompilieren festgelegt werden. (Dadurch ist es momentan auch unmöglich, das Tool als .deb direkt zu verteilen.) Dazu muss man "--with-server-ip=192.168.x.y" (durch eigene IP ersetzen :)) in debian/rules setzten (in der Version etwa Zeile 30, in der vorherigen Zeile den Backslash nicht vergessen)
    • bei Bedarf debian/changelog auf version 0.0.2-1 erhöhen, hat der original-Autor wohl vergessen vergessen. Wenn man das nicht macht, bekommt man halt ein Paket mit der Versionsnummer 0.0.1-1, macht aber auch keinen Unterschied.
    • Das .deb mit "dpkg-buildpackage -uc -us -rfakeroot -b" erstellen.
    • Das .deb auf Server und Client installieren (falls die Systeme unterschiedliche Architekturen oder libs haben, müssen die recode-tools auf dem anderen System passend neu übersetzt werden.)
    • Auf Server und Client müssen die Dateien momentan noch im gleichen Verzeichnis liegen. Also wenn die divx-files auf dem Server in /pub/video liegen, muss man das Verzeichnis auf dem Client auch dort mounten. (smb/nfs/whatever)
    • Auf dem Client muss das mplayer-Plugin und ein mplayer mit dvb-support im Pfad installiert sein. Das mplayer-Plugin muss mit dem recoderc anstatt dem mplayer gestartet werden, z.B. indem mal das mplayer-Plugin mit dem Parameter "-M /usr/bin/recoderc" startet. Unter Debian/c't-VDR kann man dafür den Parameter in /etc/vdr/plugins/plugin.mplayer.conf eintragen. Außerdem muss falls noch nicht geschehen der mplayer im Plugin-Konfigurations-Dialog auf den slave-mode gestellt werden.
    • Auf dem Server muss ein mplayer.sh-Script im Pfad liegen. (http://batleth.sapienti-sat.org/projects/VDR/) In der Konfigigurations-Datei des mplayer.sh-Skripts muss der VO-Parameter auf "mpegpes:grab.mpg" gesetzt sein.
    • Zum Testen kann man einfach auf dem Server "recoderd" ausführen und auf dem Client das mplayer-Plugin aus dem Menü aufrufen. Nach jeder Datei stoppt der recoderd und muss neu gestartet werden. Einen schönen Automatismus suche ich noch (s.u.), im Moment starte ich den recoderd einmal bei Bedarf mit folgendem Befehl: (Solange eine Datei recoderd-run existiert, startet der recoderd nach jeder Datei neu.)

      Code
      1. while [ -e recoderd-run ] ; do recoderd ; done



    Zum Thema des automatischen Startens und neu Startens hab ich auch noch mal hier um Hilfe gefragt: Wie den recoderd automatisch starten und neu starten?


    HTH, Jakob

    Haupt-VDR: Silverstone LC11M, AMD XP2400+ auf einem K7VM2, 2xTT DVB-S (1xFF, 1xBudget), 256MB RAM, 320GB HDD, mit Ubuntu 10.04 LTS+yavdr/stable als Wohnzimmer-VDR
    Zweit-VDR: Silverstone SG02-F, AMD X2 215 auf einem Asus
    M4N78-VM, 2GB RAM, 16GB USB als root-fs mit yaVDR 0.4 als Netzclient
    Fileserver: AMD X2 4450e, 3GB RAM, 4*2TB HDD im SWRaid5, mit Ubuntu als Homeserver und Always-On-Zweitdesktop
    Mein Blog

    Dieser Beitrag wurde bereits 2 Mal editiert, zuletzt von jakob42 ()

  • Falls das überhaupt noch wer außer mir benutzt: Um die recoder-tools mit gcc-4.3 übersetzen zu können, muss man folgende Header includieren:
    In der recoderd.cpp:

    Code
    1. #include <cstdlib> // exit()


    Und in der recoderc.cpp:

    C
    1. #include <cstdlib> // exit()
    2. #include <cstring>


    Problem war das Aufräumen von Headern beim GCC.


    Damit hab ich nun auch getestet, dass es auf 64bit läuft. :-)
    Jakob

    Haupt-VDR: Silverstone LC11M, AMD XP2400+ auf einem K7VM2, 2xTT DVB-S (1xFF, 1xBudget), 256MB RAM, 320GB HDD, mit Ubuntu 10.04 LTS+yavdr/stable als Wohnzimmer-VDR
    Zweit-VDR: Silverstone SG02-F, AMD X2 215 auf einem Asus
    M4N78-VM, 2GB RAM, 16GB USB als root-fs mit yaVDR 0.4 als Netzclient
    Fileserver: AMD X2 4450e, 3GB RAM, 4*2TB HDD im SWRaid5, mit Ubuntu als Homeserver und Always-On-Zweitdesktop
    Mein Blog