How-To: Install FFmpeg on Debian Etch
NB: This How-To is now almost totally worthless as it is so out of date. Please click here for an updated version explaining how to install FFmpeg on Debian Squeeze.
–
I have to say, that the video manipulation
program FFmpeg, while very powerful, is not very user-friendly when it
comes to installation. While many Linux programs can be happily
installed from either a pre-compiled package, or downloading source and
compiling yourself, this isn’t necessarily the case with FFmpeg. The
ease of FFmpeg installation largely depends on how many different video
codecs and containers you want to be able to input or output. The
greater the number, the exponential increase in installation
difficulty. My main need was for FFmpeg to accept a wide range of input
formats, while outputting H.264 encoded QuickTime (MOV) files. Here’s
how I achieved this on a Debian Etch server……..
I’m going to assume that you are familiar with using the Linux
command prompt, moving between directories, editing text files and have
at least some experience compiling programs.
The first thing I would recommend doing is making an addition to your source repository lists.
pico /etc/apt/sources.list
Add the following line:
deb http://www.debian-multimedia.org stable main
This repository contains some essential libraries for xvid and
x264 (an open source H.264 codec) amongst other things. You’ll need to
install some software from here. The software may well be available
from other repositories too, that are already in your sources.list
file, but add this one to be safe.
Next rebuild your sources:
apt-get update
I would also recommend installing checkinstall. This program can
be used instead of a regular “make install” command and produces a deb
package file that will make re-installation or multiple machine
installs much easier. If checkinstall isn’t already on your machine
download it from:
http://www.asic-linux.com.mx/~izto/checkinstall/download.php
Maybe navigate here with lynx, maybe use wget once you’ve found
the actual file you need, maybe download it with a GUI based web
browser and then copy it to your desired directory. It’s your choice. I
grabbed the latest .deb package. After the download, execute the following as root:
dpkg -i checkinstall_1.6.1-1_i386.deb
Checkinstall should have happily installed on your system. Now it’s time to really get into FFmpeg.
Build the dependencies:
apt-get build-dep ffmpeg
Next we’re going to install a whole lot more useful software
that will allow FFmpeg to output many more than just the minimal file
types.
apt-get install liblame-dev libfaad-dev libfaac-dev
libxvidcore4-dev liba52-0.7.4 liba52-0.7.4-dev libx264-dev
build-essential subversion,
We’ve also ensured that you have the necessary tools installed
to compile from source (build-essential) and obtain files from the Subversion version control repositories.
We’re ready to checkout FFmpeg itself:
svn checkout svn://svn.mplayerhq.hu/ffmpeg/trunk ffmpeg,
At the time of writing the latest revision was 11212. If you’d
feel more comfortable not using the lastest bleeding edge version of FFmpeg, issue the Subversion command as follows:
svn checkout -r 11212 svn://svn.mplayerhq.hu/ffmpeg/trunk ffmpeg
This will ensure that you are also downloading the 11212 revision. Once downloaded, move into the ffmpeg directory (cd ffmpeg) and configure:
./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 –enable-shared
So, what have we done here……
- gpl – allow use of GPL code, the resulting libav* and ffmpeg will be under GPL
- pp – enable GPLed postprocessing support
- libvorbis – enable Vorbis encoding via libvorbis (
http://www.vorbis.com/
) - liba52 – enable GPLed liba52 support (
http://liba52.sourceforge.net/
) - libdc1394 – enable IIDC-1394 grabbing using libdc1394 and libraw1394 (
http://sourceforge.net/projects/libdc1394/
) - libgsm – enable GSM support via libgsm (
http://packages.debian.org/testing/sound/libgsm-tools
) - libmp3lame – enable MP3 encoding via libmp3lame (
http://lame.sourceforge.net/download.php
) - libfaad – enable FAAD support via libfaad (
http://www.audiocoding.com/faad2.html
) - libfaac – enable FAAC support via libfaac (
http://www.audiocoding.com/faac.html
) - pthreads – use pthreads (
http://en.wikipedia.org/wiki/POSIX_Threads
) - libx264 – enable H.264 encoding via x264 (
http://www.videolan.org/developers/x264.html
) - libxvid – enable Xvid encoding via xvidcore, native MPEG-4/Xvid encoder exists (
http://www.xvid.org/
)
The essence of his information, and many more options, can be found by typing ./configure –help first.
(You might also consider including libtheora in your configuration, but I forgot at the time)
We’re now ready to make the installation files so at the command prompt:
make
If something goes wrong, and you need to start again, a useful command to know is:
make distclean
Make sure you do this first and then run the configure command again.
A finally:
checkinstall
You will be asked a few questions, which should be
straightforward enough to answer – yes to creating the documentation,
choose a name, select D for Debian package, lastly select number 3 and
type a version name that means something to you. Mine was
svn11212-etch-20071213. Checkinstall will now create a Debian package
of FFmpeg, bespoke for your system with the configuration options
you’ve selected earlier. Checkinstall WILL NOT install the package, so
don’t forget to do that:
dpkg -i ffmpeg_svn11212-etch-20071213-1_i386.deb
With some small amount of luck, you should now have a working
version of FFmpeg installed on your Debian Etch server. You will be
able to output H.264 encoded files in a variety of containers.
Now the fun part really begins as you spend days tinkering with
commands to output the best possible files. Documentation for using
FFMPEG can be found at:
http://ffmpeg.mplayerhq.hu/ffmpeg-doc.html
Have fun!
(Credit for getting me started in the right direction goes to Paul Battley and his FFmpeg Ubuntu Feisty install how-to)
Nice post! I was really looking for this!
I only have one problem: When I’m trying apt-get build-dep ffmpeg, It returns with the following error:
Unable to find a source package for ffmpegcvs
I’ve googled around a bit, and it says that I need to have the right debian repositories, only they didn’t tell me wich
Here is my /etc/apt/sources.list:
# deb http://ftp.nl.debian.org/debian/ etch main
deb http://ftp.nl.debian.org/debian/ etch main
deb-src http://ftp.nl.debian.org/debian/ etch main
deb http://security.debian.org/ etch/updates main
deb-src http://security.debian.org/ etch/updates main
deb http://www.debian-multimedia.org stable main
As you can see I’ve already added debian-multimedia.org to my apt sources. After that I did apt-get update.
But I still got an error.
Here’s the Error:
# apt-get build-dep ffmpeg
Reading package lists… Done
Building dependency tree… Done
E: Unable to find a source package for ffmpegcvs
Trying
# apt-get source ffmpeg
gave me the same error.
Am I missing something, or do I need another repository? Wich reporistories do you have more? So I can add them to my list
Too easy.. never mind
deb-src http://www.debian-multimedia.org stable main
I’ve tried all kinds of things, but I haven’t yet been able to get the ffmpeg in the debian-multimedia repositories to properly decode AAC files (found in many quicktime mp4 videos). Whenever I try to do something like this:
ffmpeg -i DuckandC1951_256kb.mp4 -ab 48 -ar 22050 -s 320×240 duckandcover.flv
I get this back:
Error while decoding stream #0.2
[aac @ 0xb7e239a8]faac: frame decoding failed: Unexpected channel configuration change
This is not the case on Ubuntu 7.10, despite the fact that the libfaac and libfaad packages are much older.
Have you had any success decoding aac audio with this compilation setup, or is it just me? If you want to see what I mean, you can grab yourself a copy of “Duck and Cover” from http://archive.org.
–enable-pp has apparently been replaced by
–enable-postproc (try doing a ./configure –help | grep “post”)
this worked for me (note I had to remove –enable-libdc1394)
./configure –enable-gpl –enable-postproc –enable-libvorbis –enable-liba52 –enable-libgsm –enable-libmp3lame –enable-libfaad –enable-libfaac –enable-pthreads –enable-libx264 –enable-libxvid –enable-shared –enable-libfaad –enable-libfaadbin –enable-libtheora –enable-zlib –enable-liba52bin
After my last post, I ran into another problem: encoding mpeg-4 (quicktime) where I received this error:
picture size invalid (0×0)
Cannot allocate temp picture, check pix fmt
To fix it, I read this post (http://www.hiteshagrawal.com/ffmpeg/installing-ffmpeg-easily-on-linux)
where it says:
=====
For those who got an error like “error while loading shared libraries: libavdevice.so.52: cannot open shared object file: No such file or directory”, you can do the next:
cd /etc/ld.so.conf.d
add another file: custom-libs.conf
inside, put :
/usr/local/lib
save,
then do ldconfig
======
I had to install this on a new box recently, and my goodness things have changed. This worked for me though:
1) svn checkouts broken on 12-22-08? i had to download from http://ffmpeg.mplayerhq.hu/ffmpeg-checkout-snapshot.tar.bz2
2) http://www.mattiouz.com/blog/2007/07/02/how-to-install-ffmpeg-with-mp3-and-amr-support/
3) ./configure –enable-gpl –enable-postproc –enable-libmp3lame –enable-libfaad –enable-libfaac –enable-pthreads –enable-libxvid –enable-shared –enable-libfaad –enable-libfaadbin –enable-zlib –enable-libamr_nb –enable-libamr_wb –enable-libmp3lame –enable-nonfree
I’m probably missing oggvorbis and xvid, but well, it worked, after installing
After spending about 7 hours on this, I decided to make life easy by installing debian sid, then following the instructions here, as suggested by the #ffmpeg group on freenode:
http://ubuntuforums.org/showthread.php?t=786095
Hi everyone,
I’m a beginner and everything is not working as I hoped it would, I have the following problems:
1) though I added the “deb http://www.debian-multimedia.org stable main” in my sources.list and did “apt-get update” I can’t build the dependencies correctly, I actually get:
“Lecture des listes de paquets… Fait
Construction de l’arbre des dépendances
Lecture des informations d’état… Fait
E: Vous devez insérer quelques adresses « sources » dans votre sources.list”
the last line is the error it says that I need to add an adress in my sources.list, which I’m I already did. Here is what I get when I type cat /etc/apt/sources.list:
# deb http://ftp.fr.debian.org/debian/ sid main
deb http://ftp.fr.debian.org/debian/ sid main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ sid main
deb http://www.debian-multimedia.org stable main
deb http://security.debian.org/ sid/updates main
#deb-src http://security.debian.org/ sid/updates main
#deb http://volatile.debian.org/debian-volatile sid/volatile main
#deb-src http://volatile.debian.org/debian-volatile sid/volatile main
#deb http://download.videolan.org/pub/videolan/debian deb sid main
#deb-src http://download.videolan.org/pub/videolan/debian sid main deb-src sid main http://download.videolan.org/pub/videolan/debiain
2) my svn does not work. Note that I’m behind a proxy and I added my proxy host in /etc/subversion/servers
[global]
# http-proxy-exceptions = *.exception.com, http://www.internal-site.org
http-proxy-host = my proxy’s IP adress
http-proxy-port = 3128
when i try to reach the “svn checkout svn://svn.mplayerhq.hu/ffmpeg/trunk ffmpeg” or the other one, i always get
svn: nom d’hôte inconnu ‘svn.mplayerhq.hu’
which means
unknown host name ‘svn.mplayerhq.hu’
PS: In my company we are using an unstable version of Debian.
Thank you very much for helping me