FFmpeg kompilieren (Linux)

Geschrieben von PHPFlüsterer am 21. November 2009.

Ein FFmpeg-update wird benötigt und wieder mal keiner da, der FFmpeg aktualisieren (kompilieren)  kann – außer meiner Wenigkeit. Immer wieder kommt dieses Thema bei uns auf: FFmpeg und FFmpeg-PHP müssen aktualisiert werden – sei es um bekanntgewordene Bugs zu beseitigen, die Performanz zu erhöhen oder aber neue Codecs zu unterstützen.

Jedes Mal wenn dies der Fall ist und man ein “altes” HowTo auspackt, dass man erst vor 6 Monaten geschrieben hat, merkt man, daß sich die  soeben aus dem SVN ausgecheckte Version von FFmpeg nicht mit den vorhandenen Versionen der benötigten Bibliotheken kompilieren lassen möchte.

Ich möchte euch mit den folgenden Informationen die lange Suche nach der richtigen Kombination von Bibliotheken verschonen. Verwendet wurden, zum Zeitpunkt der Erstellung dieses HowTo’s aktuelle und auf Kompatibilität getestete Versionen der jeweiligen Bibliotheken.

Da ich CentOS 5.3 einsetze, sind ggf. einige Schritte für andere nicht ganz so interessant, wer aber FFmpeg selber kompilieren möchte, der wird auch die passenden “Befehl-Übersetzungen” für sein Linuxderivat wissen.


Schritt 1
RPM-Paket hinzufügen und yum update durchführen

1
2
rpm -Uhv http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.3.6-1.el5.rf.i386.rpm
yum -y update

Schritt 2
Die folgenden Pakete herunterladen (hier mit wget)

Achtung: Vielleicht findest du neuere Versionen der Libs. Wenn sich FFmpeg mit diesen ebenfalls einwandfrei kompilieren lässt, dann schreib doch netterweise einen Kommentar. Dann kann ich die Aktualisierung direkt vornehmen.

1
2
mkdir /tmp/ffmpeg-latest
cd /tmp/ffmpeg-latest

MPLAYERHQ essential-codec-pack:

1
wget http://www3.mplayerhq.hu/MPlayer/releases/codecs/essential-20071007.tar.bz2

FLVTOOL2 1.0.6 final

1
wget http://rubyforge.org/frs/download.php/17497/flvtool2-1.0.6.tgz

LIBOGG 1.1.4

1
wget http://downloads.xiph.org/releases/ogg/libogg-1.1.4.tar.gz

LIBVORBIS 1.2.3

1
wget http://downloads.xiph.org/releases/vorbis/libvorbis-1.2.3.tar.gz

libA52 (latest 0.7.4)

1
wget http://liba52.sourceforge.net/files/a52dec-0.7.4.tar.gz

FAAD2 2-2.7

1
wget http://downloads.sourceforge.net/project/faac/faad2-src/faad2-2.7/faad2-2.7.tar.gz

FAAC2 1.28

1
wget http://downloads.sourceforge.net/project/faac/faac-src/faac-1.28/faac-1.28.tar.gz

LAME 3.98.2

1
wget http://downloads.sourceforge.net/project/lame/lame/3.98.2/lame-398-2.tar.gz

YASM 0.8.0

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

x264 20090803-2245

1
wget ftp://ftp.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-20090803-2245.tar.bz2

XVID 1.2.2

1
wget http://downloads.xvid.org/downloads/xvidcore-1.2.2.tar.gz

libraw1394

1
wget https://launchpad.net/ubuntu/hardy/+source/libraw1394/1.3.0-2/+files/libraw1394_1.3.0.orig.tar.gz

ffmpeg-php 0.6.0

1
wget http://downloads.sourceforge.net/project/ffmpeg-php/ffmpeg-php/0.6.0/ffmpeg-php-0.6.0.tbz2


Schritt 3
Installieren von subversion, ruby, ncurses, git, vlc, mplayer, libtheora, libdc1394

Installiere die folgenden Tools:

1
yum install subversion

- (benötigt für ffmpeg)

1
yum install ruby

- (benötigt für flvtool2)

1
2
yum install ncurses-devel
yum install git

- (git wird benötigt für x264 vlc)

1
2
3
yum install libdc1394 libdc1394-devel
yum install libtheora libtheora-devel
yum install vlc mplayer

Schritt 4
Extrahieren der Quelldateien

Extrahiere jetzt alle heruntergeladenen Pakete mit den folgenden Befehlen:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
bunzip2 essential-20071007.tar.bz2; tar xvf essential-20071007.tar
tar zxvf flvtool2-1.0.6.tgz
tar zxvf libogg-1.1.4.tar.gz
tar zxvf libvorbis-1.2.3.tar.gz
tar -zxf a52dec-0.7.4.tar.gz
tar zxf faad2-2.7.tar.gz
tar zxfv faac-1.28.tar.gz
tar zxfv lame-398-2.tar.gz
tar zfvx yasm-0.8.0.tar.gz
bunzip2 < x264-snapshot-20090803-2245.tar.bz2 | tar -xf -
tar zxfv xvidcore-1.2.2.tar.gz
mv /tmp/ffmpeg-latest/libraw1394_1.3.0.orig.tar.gz /
/tmp/ffmpeg-latest/libraw1394_1.3.0.tar.gz; tar zxfv libraw1394-1.3.0.tar.gz
bunzip2 ffmpeg-php-0.6.0.tbz2; tar xvf ffmpeg-php-0.6.0.tar

Schritt 5
Kopieren der Codecs

Erstelle (wenn nicht schon vorhanden) das codecs-Verzeichnis und verschiebe die Codecs dorthin.

1
2
3
mkdir /usr/local/lib/codecs/
mv essential-20071007/* /usr/local/lib/codecs/
chmod -R 755 /usr/local/lib/codecs/

Schritt 6
Kompilieren + installieren

Jetzt beginnen wir die damit die Libs zu kompilieren und zu installieren:

Lame

1
2
3
4
5
6
cd lame-3.98b8
export LD_LIBRARY_PATH=/usr/local/lib
./configure
make
make install
cd ..

libOGG

1
2
3
4
5
cd libogg-1.1.3
./configure
make
make install
cd ..

libVorbis

1
2
3
4
5
cd libvorbis-1.1.2
./configure
make
make install
cd ..

flvtool2

1
2
3
4
5
cd flvtool2_1.0.6
ruby setup.rb config
ruby setup.rb setup
ruby setup.rb install
cd ..

a52

1
2
3
4
5
cd a52dec-0.7.4
./configure --enable-shared=PKGS
make
make install
cd ..

FAAD2

1
2
3
4
5
6
cd faad2
autoreconf -vif
./configure --disable-drm --disable-mpeg4ip
make
make install
cd ..

FAAC

1
2
3
4
5
6
cd faac
./bootstrap
./configure --disable-mp4v2
make
make install
cd ..

yasm

1
2
3
4
5
cd yasm-0.8.0
./configure
make
make install
cd ..

x264

1
2
3
4
5
cd x264-snapshot-20090803-2245
./configure --enable-shared
make
make install
cd ..

Xvid

1
2
3
4
5
cd xvidcore-1.2.2/build/generic
./configure
make
make install
cd ../../..

ffmpeg

1
2
3
4
5
6
7
8
9
10
11
12
13
svn checkout svn://svn.mplayerhq.hu/ffmpeg/trunk ffmpeg
cd ffmpeg
./configure /
--enable-gpl --enable-postproc --enable-nonfree --enable-postproc /
--enable-libfaad --enable-avfilter --enable-pthreads --enable-libxvid /
--enable-libx264 --enable-libmp3lame --enable-liba52 --enable-libfaac /
--disable-ffserver --disable-ffplay --enable-libtheora --enable-libvorbis /
--enable-shared

make
make install
export LD_LIBRARY_PATH=/usr/local/lib
cd ..

Schritt 7
Bugfix und kompilieren von ffmpeg-php

1
2
cd ffmpeg-php-0.6.0
phpize

BUGFIX für ffmpeg-php
In Version 0.6.0 von ffmpeg-php muss die Quelldatei ffmpeg_frame.c leicht angepasst werden, damit diese kompiliert werden kann. Dafür müssen nach dem öffnen der Datei alle Vorkommen von PIX_FMT_RGBA32 with PIX_FMT_RGB32 ersetzt werden. Mit Vi(m) funktioniert dies wie folgt:

1
2
3
vi ffmpeg_frame.c
:%s/PIX_FMT_RGBA32/PIX_FMT_RGB32
:w :q!

Jetzt muss ffmpeg-php nur noch kompiliert werden …

1
2
3
./configure
make
make install

… und fertig ist die neue FFmpeg-Version. Viel Erfolg beim kompilieren…

 

Danke

Sag "Danke" in dem du diesen Artikel flatterst und mich so bei meiner zukünftigen Arbeit unterstützt. Ich danke dir!
 

Teilen

Teile diesen Artikel und somit dein Wissen mit deinen Freunden, Kollegen und anderen ...
 

Kommentare

Zu "FFmpeg kompilieren (Linux)" wurde noch kein Kommentar abgegeben. Mache doch den ersten Schritt und hinterlasse Lob, Kritik, Feedback oder auch nur einen Kommentar ....
 

Verfasse einen Kommentar


Fülle dazu einfach die als "Pflichtfeld" gekennzeichneten Felder aus, schreibe deinen Kommentar und sende alles zusammen ab. Nach Freischaltung durch mich, wird dein Kommentar für alle sichtbar.

Kleiner Tip: Die Pflichtfelder erkennt man auch an einem orange-farbenen Stern!
Pflichtfeld
Pflichtfeld    (wird NICHT veröffentlicht)
Pflichtfeld
Ich möchte eine E-Mail-Benachrichtigung bei Antworten und neuen Kommentaren erhalten.
Möchtest du lediglich bei neuen Kommentaren benachrichtigt werden ohne einen Kommentar zu verfassen? Dann klicke hier.  Um deine Benachrichtigungen zu verwalten hier.
*

 

Trackbacks

Es gibt keine Trackbacks zu diesem Artikel.

 

Verwandte Artikel


Scheinbar hast du einen Werbeblocker aktiviert. Die Werbung ist neben Flattr allerdings die einzige Möglichkeit die Betriebskosten (z. B. Hosting, Domain ...) aufzufangen. Es wäre nett wenn du den Blocker auf meinen Seiten deaktivierst.