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.
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
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.
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
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.
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.
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.
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.
Der Download von FFmpeg mittels SVN geschieht im Terminal durch Ausführung des Befehls
svn checkout svn://svn.mplayerhq.hu/ffmpeg/trunk ffmpeg
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.
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
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 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.
2004 – 2010 ubuntuusers.de • Einige Rechte vorbehalten