How to install the latest FFMPEG on a Debian 4 ("Etch") server? This post encouraged me to try it, despite the fact that it needs compiling from source, and that Etch isn't even the current "stable" Debian anymore. PhillC's post helped a lot, but it still didn't work for me exactly as described there. So here is how it eventually did work for me.
# echo "deb http://www.debian-multimedia.org etch main" >>/etc/apt/sources.list
# echo "deb http://www.debian-multimedia.org stable main" >>/etc/apt/sources.list
(I used both, and fiddled with enabling and disabling that repository, so I'm not sure anymore which one ended up being useful).
aptitude update gave me a GPG error, so I had to add the key it mentioned:
# gpg --keyserver hkp://wwwkeys.eu.pgp.net --recv-keys 07DC563D1F41B907 # gpg --armor --export 07DC563D1F41B907 | apt-key add - # aptitude update
The following didn't work, or only worked partially:
# apt-get build-dep ffmpeg
Reading package lists... Done Building dependency tree... Done E: Unable to find a source package for ffmpegcvsI continued anyway with the long install line of various libraries. I had to remove some of these libraries from the suggested install line. Particularly, since I had to recompile libx264 anyway, I should have removed libx264-dev at this point. It is removed in the line below:
# aptitude install liblame-dev libfaad-dev libfaac-dev libxvidcore4-dev liba52-0.7.4 liba52-0.7.4-dev build-essential subversion # cd /usr/src # svn checkout svn://svn.mplayerhq.hu/ffmpeg/trunk ffmpeg
And so I got the current version as of March 17:
Checked out external at revision 28979.
Checked out revision 18021.
And I tried configure:
# cd /usr/src/ffmpeg # ./configure --enable-gpl --enable-pp --enable-libvorbis --enable-liba52 --enable-libdc1394 --enable-libgsm --enable-libmp3lame --enable-libfaad --enable-libfaac --enable-pthreads --enable-libx264 -enable-libxvid
After various errors, and removing options, I ended up with this error:
ERROR: libx264 version must be >= 0.65.
And trying to install that from the debian-multimedia.org repository didn't work either:
# aptitude install libx264-65
The following packages have unmet dependencies: libx264-65: Depends: libc6 (>= 2.7-1) but 2.3.6.ds1-13etch8 is installed and it is kept back.So this thread came to rescue, and I embarked on getting x264 and compiling that from source too:
# aptitude install git git-core
Trying to use Git at this point gives an error, but suggests the solution:
# update-alternatives --config git
There are 2 alternatives which provide `git'. Selection Alternative ----------------------------------------------- *+ 1 /usr/bin/git.transition 2 /usr/bin/git-scm Press enter to keep the default[*], or type selection number: 2
# cd /usr/src/ # git clone git://git.videolan.org/x264.git # cd x264 # ./configure --enable-shared
This gave an error about yasm, which was not the right version. I could have tried to compile that too, as shown on the Ubuntu forum, but impatiently decided to try the suggested disable option instead. So the x264 part which worked:
# ./configure --enable-shared --disable-asm # make # make install # ldconfig
And finally, ffmpeg:
# cd /usr/src/ffmpeg/ # ./configure --enable-gpl --enable-postproc --enable-pthreads --enable-libfaac --enable-libfaad --enable-libmp3lame --enable-libx264 --enable-libxvid # make # make installI also had to remove the old ffmpeg version (
aptitude purge ffmpeg) which I had installed some time before this, and finally did this:
# echo /usr/local/lib >> /etc/ld.so.conf.d/local.conf # ldconfig
Since I had a leftover libx264 installed with aptitude and which was too old, that caused a segmentation fault when I tried to encode with ffmpeg. After searching (
aptitude search x264), I found i had to
aptitude purge libx264-54 libx264-dev . Then, just to be sure, I re-did the
make install incantations for both x264 and ffmpeg.
In the end, ffmpeg is working. I suppose the --disable-asm option on x264 will make encoding slower, so it may be worth compiling yasm, and re-compiling x264 again.
Now that ffmpeg is working, the main problem is trying to understand it's myriad of incomprehensible and cryptically documented options.