Flüssiges 1080p H.264 auf älteren Dualcore-Rechnern mit Mplayer

Mplayer

Mplayer lernt Multithreading

09.03.2009
Der hoch effiziente Codec H.264 ist insbesondere mit dem High-Profile-Feature CABAC (Arithmetische Codierung) extrem rechenintensiv. So rechenintensiv, dass ältere Rechner es nicht flüssig spielen können..

Bei CPUs, die älter sind als Intels Core beziehungsweise AMDs K10-Generation ist bei 720p-Dekodierung meist schon das Limit erreicht - falls nicht eine moderne Nvidia-Grafikkarte mit VDPAU beim Dekodieren zur Hand geht oder der proprietäre, aber sehr schnelle CoreAVC genutzt wird. Dank des Google Summer-of-Code-Projekts ffmpeg-mt kommen aber nun endlich auch ältere Dualcore-Rechner in den Genuss von riesigen HD-Auflösungen. Ffmpeg-mt wendet dabei die bei der Entwicklung des extrem gut skalierenden H.264-Encoders x264 gewonnene Erkenntnisse auf das gesamte ffmpeg-projekt an.

Wir machen die Probe aufs Exempel, kompilieren und installieren mplayer mit ffmpeg-mt-Unterstützung wie auf der Mplayer-Homepage angegeben. Einige wenige Voraussetzungen gibt es zu beachten: Das von Linus Torvalds höchstselbst entwickelte Versionierungstool git ist zu installieren (beispielsweise über sudo apt-get install git-core auf Ubuntu). Eine GCC-Umgebung ist ebenso Voraussetzung wie eine funktionierende Videoausgabe.

Sind diese Bedingungen erfüllt, lässt sich mit git clone git://repo.or.cz/mplayer && cd mplayer && git checkout origin/mt && git submodule init && git submodule update && ./configure && make der Source herunterladen, konfigurieren und kompilieren, ein sudo make install installiert den multithread-fähigen mplayer schließlich.

Nun ruft man den Mplayer mit dem Zusatz -lavdopts threads=N auf, wobei N für die Anzahl an Threads steht, auf die ffmpeg-mt die Rechenlast verteilen soll. Es ist ratsam, sich ein kurzes Shellscript mit leicht tippbarem Namen zu machen, das den mplayer gleich mit den entsprechenden Optionen aufruft (etwa in der folgenden Syntax: mplayer -lavdopts threads=N "$@")

In unserem Test spielen ältere Systeme wie frühe Athlon X2 oder ein Quad G5 nun völlig flüssig unseren 1080p-MKV-Democlip aus dem Opensource-Film Big Buck Bunny sowie sämtliche anderen H.264-Testfiles, die wir auftreiben können, selbst extrem rechenaufwendige hochkomplexe Szenen, bei denen sich auch einige Core 2 Duos mit auf nur einem Kern laufender Dekodierung noch verschlucken können. Auch ältere Pentium-D-Systeme sollten damit nun 1080p "Full HD ready" sein. Wenn Sie keine Dualcore-CPU oder auch einen älteren Dual-CPU-Rechner (Opteron, Pentium-4-Xeon etc) ihr eigen nennen, wird dies alles natürlich nichts bringen, denn der einzige Sinn und Zweck von ffmpeg-mt ist es, die Last auf mehrere CPUs zu verteilen, es gibt keine sonstigen Beschleunigungen.

Laut Mplayer-Homepage hat ffmpeg-mt wohl noch Probleme mit gepackten B-Frames, aber H.264-Dateien, die dieses Feature nutzen, scheinen äußerst rar gesät zu sein, in unserem Test spielte alles einwandfrei.

Ähnliche Artikel

Kommentare
Shellscript
Anonymous (unangemeldet), Dienstag, 10. März 2009 00:05:43
Ein/Ausklappen

Statt "%1" "%2" "%3" usw. zu schreiben, kann man besser gleich "$@" nehmen. Details siehe man bash.


Bewertung: 226 Punkte bei 51 Stimmen.
Den Beitrag bewerten: Gut / Schlecht
-
Re: Shellscript
teste (unangemeldet), Dienstag, 10. März 2009 01:21:30
Ein/Ausklappen

teste 234


Bewertung: 263 Punkte bei 51 Stimmen.
Den Beitrag bewerten: Gut / Schlecht
Re: Shellscript
Daniel Kottmair, Dienstag, 10. März 2009 10:34:36
Ein/Ausklappen

Danke, genau danach hab ich gesucht ($0 war's nicht), werd's gleich korrigieren!...


Bewertung: 171 Punkte bei 60 Stimmen.
Den Beitrag bewerten: Gut / Schlecht
Anzahl Threads
Klaus (unangemeldet), Sonntag, 10. Mai 2009 22:40:02
Ein/Ausklappen

Habe nach Anleitung den mplayer-mt selber kompiliert.

Ergebnis ist tatsächlich beeindruckend, auch auf meinem Laptop mit leistungsschwacher i945-Grafikhardware kann ich nun mit leichtem Bildruckeln h.264-codierte 1080i-Videos abspielen.

Interessanter Nebeneffekt: ich habe die Anzahl der Threads auf 8 gesetzt, damit kann ich auch MPEG2-Videos ohne Bildfehler beschleunigt abspielen. Bei zwei Prozessen (und einem Core2-Duo) habe ich nur Bildfehler.


Bewertung: 200 Punkte bei 54 Stimmen.
Den Beitrag bewerten: Gut / Schlecht
probier ich schon seit wochen
Daniel Gultsch, Montag, 09. März 2009 21:53:12
Ein/Ausklappen

ich beschäftige mich schon seit einiger zeit damit. Also damit mplayer 1080p auf zwei kernen bei zu bringen. irgendwie schaff ich das nicht. ich weiß zwar sehr wohl, das es ffmpeg-mt gibt, aber ich schaff es nicht meinen mplayer aus gentoo gegen ffmpeg-mt zu linken. und wenn ich mplayer dann auch aus den sourcen übersetze geht es auch nicht. irgendwie scheint mplayer sein eigenes ffmpeg mit zu bringen. mhh ich probier's bei gelegenheit nochmal mit den hier vorgestellten kommandos. wär echt cool wenn das mal klappen würde. mein SU9400 ist nämlich mit nur einem kern viel zu schwach für 1080p. zumindest wenn es in big buck bunny zu schnellen bewegungen kommt.
However. Wird Zeit ffmpeg-mt mal zurück zu porten. wieder in ffmpeg rein.


Bewertung: 239 Punkte bei 58 Stimmen.
Den Beitrag bewerten: Gut / Schlecht

Aktuelle Fragen

NOKIA N900 einziges Linux-Smartphone? Kein Support mehr
Wimpy *, 28.08.2016 11:09, 1 Antworten
Ich habe seit vielen Jahren ein Nokia N900 mit Maemo-Linux. Es funktioniert einwandfrei, aber ich...
Scannen nicht möglich
Werner Hahn, 19.08.2016 22:33, 3 Antworten
Laptop DELL Latitude E6510 mit Ubuntu 16,04, Canon Pixma MG5450. Das Drucken funktioniert, Scann...
Wie kann man das berichtigen
Udo Muelle, 17.07.2016 20:39, 1 Antworten
Fehlschlag beim Holen von http://extra.linuxmint.com/dists/rosa/main/binary-i386/Packages Hash-S...
Installation Genimotion
Horst Müller, 15.07.2016 17:00, 1 Antworten
Hallo, ich kann Genimotion nicht installieren. Folgende Fehlermeldung habe ich beim Aufruf erh...
Probleme beim Hochfahren der Terastaion 5400 mit Unix-Distrib
Sheldon Cooper, 10.07.2016 09:32, 0 Antworten
Hallo ihr lieben, habe seit zwei Tagen das Problem, das das NAS (Raid5) nicht mehr sauber hoch...