Archiv/FFmpeg/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:

  1. ⚓︎ Ein Terminal öffnen

  2. ⚓︎ Installation von Programmen

  3. ⚓︎ Einen Editor öffnen

  4. ⚓︎ Ein einzelnes Paket installieren

  5. ⚓︎ Pakete aus dem Quellcode erstellen

Inhaltsverzeichnis
  1. Vorbereitung
  2. Quellcode herunterladen
    1. Aus den Paketquellen
    2. Von der FFmpeg-Projektseite
  3. Aus Ubuntu-Paketquellen kompilieren
  4. Aus Quellcode von der Homepage kompilieren...
  5. Codecs und Hilfsmittel kompilieren
    1. x264 kompilieren
    2. Theora kompilieren
    3. VP8 kompilieren
    4. Yasm kompilieren
  6. Links

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]:

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:

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:

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:

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

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:

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:

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

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:

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