Since the license does not enable me to redistribute the compiled debian binary package I have made, I will show you how to do it yourself.
Q: Why would I want this?
A: Ubuntu's stock ffmpeg does not enable support for x264, xvid, 3gp, amr, faac, and even mp3!!
You need to build your own packages to enable support for files through the following libraries: libmp3lame, libxvid, libamrnb, libamrwb, libx264, libfaac
Q: Why can't you just give me a .deb file?
A: Enabling support for libamr-nb & libamr-wb in the source changes the license so I cannot redistribute it. Basically a bunch of legal mumbo jumbo prevents me from just giving you a .deb.
After this, you should be able to use ffmpeg to convert most any type of file
First install build environment packages:
Next, follow this tutorial to add medibuntu sources to your sources.list file:
sudo apt-get install build-essential devscripts ubuntu-dev-tools dh-make module-assistant cdbs debconf-utils fakeroot
Now we can install some build dependencies for ffmpeg:
Now make your own src directory in your home dir:
sudo apt-get install libamrnb-dev libamrwb-dev liba52-dev libdts-dev libgsm1-dev libvorbis-dev libxvidcore4 libxvidcore-dev libdc1394-22-dev libfaac-dev libmp3lame-dev libx264-dev libfaad-dev libtheora-dev libsdl1.2-dev
Grab the current ubuntu source file package:
Change directory into ffmpeg-debian-*. Apt will automatically unpack the .tar.gz file and apply the .diff.gz debian patches onto it.
apt-get source ffmpeg
This gives you a directory named something similar to: ffmpeg-debian-0.svn20080206
Yours may not be the same once this guide becomes outdated.
Now we are ready to grab some more build depends for ffmpeg:
For me, these included:
sudo apt-get build-dep ffmpeg
doxygen libfreetype6-dev libgif-dev libimlib2-dev libjpeg62-dev libltdl7-dev
libpng12-dev libtiff4-dev libtiffxx0c2 libungif4-dev texi2html zlib1g-dev
So now we must uncomment some lines in debian/confflags:
Uncomment these lines:
Usually it is nice to update the debian/changelog file when you have changed a package.
# Uncomment the following lines to allow the use of nonfree code,
# the resulting packages will be unredistributable!
weak-build-deps += libamrnb-dev
confflags += --enable-nonfree --enable-libamr-nb
weak-build-deps += libamrwb-dev
confflags += --enable-nonfree --enable-libamr-wb
We will use the --nmu option because it is a non-maintainer upload (we won't be uploading however).
This should also increment the version number for your soon-to-be-built .deb packages.
Replace your name/email in the variable set here:
Now build your binary package without signing using the externalcodecs build option:
export DEBEMAIL="Firstname Lastname <email@example.com>"
debchange --nmu "Enabled nonfree config flags, should enable libamr-nb, libamr-wb support"
After this completes (hopefully successfully), you will see a bunch of .deb files in the directory above ffmpeg-debian-* (should be ~/src/ if you were following this guide fully)
DEB_BUILD_OPTIONS="--enable-externalcodecs" debuild -rfakeroot -uc -us -b
You should be able to install these now using these commands:
Note: if these file glob matches don't work for you, install each by hand, or carefully try:
sudo dpkg -i libavcodec51*.deb libavdevice52*.deb libpostproc51*.deb libavformat52*.deb libavutil49*.deb libswscale0*.deb
sudo dpkg -i ffmpeg*.deb
That will install ALL files matching *.deb in your ~/src directory! Assuming that the only ones you have are those we just created, then you should be fine. Do note that this could also install some unnecessary development packages too, but it should be ok if you're not worrying about drive space.
You may now check your installed version of ffmpeg to see it's new enabled options!
Now you should be able to use ffmpeg to work on .3gp or .amr files like so:
trinitronx@saturn:~/src$ ffmpeg -version
FFmpeg version r11872+debian_3:0.svn20080206-12ubuntu3.1, Copyright (c) 2000-2008 Fabrice Bellard, et al.
configuration: --enable-gpl --enable-pp --enable-swscaler --enable-x11grab --prefix=/usr--enable-libgsm --enable-libtheora --enable-libvorbis --enable-pthreads --disable-strip --enable-libfaad --enable-libfaadbin --enable-liba52 --enable-liba52bin --enable-libdc1394 --enable-nonfree --enable-libamr-nb --enable-nonfree --enable-libamr-wb --enable-libmp3lame --enable-libfaac --enable-gpl --enable-libxvid --enable-gpl --enable-libx264 --enable-shared--disable-static
libavutil version: 49.6.0
libavcodec version: 51.50.0
libavformat version: 52.7.0
libavdevice version: 52.0.0
built on Feb 15 2009 21:28:22, gcc: 4.3.2
ffmpeg -i Recording.amr -ar 22050 -acodec libmp3lame Recording.mp3
For more examples of how to BUILD debian packages in this way, see:
For more examples of how to USE ffmpeg to do conversions, see: