X264 kompilieren
Über diesen Wiki-Artikel
Hinweis:
Der Artikel wird hier mit Absicht ausführlicher beschrieben, um auch für Einsteiger verständlich zu sein. |
Kurzbeschreibung
x264 ist ein GNU General Public Video-Encoder für das Format H.264 (MPEG-4 AVC) und arbeitet auf Kommandozeilenebene. Es verarbeitet u.a. alle von ffmpeg und gstreamer unterstützten Formate und lässt sich optional auch in MPlayer/Mencoder einbinden.
Einleitung
In vielen Anleitungen, die im Internet zu finden sind, wird x264 entweder per make und make install kompiliert und installiert, oder mittels checkinstall.
Beides mag für den privaten Gebrauch genügen, entspricht aber nicht den Vorgaben nach Debian.
Mittels checkinstall wird x264 nur als ein einzelnes Debian-Paket gebaut, womit die Aufteilung in die laufzeitrelevanten und nur für Entwickler relevanten Teile entfällt.
Eine Kompilierung, die nur auf make und make install beruht, geht sogar komplett am Paketmanagement vorbei.
Hinweis: Unter Debian und Derivaten besteht x264 aus drei Debian-Paketen! |
- x264
- libx264
- libx264-dev
Grundvoraussetzungen
Die Entwicklungsumgebung besteht aus einer Reihe von Programmen; wer sich mit dem Thema intensiver auseinandersetzen möchte, dem sei die Anleitung für zukünftige Debian-Betreuer ans Herz gelegt.
Folgende Programme werden für die Entwicklungsumgebung benötigt und müssen installiert werden:
root@debian:~# apt-get install dpkg-dev fakeroot pbuilder build-essential dh-make debhelper devscripts patchutils quilt gcc git wget
Abhängigkeiten auflösen
Debian Multimedia muss zuvor in die /etc/apt/sources.list eingetragen werden, da x264 aus dem Standard Debian-Repositorium ausgegliedert wurde.
Beispiel testing
deb http://www.deb-multimedia.org/ testing main non-free deb-src http://www.deb-multimedia.org/ testing main non-free
Danach die Paketlisten aktualisieren.
root@debian:~# apt-get update
Folgende Programme und Entwickler-Libraries (dev) werden benötigt und müssen installiert werden, um die Abhängigkeiten von x264 aufzulösen:
yasm, quilt, libx11-dev, ccache, libffms2-dev (>= 2.15), libgpac-dev, help2man, libswscale-dev
Mittels apt-get werden die meisten Abhängigkeiten vom System automatisch aufgelöst und installiert, dazu ruft man folgendes auf:
root@debian:~# apt-get build-dep x264
Schritt 1 - Sourcecode herunterladen
Als Grundlage dient die .dsc-Datei der aktuellsten x264 Version bei Debian Multimedia und der x264 Source per git von videolan.
Es ist ratsam ein Verzeichnis anzulegen, Beispiel build
user@debian:~$ mkdir ~/build && cd ~/build
.dsc-Datei
Die .dsc-Datei beschreibt ein Quellpaket und enthält Dateinamen und Prüfsummen der Dateien im Quellpaket: einer .orig.tar.gz-Datei, welche die originalen, unveränderten Quellen in einem gzip-komprimierten tar-Format enthält und üblicherweise eine .diff.gz-Datei, die Debian-spezifische Änderungen an den Original-Quellen enthält. Das Dienstprogramm dpkg-source packt und entpackt Debian-Quellpakete. Mehr Details sind in der Handbuchseite zu finden.
Die Debian GNU/Linux-FAQ - Kapitel 7 - Grundlagen des Debian-Paketverwaltungssystems (siehe Links)user@debian:~/build$ dget -u http://www.deb-multimedia.org/pool/main/x/x264/x264_0.svn20110212-0.0.dsc
Entsprechend der Erklärung zur .dsc-Datei hat dget im Verzeichnis ~/build den Ordner x264-0.svn20110212 eingerichtet, inklusive Unterordner Debian, plus die Dateien x264_0.svn20110212.orig.tar.gz und x264_0.svn20110212-0.0.diff.gz.
x264 git Sourcecode herunterladen
user@debian:~/build$ git clone git://git.videolan.org/x264.git
Im Verzeichnis ~/build wird der Ordner x264 angelegt, in dem sich dann der aktuellste x264-git Source befindet.
Möchte man den Quellcode irgendwann aktualisieren, lautet der Befehl:
user@debian:~$ cd ~/build/x264
user@debian:~$ git pull
Schritt 2 - Sourcecode vorbereiten
Datei .version.sh
- Im x264 Git Ordner liegt die Datei .version.sh.
Der Aufruf dieser Datei wird einmal benötigt und sollte für einen späteren Schritt notiert werden.
user@debian:~/build/x264$ ./version.sh
Die Ausgabe sieht in etwas wie folgt aus :
#define X264_VERSION " r1913 5fd3dce" #define X264_POINTVER "0.114.1913 5fd3dce"
Zu notieren gilt hier die 114 hinter der Null in der zweiten Zeile. 114 ist die Versionsbezeichnung für die libx264.so
Beispiel: Um zu erfahren, welche libx264.so MPlayer benutzt, falls installiert.
user@debian:~$ ldd /usr/bin/mplayer | grep x264
libx264.so.112 => /usr/lib/libx264.so.112
x264 git Ordner packen
Im nächsten Schritt wird der git Ordner x264 als tar.bz gepackt, mit dem Namen last_x264.tar.gz.
user@debian:~/build$ tar -czf last_x264.tar.gz x264
Jetzt in das in das (alte) Verzeichnis wechseln, welches dget aus der Datei erstellt hat und mittels uupdate abgleichen.
Dabei wird gleich die aktuelle Versionsbezeichnung genannt.
- 1:0. gefolgt von svnDatum
uupdate
user@debian:~$ uupdate -v 1:0.svn20110222 last_x264.tar.gz
Die Ausgabe sieht in etwa so aus:
New Release will be 1:1:0.svn201102222-1. Symlinking to pristine source from x264_0.svn20110222.orig.tar.gz... -- Untarring the new sourcecode archive last_x264.tar.gz Success! The diffs from version 1:0.svn20110212-0.0 worked fine. Remember: Your current directory is the OLD sourcearchive! Do a "cd ../x264-0.svn20110222" to see the new package
uupdate erstellt ein Verzeichnis x264-0.svn20110222 inklusive Unterordnerordner debian.
Schritt 3 - Der Ordner x264-0.svn20110222
Hier nur wichtig der Unterordner debian.
user@debian:~$ cd ~/build/x264-0.svn20110222/Debian
Die Datei changelog wurde automatisch auf die neue Version aktualisiert, sieht in etwa dann so aus..
x264 (1:0.svn20110222-1) unstable; urgency=low * New upstream release -- Dein Name <Name@debian> Tue, 22 Feb 2011 08:52:47 +0100
Die Datei libx264.install
Kontrolliert wird hier die Datei libx264-Nummer.install.
Ist die Nummer gleich mit den Angaben aus der Datei .version.sh, ist nichts weiter zu machen, ansonsten muss der Dateiname umbenannt werden.
Beispiel : Aus libx264-112.install wird libx264-114.install
Die Datei control
Hier gibt es zwei Abschnitte, die kontrolliert und ggf geändert werden müssen.
- Erster Abschnitt ca Zeile 40
Package: libx264-114 Section: libs
Hier muss die Versionsbezeichnung hinter libx264 mit der Datei .version.sh verglichen und ggf. die Nummer hinter dem Bindestrich angepasst, bzw. aktualisiert werden.
Zweiter Abschnitt, ca ab Zeile 50
Package: libx264-dev Section: libdevel Architecture: any Depends: libx264-114 (= ${binary:Version}), ${misc:Depends}
Hier muss ebenfalls die Versionsbezeichnung hinter libx264 mit der Datei .version.sh verglichen und ggf. die Nummer hinter dem Bindestrich angepasst, bzw. aktualisiert werden.
Die Datei rules
Ab der Zeile override_dh_auto_configure werden Optionen der Konfiguration von x264 beschrieben.
Die Zeile lautet
override_dh_auto_configure: CC="$(CC)" dh_auto_configure -- \ --enable-debug --enable-static --disable-lavf --enable-shared \ --enable-pic --enable-visualize --extra-cflags="$(CFLAGS)" \ --extra-ldflags="-Wl,-z,defs -Wl,--as-needed" --system-libx264
Wer das ändern möchte, sollte sich die Konfigurationen von x264 genauer anschauen.
Schritt 4 - Kompilieren
user@debian:~/build/x264-0.svn20110222$ fakeroot debian/rules binary
Drei Debian-Pakete stehen eine Verzeichnisebene(in ~/build) höher nach Fertigstellung zur Verfügung.
- x264_0.svn20110222-1_i386.deb
- libx264-114_0.svn20110222-1_i386.deb
- libx264-dev_0.svn20110222-1_i386.deb
Wer möchte kann die Debian Pakete mit lintian überprüfen.
Es enthält automatisierte Prüfungen für viele Aspekte der Debian-Richtlinie und für einige allgemeine Fehler.
Beispiel :
user@debian:~/build$ lintian x264_0.svn20110222-1_i386.deb
Schritt 5 - Installieren
root@debian:~/build# dpkg -i *.deb
Alle drei x264 Debian-Pakete werden installiert.
Überprüfung der installierten Version:
user@debian:~$ x264 --help
Links
Anleitung für zukünftige Debian-Betreuer
Hinweis: Fragen, Anregungen, Verbesserungen zu diesem Artikel : Diskussion 127122 |