Wiki

FFmpeg/Kompilieren

Kompilieren

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

Installation aus dem Quellcode via Ubuntuquelle

Die Installation von FFmpeg aus dem Quellcode ist etwas aufwändiger, aber auf diese Weise kann FFmpeg inkl. der geschützten Codecs auch ohne Hinzufügen einer Fremdquelle und den damit verbundenen Risiken installiert werden.

Download

Der Quellcode kann dann in einem Terminal [3] mittels der beiden folgenden Befehle heruntergeladen werden:

sudo apt-get build-dep ffmpeg
apt-get source ffmpeg 

Weitere Pakete

Zusätzlich zum FFmpeg-Quellcode werden noch die Entwickler-Pakete der in den Binärpaketen nicht enthaltenen Codecs benötigt:

  • liblame-dev (multiverse, [2]) bzw. libmp3lame-dev (multiverse, [2]) für Ubuntu 9.04

  • libfaac-dev (multiverse)

  • libfaad2-dev (multiverse)

  • libxvidcore4-dev (multiverse)

  • libx264-dev (multiverse)

Paketliste zum Kopieren:

sudo apt-get install liblame-dev libfaac-dev libfaad2-dev libxvidcore4-dev libx264-dev 

sudo aptitude install liblame-dev libfaac-dev libfaad2-dev libxvidcore4-dev libx264-dev 

Falls noch das Paket ffmpeg oder die Entwicklerpakete für FFmpeg libavformat-dev und libavcodec-dev installiert sind, sollten sie nun entfernt werden.

Verwendung von AMR

Der AMR-Codec ist wegen seiner unklaren Lizenzlage nicht in den Ubuntuquellen vorhanden, d.h. auch nicht den Quellpaketen. Um AMR nutzen zu können, muss man daher zusätzlich zum FFmpeg-Quellcode den Quellcode des AMR-Codecs separat als .zip-Datei {dl} herunterladen. Diese .zip-Datei beinhaltet eine weitere .zip-Datei mit dem Quellcode, den man in den Unterordner libavcodec/amr_float entpacken muss. Die genannten Schritte lassen sich ggf. schnell im Terminal erledigen:

wget http://www.3gpp.org/ftp/Specs/archive/26_series/26.104/26104-510.zip
unzip 26104-510.zip -x *.doc
unzip 26104-510_ANSI_C_source_code.zip -d ffmpeg-0.cvs*/libavcodec/amr_float 

Der AMR-Codec ist natürlich auch nicht in den Erstellungsregeln der Quellen eingetragen, was deshalb nachgeholt werden muss. Bei der nachfolgend beschriebenen Installation mittels dpkg-buildpackage ist dazu die Datei debian/confflags zu editieren. Hier sucht man sich ziemlich oben die mit "confflags" beginnenden Zeilen heraus und fügt direkt darunter die folgende Zeile ein:

confflags += --enable-amr_nb

Im Anschluss daran kann FFmpeg wie im weiteren Text beschrieben aus den Quellen erstellt werden.

Die spätere Nutzung des Codecs erfordert eine Installation des Paketes libavcodec. Weitere Hinweise findet man in der Datei libavcodec/amr.c im Quellverzeichnis.

Paketerstellung mittels dpkg-buildpackage

Folgende Pakete müssen für die Übersetzung des Quellcodes installiert sein (vgl. [4], Debian-Methode):

  • dh-make

  • dpkg-dev

  • fakeroot

  • quilt (universe, [2])

Paketliste zum Kopieren:

sudo apt-get install dh-make dpkg-dev fakeroot quilt 

sudo aptitude install dh-make dpkg-dev fakeroot quilt 

Im Terminal wird dann in das Verzeichnis mit dem Quellcode von ffmpeg gewechselt und dort der Befehl

DEB_BUILD_OPTIONS="risky" sudo dpkg-buildpackage 

aufgerufen. Mit der Ausführung dieses Befehls, der einige Zeit in Anspruch nimmt, werden im übergeordneten Verzeichnis einige .deb-Pakete erstellt.

Unter Ubuntu 6.06 Dapper Drake sind dies die Pakete:

  • ffmpeg_0.cvs20050918-5ubuntu1.1_i386.deb

  • libavcodec-dev_0.cvs20050918-5ubuntu1.1_i386.deb

  • libavformat-dev_0.cvs20050918-5ubuntu1.1_i386.deb

  • libpostproc-dev_0.cvs20050918-5ubuntu1.1_i386.deb

Unter Ubuntu 7.04 Feisty Fawn werden noch drei weitere Pakete erstellt:

  • libavcodec0d_0.cvs20060823-3.1ubuntu1_i386.deb

  • libavformat0d_0.cvs20060823-3.1ubuntu1_i386.deb

  • libpostproc0d_0.cvs20060823-3.1ubuntu1_i386.deb

Die Unterschiede zwischen Dapper und den neueren Ubuntu-Versionen rühren daher, dass die drei zusätzlich genannten Pakete in Dapper generell nicht vorhanden sind, d.h. auch nicht in den Ubuntu-Paketquellen. Sie werden daher auch in diesem Build-Prozess nicht erzeugt.

Paketinstallation

Wer lediglich die FFmpeg-Anwendungen verwenden möchte, braucht als nächstes nur das Paket ffmpeg_*.deb zu installieren [6]. 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.

Um zu vermeiden, dass die Pakete nach der Installation von der Paketverwaltung wieder mit einer Version ohne Unterstützung der zusätzlichen Codecs überschrieben werden, werden in der Datei /etc/apt/preferences entsprechende Einträge gemacht (vgl. Beitrag zum Apt-Pinning). Das Öffnen der Datei mit dem Editor erfordert Root-Rechte [7].

Unter Dapper sehen die Einträge wie folgt aus:

Package: ffmpeg
Pin: version 0.cvs20050918
Pin-Priority: 1000
Package: libavcodec-dev
Pin: version 0.cvs20050918
Pin-Priority: 1000
Package: libavformat-dev
Pin: version 0.cvs20050918
Pin-Priority: 1000
Package: libpostproc-dev
Pin: version 0.cvs20050918
Pin-Priority: 1000

Für andere Ubuntu-Versionen müssen die Einträge entsprechend den installierten Paketen und Versionsnummern ergänzt und angepasst werden.

Installation aus dem Quellcode via SVN

In speziellen Fällen kann es erforderlich sein, eine top-aktuelle Version von FFmpeg zu installieren. In diesen Fällen wird der aktuelle Quellcode über das Subversion System bezogen.

Download

Der Download von FFmpeg mittels SVN geschieht im Terminal durch Ausführung des Befehls

svn checkout svn://svn.mplayerhq.hu/ffmpeg/trunk ffmpeg 

Installation

Um den Quellcode zu kompilieren, werden unter Dapper - nachdem man in das ffmpeg-Verzeichnis gewechselt hat - folgende Befehle ausgeführt [4]:

./configure --enable-gpl --enable-postproc --enable-libvorbis \
--enable-liba52 --enable-libdc1394 --enable-libgsm --enable-libmp3lame --enable-libfaad \
--enable-libfaac --enable-libxvid --enable-pthreads --disable-debug --prefix=/usr
make
sudo checkinstall --pkgversion=3:0.cvs<jjjjmmtt> --pkgrelease=5.ubuntu1.1 

In der aktuellen SVN-Version ist der Schalter "--enable-liba52" nicht mehr nötig, der entsprechende Codec wird standardmäßig kompiliert, das ffmpeg Configure-Script kennt den Schalter also nicht mehr.

In der Versionsnummer sollte das aktuelle Datum in der dargestellten Form <JJJJMMTT> angegeben werden. Unter Dapper kann dem configure-Befehl zusätzlich der Parameter --enable-theora angehängt werden.

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.

Mit dem Parameter --enable-shared lassen sich libavcodec und libavformat als dynamische Bibliotheken, sog. shared libraries erstellen (Dateiendung .so), die unter Dapper ansonsten nicht verfügbar sind.

Eine Gesamtübersicht der Parameter liefert --help.

Auch bei dieser Art der Installation kann ein späteres Überschreiben des installierten Paketes durch die Paketverwaltung mit dem Eintrag

Package: ffmpeg
Pin: version 0.cvs<jjjjmmtt>
Pin-Priority: 1000

in der Datei /etc/apt/preferences verhindert werden.

Installation des aktuellen ffmpeg, yasm und x264 unter Ubuntu 8.04

Download und Installation

Deinstallation eventuell installierter Pakete

sudo apt-get purge ffmpeg x264 libx264-dev

Benötigte Pakete aus den Paketquellen

sudo apt-get update

sudo apt-get install build-essential libtheora-dev subversion git-core liblame-dev checkinstall texi2html libfaac-dev libfaad-dev libxvidcore4-dev

Download und Installation: yasm

wget http://www.tortall.net/projects/yasm/releases/yasm-0.8.0.tar.gz

tar xzvf yasm-0.8.0.tar.gz

cd yasm-0.8.0

./configure

make

sudo checkinstall --pkgname=yasm --pkgversion "0.8.0" --default

Download und Installation: x264

cd

git clone git://git.videolan.org/x264.git

cd x264

./configure

make

sudo checkinstall --pkgname=x264 --pkgversion "1:0.svn`date +%Y%m%d`-0.0ubuntu1" --default

Download und Installation: ffmpeg

cd

svn checkout svn://svn.ffmpeg.org/ffmpeg/trunk ffmpeg

cd ffmpeg

./configure --enable-gpl --enable-pthreads --enable-libfaac --enable-libfaad --enable-nonfree --enable-x11grab --enable-libxvid --enable-libmp3lame --enable-libtheora --enable-libx264

make

sudo checkinstall --pkgname=ffmpeg --pkgversion "3:0.svn`date +%Y%m%d`-12ubuntu3" --default

Installation des aktuellen ffmpeg und x264 unter Ubuntu 8.10 / 9.04 / 9.10

Download und Installation

Deinstallation eventuell installierter Pakete

sudo apt-get --purge remove ffmpeg x264 libx264-dev

oder falls bei Ubuntu 9.04 / 9.10 installiert

sudo apt-get --purge remove libavcodec-unstripped-52 libavdevice-unstripped-52 libavformat-unstripped-52 libavutil-unstripped-49 libpostproc-unstripped-51 libswscale-unstripped-0

bzw. Ubuntu 8.10

sudo apt-get --purge remove libavcodec-unstripped-51 libavdevice-unstripped-52 libavformat-unstripped-52 libavutil-unstripped-49 libpostproc-unstripped-51 libswscale-unstripped-0

Benötigte Pakete aus den Paketquellen

sudo apt-get update

sudo apt-get install subversion git-core build-essential checkinstall texi2html yasm libfaad-dev libfaac-dev libmp3lame-dev libsdl1.2-dev libtheora-dev libx11-dev zlib1g-dev libxvidcore4-dev

Download und Installation: x264

git clone git://git.videolan.org/x264.git

cd x264

./configure

make

für Ubuntu 8.10 / 9.04 diese Zeile:

sudo checkinstall --fstrans=no --install=yes --pkgname=x264 --pkgversion "1:0.svn`date +%Y%m%d`-0.0ubuntu1" --default

für Ubuntu 9.10 gilt diese Zeile:

sudo checkinstall --fstrans=no --install=yes --pkgname=x264 --pkgversion "1:0.svn`date +%Y%m%d`+git364d7d-0ubuntu2" --default

Download und Installation: ffmpeg

cd

svn checkout svn://svn.ffmpeg.org/ffmpeg/trunk ffmpeg

cd ffmpeg

./configure --enable-gpl --enable-pthreads --enable-libfaac --enable-libfaad --enable-nonfree --enable-x11grab --enable-libxvid --enable-libmp3lame --enable-libtheora --enable-libx264

make

für Ubuntu 8.10 / 9.04 diese Zeile:

sudo checkinstall --fstrans=no --install=yes --pkgname=ffmpeg --pkgversion "3:0.svn`date +%Y%m%d`-12ubuntu3" --default

für Ubuntu 9.10 gilt diese Zeile:

sudo checkinstall --fstrans=no --install=yes --pkgname=ffmpeg --pkgversion "4:0.5+svn`date +%Y%m%d`-12ubuntu6" --default

Update und Installation des kompilierten ffmpeg und x264 (gilt für Ubuntu Version 8.04 / 8.10 / 9.04 / 9.10)

Update des x264

sudo apt-get purge x264 ffmpeg

cd ~/x264

make distclean

git pull

./configure

make

für Ubuntu 8.10 / 9.04 diese Zeile:

sudo checkinstall --fstrans=no --install=yes --pkgname=x264 --pkgversion "1:0.svn`date +%Y%m%d`-0.0ubuntu1" --default

für Ubuntu 9.10 gilt diese Zeile:

sudo checkinstall --fstrans=no --install=yes --pkgname=x264 --pkgversion "1:0.svn`date +%Y%m%d`+git364d7d-0ubuntu2" --default

Update des ffmpeg

cd ~/ffmpeg

make distclean

svn update

./configure --enable-gpl --enable-pthreads --enable-libfaac --enable-libfaad --enable-nonfree --enable-x11grab --enable-libxvid --enable-libmp3lame --enable-libtheora --enable-libx264

make

für Ubuntu 8.10 / 9.04 diese Zeile:

sudo checkinstall --fstrans=no --install=yes --pkgname=ffmpeg --pkgversion "3:0.svn`date +%Y%m%d`-12ubuntu3" --default

für Ubuntu 9.10 gilt diese Zeile:

sudo checkinstall --fstrans=no --install=yes --pkgname=ffmpeg --pkgversion "4:0.5+svn`date +%Y%m%d`-12ubuntu6" --default

Diese Revision wurde am 11. Februar 2010 um 20:51 Uhr von Rerghar erstellt.

Passwort vergessen?