Voodooalert+x264 Logo
US+UK Flagge DE+AT Flagge
Sprache wechseln:
 

x264 Benchmark Kompilier- & Installationsanleitung für Linux

Linux Logo

Systemvoraussetzungen

Um den x264 Benchmark auf Linux übersetzen und installieren zu können, muß zuerst einmal eine gewisse Basissoftware vorhanden sein. Dazu gehören hauptsächlich:


Üblicherweise sind diese Tools im Rahmen der vorliegenden Linux Distribution zu beziehen, auf RedHat Derivaten etwa mit Hilfe von yum install gcc, auf Debian Linux etwa mit aptitude install build-essential. Wo der yasm Compiler nicht vorliegt, läßt sich selbiger in der Regel auch leicht von Quellcode übersetzen, ein ./configure && make && make install genügt in der Regel, solange die GCC Build Toolchain vorhanden ist.

Hat man diese Tools nicht zur Verfügung, eventuell, weil man ein Embedded System vorliegen hat, so kann man sein Glück noch mit einer ELDK (Embedded Linux Development Kit) versuchen, welches für einige ARM, PowerPC und MIPS Architekturen zur Verfügung steht:

Um eine ELDK auf einem Embedded System zu verwenden, braucht es noch einiges extra, doch das soll erst weiter unten beschrieben werden. Zuerst wenden wir uns dem regulären Linux System zu.

Die Benchmark-Software selbst

Um x264 benutzen zu können, brauchen wir die Decodingfilter von libavcodec (kurz libav) und den x264 Encoder selbst, der im Verlauf der Installation gegen libav linked wird. Weiters natürlich das Benchmarkvideo, das als Input verwendet wird, Downloadmirror zum Download des letzteren sind am Ende der [Benchmarkergebnisliste] verfügbar. Als Ersatz für libav kann man auch ffmpeg/ffms verwenden, wenn man dies möchte.

Der Einfachheit halber nehmen wir hier an, daß die Dateien nun in /home/user/x264src/ liegen. Weiters nehmen wir an, daß ein relativ modernes System mit yasm Assembler vorliegt. Auf der Konsole wechseln wir also in dieses Verzeichnis, und beginnen mit libav. Entpackt wird das Archiv mit tar -xzvf <filename.tgz>, wonach es einen libav Ordner gibt. In diesen Ordner wechsle man nun, und führe die folgenden Kommandos hintereinander als root aus (Wer Compiler und Linker nicht als root laufen lassen möchte, kann dies auch rein nur für den letzten Schritt tun). Die --prefix Option ist hierbei optional. Sollte ein nicht LSB/POSIX-kompatibles System vorliegen (selten!), so müßte hier ein anderer Pfad spezifiziert werden, z.B. / oder /usr:

Nun ist libav installiert, wir können also daran gehen, x264 selbst zu linken und zu bauen, man entpacke also den x264 Quellcode mit tar -xjvf last_x264.tar.bz2 und wechsle danach in das x264 Verzeichnis. Nun ähnliches wie auch zuvor. Die --prefix Option ist hierbei optional. Sollte ein nicht LSB/POSIX-kompatibles System vorliegen (selten!), so müßte hier ein anderer Pfad spezifiziert werden, z.B. / oder /usr. Ist diese Pfadänderung wirklich notwendig, so muß nach dem x264 configure Schritt auch noch die config.mak editiert werden, hier muß gegen Ende die Direktive LDFLAGSCLI = -L. um z.B. LDFLAGSCLI = -L. -L/lib oder LDFLAGSCLI = -L. -L/usr/lib o.ä. ergänzt werden:

Nun kann man die Funktion durch x264 --version prüfen. Funktioniert das, und zeigt das Binary an, daß es gegen libswscale und libavformat linked ist, dann hat alles sauber funktioniert. Sollte man in der Tat ein System besitzen, für welches noch keine Assemblercodepfade vorliegen, z.B. ein DEC Alpha oder ein sehr alter Intel x86 wie etwa ein Pentium MMX, dann müßte man noch die Option --disable-asm an beide configure Skripte übergeben. yasm braucht man in so einem Fall gar nicht zu installieren. Nun kann man folgendes Benchmarkscript herunterladen:

Diese Datei launchbenchmark.sh kopieren wir nun in einen für den Benchmark gedachten Unterordner, den wir ggf. anlegen: mkdir -p /home/user/x264benchmark. In diesem Ordner sollte auch das Inputvideo elephantsdream_source.264 landen.
Nun kann man den Benchmark im Prinzip ausführen, hierzu gebe man einfach folgendes ein, während man im Ordner /home/user/x264benchmark sitzt:

Im Betrieb kann das ganze z.B. so aussehen:

Linux Screenshot

Hiernach ist einfach der "Real" Wert aus dem Terminal abzulesen.

Je nach Maschine kann das jetzt durchwegs mehrere Stunden, in extremen Fällen auch Tage, Wochen oder Monate dauern. Wenn man dies remote per SSH o.ä. macht, sollte man eventuell eine screen Session andenken, die man auch schließen und im Hintergrund weiterlaufen lassen kann. So muß die interaktive Shell nicht zwingend offen bleiben. Bevor man screen verwendet - sofern man das möchte - sollte man sich noch die entsprechende Dokumentation mit man screen durchlesen.

Embedded Systems & ELDK

Hat man - wie oben kurz erwähnt eine ELDK verwenden müssen, so sollte man mit chroot Umgebungen umgehen können, um selbige sinnvoll einsetzen zu können. Nicht alle Maschinen eignen sich für eine ELDK, manche müssen erst hacked werden (Router, NAS), andere haben einfach nicht genug Storage, aber in manchen Fällen kann eine ELDK helfen, ein Compiler- und Packagemanager-loses System mit eben solchen Tools auszustatten.

Um chroot korrekt einzusetzen, genügt es normal, die ELDK am Zielsystem zu entpacken, wir nehmen hier den Ordner /eldk an. Danach müssen noch einige Dinge vorbereitet werden, bevor die ELDK sinnvoll verwendet werden kann. So müssen die /dev und /proc Subsysteme vorbereitet werden, in etwa so:

Danach könnte man normalerweise per chroot /eldk als root in den neuen Kontext wechseln (wo sich auch irgendwo in Unterordnern der Sourcecode für libav und x264 befinden sollte), doch oft genügt dies auf Embedded Systems nicht. Manche haben auch zuwenig RAM und sind dennoch swaplos, womit das Einrichten eines Swapfiles unabdingbar wird. Dies kann z.B. so gemacht werden, hier vorerst außerhalb vom chroot stehend, dann wechselnd und aktivierend, ein Swapfile von 1GB wird hier erzeugt:

Wenn man sein Embedded System soweit hat, kann man noch innerhalb des Systems yasm kompilieren und installieren (falls nötig, z.B. ARM NEON vorhanden), und danach wie oben beschrieben libav+x264 bauen und installieren, sowie ausführen.

[Zurück zur x264 Benchmark Ergebnisliste]

[Anleitung kommentieren]