Kompilieren
Archivierte Anleitung
Dieser Artikel wurde archiviert. Das bedeutet, dass er nicht mehr auf Richtigkeit überprüft oder anderweitig gepflegt wird. Der Inhalt wurde für keine aktuell unterstützte Ubuntu-Version getestet. Wenn du Gründe für eine Wiederherstellung siehst, melde dich bitte in der Diskussion zum Artikel. Bis dahin bleibt die Seite für weitere Änderungen gesperrt.
Artikel für fortgeschrittene Anwender
Dieser Artikel erfordert mehr Erfahrung im Umgang mit Linux und ist daher nur für fortgeschrittene Benutzer gedacht.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
Die Installation von FFmpeg bzw. Libav aus dem Quellcode ist etwas aufwändiger, aber auf diese Weise können neuere Versionen und mehr Codecs installiert werden.
Vorbereitung¶
Die zum Kompilieren notwendigen Pakete installiert man z.B.im Terminal[1]:
Befehl zum Installieren der Build-Abhängigkeiten:
sudo apt-get build-dep ffmpeg
sudo aptitude build-depends ffmpeg
Außerdem braucht man folgende Pakete[2]:
subversion (optional)
git-core (optional, ab Ubuntu 10.10 durch das Paket git bereitgestellt)
checkinstall (optional)
yasm (optional)
libxfixes-dev (Ubuntu 10.04)
Befehl zum Installieren der Pakete:
sudo apt-get install subversion git-core checkinstall yasm libxfixes-dev
Oder mit apturl installieren, Link: apt://subversion,git-core,checkinstall,yasm,libxfixes-dev
Zusätzlich werden noch die Entwickler-Pakete der in den Binärpaketen nicht enthaltenen Codecs benötigt:
libmp3lame-dev (multiverse)
libfaac-dev (multiverse)
libfaad-dev (multiverse)
libxvidcore-dev (multiverse)
libx264-dev (multiverse)
libopencore-amrnb-dev
libopencore-amrwb-dev
Befehl zum Installieren der Pakete:
sudo apt-get install libmp3lame-dev libfaac-dev libfaad-dev libxvidcore-dev libx264-dev libopencore-amrnb-dev libopencore-amrwb-dev
Oder mit apturl installieren, Link: apt://libmp3lame-dev,libfaac-dev,libfaad-dev,libxvidcore-dev,libx264-dev,libopencore-amrnb-dev,libopencore-amrwb-dev
Quellcode herunterladen¶
Aus den Paketquellen¶
Der Quellcode kann dann in einem Terminal[1] mit dem folgenden Befehl heruntergeladen werden:
apt-get source ffmpeg
Diese Version sollte man wählen, wenn man keine neuere Version von FFmpeg braucht, sondern Codecs verwenden will, die standardmäßig nicht aktiviert sind, ohne eine andere Paketquelle freizuschalten. Der Vorteil ist, dass die Erstellung der Pakete wie bei den offiziellen erfolgt und sich diese daher gut in das System einfügen. Durch den apt-get Befehl entsteht ein Verzeichnis ffmpeg-x.x.x (z.B. bei Ubuntu 10.04 LTD = ffmpeg-0.5.1) bzw. libav-x.x.x. ab 11.04 Natty.
Von der FFmpeg-Projektseite¶
Wer eine neuere Version haben will, kann über die Download-Seite ⮷ des FFmpeg-Projekts oder über die Download-Seite ⮷ des Libav-Projekts den Quellcode als bzip2- oder gzip-Archiv herunterladen. Noch aktueller ist die Version im Versionskontrollsystem des Projektes. Der Download von FFmpeg mittels Git erfolgt im Terminal durch Ausführung des Befehls:
git clone git://git.videolan.org/ffmpeg.git
Der Download von Libav erfolgt durch Ausführung des Befehls:
git clone git://git.libav.org/libav.git
Aus Ubuntu-Paketquellen kompilieren¶
Einige Codecs sind zwar im Quellcode vorhanden, werden aber standardmäßig nicht aktiviert. Dieser Abschnitt zeigt, wie man Ubuntu-Pakete erstellt, in denen diese Codecs aktiviert sind.
Vor dem Kompilieren muss man noch die Version von FFmpeg anpassen, damit das Paket bei der Aktualisierung nicht mit einer Version aus den Paketquellen überschrieben wird. Dazu wechselt man im Terminal zunächst in eines der folgenden Verzeichnisse:
Bis einschließlich 10.10 Maverick: ffmpeg-x.x.x (das "x.x.x" bezeichnet die Version)
Ab 11.04 Natty: libav-x.x.x
Mit Hilfe eines Editors [3] wird nun der Inhalt der Datei debian/changelog geändert. Die Datei sollte danach ungefähr so aussehen:
ffmpeg (4:0.5.1-1ubuntu1+private1) lucid; urgency=low * Rebuild -- Peter Silie <peter@silie> Thu, 10 Jun 2010 12:34:56 +0100 ffmpeg (4:0.5.1-1ubuntu1) lucid; urgency=low * merge from debian. remaining changes: - don't disable encoders - don't build against libfaad, libdirac and libopenjpeg (all in universe) -- Reinhard Tartler <email@entfernt> Thu, 04 Mar 2010 10:34:37 +0100 ...
Durch den Zusatz +private1
wird erreicht, dass die Version größer ist als die in der Paketquelle, aber kleiner als eventuelle (Sicherheits-)Updates (in dem Fall sollte FFmpeg wieder neu erstellt werden).
Hinweis:
Bitte genauestens auf das Format des neuen Eintrags in der changelog-Datei achten, da sonst der nachfolgende Build fehlschlägt!
Anschließend führt man folgenden Befehl aus:
dpkg-buildpackage -b
Mit der Ausführung dieses Befehls, der einige Zeit in Anspruch nimmt, werden im übergeordneten Verzeichnis einige .deb-Pakete erstellt.
Wer lediglich die FFmpeg-Anwendungen verwenden möchte, braucht als nächstes nur das Paket ffmpeg_*.deb zu installieren [4]. Wer dagegen auch die FFmpeg-Bibliotheken braucht, muss auch die anderen .deb-Pakete installieren. Aufgrund der Abhängigkeiten empfiehlt es sich, das Paket libavcodec-dev_*.deb vor dem Paket libavformat-dev_*.deb zu installieren.
Aus Quellcode von der Homepage kompilieren¶
Zuerst sollten alle zu FFmpeg gehörenden Pakete deinstalliert werden, z.B. mit
sudo apt-get purge libavcodec52 libavcodec-extra-52 libavdevice52 libavdevice-extra-52 libavfilter0 libavfilter-extra-0 libavformat52 libavformat-extra-52 libavutil49 libavutil-extra-49 libpostproc51 libpostproc-extra-51 libswscale0 libswscale-extra-0
Abhängig von der benutzten Ubuntuversion kann es notwendig sein, bestimmte Encoder-Bibliotheken ebenfalls neu zu kompilieren. Diese müssen kompiliert und installiert werden, bevor man mit der Kompilierung von FFmpeg weitermacht. Siehe dazu den Abschnitt Codecs und Hilfsmittel kompilieren. Alternativ kann man auch für Codecs, die man nicht braucht, die entsprechende Option bei dem Befehl configure
weglassen.
Unter allen Ubuntu-Versionen ist davon betroffen:
x264
libvpx (VP8)
Um den Quellcode zu konfigurieren, führt man folgenden Befehl aus:
./configure --enable-avfilter --enable-avfilter-lavf --enable-vdpau \ --enable-bzlib --enable-libgsm --enable-libschroedinger \ --enable-libspeex --enable-libtheora --enable-libvorbis \ --enable-pthreads --enable-zlib --disable-stripping --enable-runtime-cpudetect \ --enable-libmp3lame --enable-libfaac --enable-nonfree --enable-gpl \ --enable-postproc --enable-swscale --enable-x11grab --enable-libfaad \ --enable-libxvid --enable-libx264 --enable-libopencore-amrnb \ --enable-version3 --enable-libopencore-amrwb --enable-version3 \ --enable-libdc1394 --enable-libvpx
Dann standardmäßig kompilieren[5], mit checkinstall
ggf.
sudo checkinstall --pkgname=ffmpeg --pkgversion="4:VERSION+REVISION~checkinstall" --default
VERSION
ist dabei die aktuelle Versionsnummer von FFmpeg. Man findet sie in der Datei Changelog oder mit dem Befehl
sed -n 's/^version \([^:<]*\):.*$/\1/p' <Changelog | head -n +1
REVISION
ist die aktuelle Revision im Versionskontrollsystem. Diese steht in der Datei version.h oder mit folgendem Befehl:
sed -n '/FFMPEG_VERSION/s/^.*"\(.*\)".*$/\1/;s/-//gp' <version.h
Meistens wird FFmpeg nur zur Datenkonvertierung benötigt. In diesem Fall können dem configure
-Befehl die beiden Parameter --disable-ffserver
und --disable-ffplay
mit angehängt werden. Eine Gesamtübersicht der Parameter liefert --help
.
Codecs und Hilfsmittel kompilieren¶
x264 kompilieren¶
Zuerst erfolgt die Deinstallation eventuell installierter Pakete
x264
x264-dev
Auf der x264-Projektseite 🇬🇧 kann man die aktuellste Version ⮷ als .bz2-Archiv (täglich neu erstellt) herunterladen oder man benutzt das Versionskontrollsystem Git mit folgendem Befehl:
git clone git://git.videolan.org/x264.git
Das Programm wird standardmäßig kompiliert, bei der Verwendung mit checkinstall
mit folgendem Befehl installiert
sudo checkinstall --pkgname=x264 --pkgversion="VERSION~checkinstall" --default
VERSION
ist dabei die aktuelle Versionsnummer von x264.
Theora kompilieren¶
Zuerst erfolgt die Deinstallation eventuell installierter Pakete:
libtheora-dev
Den Quellcode erhält man über SVN mit diesem Befehl:
svn checkout http://svn.xiph.org/trunk/theora
Die zum Kompilieren notwendigen Pakete installieren:
Befehl zum Installieren der Build-Abhängigkeiten:
sudo apt-get build-dep libtheora
sudo aptitude build-depends libtheora
Außerdem braucht man noch folgendes Paket:
autoconf
Befehl zum Installieren der Pakete:
sudo apt-get install autoconf
Oder mit apturl installieren, Link: apt://autoconf
Man wechselt im Terminal in das Verzeichnis mit dem Quellcode und führt folgenden Befehle aus:
./autogen.sh
Danach standardmäßig kompilieren, ggf mit checkinstall
installieren:
sudo checkinstall --pkgname=theora --pkgversion="VERSION~checkinstall" --default
VERSION
ist dabei die aktuelle Versionsnummer von Theora.
VP8 kompilieren¶
Den Quellcode erhält man über Git mit diesem Befehl:
git clone git://review.webmproject.org/libvpx.git
Man wechselt im Terminal in das Verzeichnis mit dem Quellcode und kompiliert. Dabei im configure-Schritt
./configure --enable-vp8 --enable-psnr
verwenden, mit checkinstall
ggf.
sudo checkinstall --pkgname=libvpx --pkgversion="VERSION~checkinstall" --default
VERSION
ist dabei die aktuelle Versionsnummer.
Yasm kompilieren¶
Deinstallation eventuell installierter Pakete
yasm
Der Quellcode kann über die Yasm Download-Seite 🇬🇧 als tar.gz-Archiv herunterladen werden oder mit Subversion durch Ausführung des Befehls:
svn co https://www.tortall.net/svn/yasm/trunk/yasm
Die zum Kompilieren notwendigen Pakete installiert man über einen Paketmanager:
Befehl zum Installieren der Build-Abhängigkeiten:
sudo apt-get build-dep yasm
sudo aptitude build-depends yasm
Für Quellcode aus SVN braucht man noch folgendes Paket:
autoconf
Befehl zum Installieren der Pakete:
sudo apt-get install autoconf
Oder mit apturl installieren, Link: apt://autoconf
Zu kompilieren wechselt man im Terminal in das Verzeichnis mit dem Quellcode. Bei Verwendung des Quellcodes von SVN muss zunächst das configure-Skript erstellt werden:
./autogen.sh
Anschließend das Programm kompilieren, bei checkinstall
ggf. mit
sudo checkinstall --pkgname=yasm --pkgversion="1.0.1~checkinstall" --default
Links¶
FFmpeg - Hauptartikel
VLC Homepage 🇬🇧
x264-Projekt 🇬🇧
WebM Homepage 🇬🇧 (VP8-Codec)
Yasm Download-Seite 🇬🇧 ⮷
Script: FFmpeg Snapshot Installer für Ubuntu 🇩🇪 - Blogbeitrag, 03/2014