X264 kompilieren

Aus DebianforumWiki
Wechseln zu: Navigation, Suche
WikiMultimedia und Spiele ‹ X264 kompilieren


Über diesen Wiki-Artikel

Hinweis.png Hinweis:

Der Artikel wird hier mit Absicht ausführlicher beschrieben, um auch für Einsteiger verständlich zu sein.
Fragen,Verbesserungen zum Artikel, siehe Links.


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 Debianpackage.png 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.png Hinweis: Unter Debian und Derivaten besteht x264 aus drei Debian-Paketen!


  1. x264
  2. libx264
  3. 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

Erklärung zur .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.

  1. x264_0.svn20110222-1_i386.deb
  2. libx264-114_0.svn20110222-1_i386.deb
  3. libx264-dev_0.svn20110222-1_i386.deb

Wer möchte kann die Debian Pakete mit Debianpackage.png lintian überprüfen.

Erklärung Lintian
Lintian seziert Debian-Pakete und berichtet Fehler und Verstöße gegen die Richtlinie.
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

Die Debian GNU/Linux-FAQ

x264 Videolan

x264 bei Wikipedia

Hinweis.png Hinweis: Fragen, Anregungen, Verbesserungen zu diesem Artikel : Diskussion 127122