XBMC Multithreaded - ältere Rechner zum abspielen von HD-Videos fitmachen

  • Ziel des HowTos ist das Installieren von XBMC mit Multicore Unterützung beim abspielen.

    Vorraussetzungen für dieses HowTo sind:

    • ein alter Rechner (Multicore)
    • erweiterte Linuxkenntnisse (oder Windows, aber das behandel ich nicht)

    Mein System (Acer Aspire 5650):

    • Intel DualCore T2300 (1,6Ghz)
    • Nvidia Go 7600
    • 2Gb Ram

    Zwar kann ich es nicht garantieren, dass jeder (Multicore) PC schnell genug ist um HD abzuspielen, doch wenn er ungefähr gleich (oder besser) wie meiner ist, wird etwas zu machen sein. SD Videos profitieren ebenso.


    Ich habe mir gestern mal ein paar Gedanken gemacht, wie ich meinem alten Laptop doch noch dazu bringen kann, HD Videos abzuspielen. 1080p Videos ruckelten immer bei schnellen, bewegten Szenen.

    Videos direkt auf der Grafikkarte zu dekodieren geht nicht, meine ist eine der Letzten ohne Vdpau. Das Dekodieren über die CPU mit GPU Unterstützung (Xmvc) ist veraltet. Übertakten ist auch keine Lösung. Beim abspielen der Videos langweilt sich ein Kern, daher liegt es nahe, diesen auch noch mit zu nutzen.

    Dazu muss man XBMC mit ffmpeg-mt kompilieren.


    Am Anfang sollte man XBMC und ffmpeg deinstallieren, da wir diese ersetzen.


    Zunächst erstellt man sich einen Ordner wo man arbeiten möchte und wechselt dahin.

    Code
    mkdir xbmc-mt
    cd xbmc-mt

    Danach beschafft man sich per git XBMC und ffmpeg-mt.

    Code
    git clone git://github.com/xbmc/xbmc.git
    git clone git://git.gitorious.org/ffmpeg/ffmpeg-mt

    Danach die Anhängigkeiten beider Paktete auflösen (hab gerade keine Liste, wenn jemand Probleme hat bin ich gerne behilflich).

    Nach ffmpeg-mt wechseln, konfigurieren, kompilieren, installieren.

    Code
    cd ffmpeg-mt
    ./configure --prefix=/usr --enable-nonfree --enable-avfilter --enable-version3 --enable-shared --enable-gpl --enable-libfaac --enable-libvorbis --enable-pthreads --enable-libfaac --enable-libxvid --enable-x11grab --enable-libx264 --enable-libtheora --enable-version3 --enable-nonfree --enable-postproc --enable-libfaac --enable-libopencore-amrnb --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libxvid --enable-x11grab
    make -j 2
    make install

    Jetzt ist XBMC damit drann.

    Code
    cd ../xbmc
    ./bootstrap
    ./configure --prefix=/usr --enable-external-ffmpeg
    make -j 2
    make install

    Fertig. Nun kann man XBMC mit

    Code
    xbmc


    oder

    Code
    xinit xbmc


    starten.


    Nun laufen auch 1080p Videos flüssig auf der alten Kiste. Die Kerne teilen sich die Arbeit. Zwar habe ich noch nicht viel experimentiert, doch die Ergebnisse lassen sich zeigen. Bei meinen Referenzvideo liegt die Auslastung von beiden Kernen auf ca 55% (früher ca. 85% auf einem). Bei schnelleren Szenen sind diese mit ca. 85% ausgelastet, wobei das Bild absolut flüssig bleibt (früher 100% und Frames gingen verloren).

  • ich dachte ja, dass das multithreading schon drinn ist. aber wieder was dazugelernt. nice.

    In XBMC selbst ist es enthalten, nur im Video-Renderer, wo FFmpeg verantwortlich ist, nicht.


    Ich spiele gerade einen BluRay Rip von Zurück in die Zukunft ab, es läuft flüssig trotz hoher Bitrate. Gerade ebend ist es dem Prozessor zu warm geworden und er hat gedrosselt, was zu einem Leistungsabfall führte und so das Video zum ruckeln kam. Ich überlege ja, ein Gehäuse mit besserer Kühlung zu kaufen/bauen. Wird schwierig werden.

    Edit: 9.11 hat mit mehreren Kernen dekodiert, Dharma nicht mehr. So wie ich das mitbekommen habe entwickeln sich ffmpeg und der Fork FFmpeg-mt auseinander. Da man bei FFmpeg bleiben wollte, musste man den Multithread Support einstellen. Hier nachzulesen: http://forum.xbmc.org/showthread.php?t=89401.

    Nochmal edit: die Neuerungen aus FFmpeg-mt sind zu FFmpeg zurückgeflossen. Und zwar nach dem Dharma Release. Eigentlich braucht man nur eine aktuelle Version von FFmpeg reinkompilieren und es sollte funktionieren. Ich werde das mal probieren.

  • Hi,
    ich habe das auch schon mal probiert, mir fehlt allerdings immer eine Abhängigkeit, egal wie ich den ffmpeg kompiliere oder installiere.

    Zitat


    configure:21996: $PKG_CONFIG --exists --print-errors "$FFMPEG_LIBNAMES"
    Package libpostproc was not found in the pkg-config search path.
    Perhaps you should add the directory containing `libpostproc.pc'
    to the PKG_CONFIG_PATH environment variable
    No package 'libpostproc' found


    libpostproc wird irgendwie nicht installiert, die anderen libs schon..?

    Gruß
    f

  • Was sagt

    Code
    whereis libpostproc

    Fyi, ich habe FFmpeg doch etwas ausführlicher konfiguriert:

    Code
    ./configure --prefix=/usr --enable-nonfree --enable-avfilter --enable-version3 --enable-shared --enable-gpl --enable-libfaac --enable-libvorbis --enable-pthreads --enable-libfaac --enable-libxvid --enable-x11grab --enable-libx264 --enable-libtheora --enable-version3 --enable-nonfree --enable-postproc --enable-libfaac --enable-libopencore-amrnb --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libxvid --enable-x11grab

    Da bin ich etwas durcheinandergekommen. Im nachhinein wieder herauszufinden, mit welcher Lösung es nun klappt, ist nicht ganz so leicht ;). Es werden sicherlich weitere Bibliotheken nötig sein. So richtig habe ich mich nicht damit befasst, da es fast auf Anhieb funktionierte. " --enable-postproc" dürfte Ausschlaggebend sein. Sorry.

  • Was sagt

    Code
    whereis libpostproc


    ... hab's inzwischen gefunden, musste noch nen link setzen, bin wohl mit den libdirs durcheinander gekommen. (obwohl, das kann man für die einzelnen libs ja gar nicht wählen, egal..)

    Zitat


    Fyi, ich habe FFmpeg doch etwas ausführlicher konfiguriert:

    Code
    ./configure --prefix=/usr --enable-nonfree --enable-avfilter --enable-version3 --enable-shared --enable-gpl --enable-libfaac --enable-libvorbis --enable-pthreads --enable-libfaac --enable-libxvid --enable-x11grab --enable-libx264 --enable-libtheora --enable-version3 --enable-nonfree --enable-postproc --enable-libfaac --enable-libopencore-amrnb --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libxvid --enable-x11grab

    Da bin ich etwas durcheinandergekommen. Im nachhinein wieder herauszufinden, mit welcher Lösung es nun klappt, ist nicht ganz so leicht ;). Es werden sicherlich weitere Bibliotheken nötig sein. So richtig habe ich mich nicht damit befasst, da es fast auf Anhieb funktionierte. " --enable-postproc" dürfte Ausschlaggebend sein. Sorry.


    Ja, habe auch einiges explizit angegeben (biste sicher, dass man das alles braucht ;), --enable-vdpau hab ich noch drin). Hab aber noch nicht weiter getestet.
    Danke für die Mühe schon mal.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!