Ubuntu Forums ubuntu.com - launchpad.net - ubuntu help  

Go Back   Ubuntu Forums > The Ubuntu Forum Community > Main Support Categories > Multimedia & Video
Register Reset Password Forum Help Forum Council Search Today's Posts Mark Forums Read

Ubuntu 9.10 is out!!!

When downloading Ubuntu 9.10 please consider using bittorrent to get your copy of Ubuntu.

The Ubuntu Developers Summit for Lucid Lynx will be held the week of 16-Nov-2009 till 20-Nov-2009 in Dallas, TX USA. Visit the the Ubuntu wiki for more information about UDS and how to participate remotely.

Multimedia & Video
Have multimedia question? ATI, Nvidia, Sound cards. Just ask here.

 
Thread Tools Display Modes
Old February 16th, 2009   #1
TrinitronX
Gee! These Aren't Roasted!
 
TrinitronX's Avatar
 
Join Date: Dec 2005
Location: Colorado, US
Beans: 139
Ubuntu 8.10 Intrepid Ibex
Post [HOWTO] Build your own ffmpeg .deb package with all codecs enabled

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:
Code:
sudo apt-get install build-essential devscripts ubuntu-dev-tools dh-make module-assistant cdbs debconf-utils fakeroot
Next, follow this tutorial to add medibuntu sources to your sources.list file:
http://www.psychocats.net/ubuntu/sources

Now we can install some build dependencies for ffmpeg:
Code:
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
Now make your own src directory in your home dir:
Code:
cd ~
mkdir src
cd ~/src
Grab the current ubuntu source file package:
Code:
apt-get source ffmpeg
Change directory into ffmpeg-debian-*. Apt will automatically unpack the .tar.gz file and apply the .diff.gz debian patches onto it.
This gives you a directory named something similar to: ffmpeg-debian-0.svn20080206
Yours may not be the same once this guide becomes outdated.
Code:
cd ffmpeg-debian-INSERT_SOURCE_VERSION_HERE_OR_USE_TAB_COMPLETION
Now we are ready to grab some more build depends for ffmpeg:
Code:
sudo apt-get build-dep ffmpeg
For me, these included:
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:
Code:
vim debian/confflags
Uncomment these lines:
Code:
# 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
Usually it is nice to update the debian/changelog file when you have changed a package.
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:
Code:
export DEBEMAIL="Firstname Lastname <youremail@yourdomain.com>"
debchange --nmu "Enabled nonfree config flags, should enable libamr-nb, libamr-wb support"
Now build your binary package without signing using the externalcodecs build option:
Code:
DEB_BUILD_OPTIONS="--enable-externalcodecs" debuild -rfakeroot -uc -us -b
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)

You should be able to install these now using these commands:
Code:
cd ..
sudo dpkg -i libavcodec51*.deb libavdevice52*.deb libpostproc51*.deb libavformat52*.deb libavutil49*.deb libswscale0*.deb
sudo dpkg -i ffmpeg*.deb
Note: if these file glob matches don't work for you, install each by hand, or carefully try:
Code:
sudo dpkg -i *.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!
Code:
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 r11872+debian_3:0.svn20080206-12ubuntu3.1
libavutil   3212800
libavcodec  3355136
libavformat 3409664
libavdevice 3407872
Now you should be able to use ffmpeg to work on .3gp or .amr files like so:
Code:
ffmpeg -i Recording.amr -ar 22050 -acodec libmp3lame Recording.mp3
ENJOY!


For more examples of how to BUILD debian packages in this way, see:
http://www.debian.org/doc/maint-guide/ch-build.en.html
http://www.cyberciti.biz/faq/rebuild...inary-package/
http://www.quietearth.us/articles/20...ge-from-source
http://linuxdevices.com/articles/AT8047723203.html

For more examples of how to USE ffmpeg to do conversions, see:
http://www.hiteshagrawal.com/ffmpeg/...s-using-ffmpeg

Last edited by TrinitronX; February 16th, 2009 at 01:59 AM..
TrinitronX is offline   Reply With Quote
Old April 18th, 2009   #2
abulyomon
First Cup of Ubuntu
 
Join Date: Apr 2009
Beans: 1
Ubuntu 8.10 Intrepid Ibex
Re: [HOWTO] Build your own ffmpeg .deb package with all codecs enabled

Very useful. Thank you.
abulyomon is offline   Reply With Quote
Old August 21st, 2009   #3
geoff123
5 Cups of Ubuntu
 
Join Date: Apr 2006
Location: Cincinnati, Ohio, USA
Beans: 43
Ubuntu Jaunty Jackalope (testing)
Smile Re: [HOWTO] Build your own ffmpeg .deb package with all codecs enabled

Thank You. I've built source many times before, but doing it the "debian" way is very useful. I was just able to set up the latest koala version of ffmpeg and jaunty libxine on my jaunty system using this info as a guide. This Geoff

Last edited by geoff123; August 21st, 2009 at 07:48 PM.. Reason: inaccurate
geoff123 is offline   Reply With Quote

Bookmarks

Tags
3gp, debian packaging, ffmpeg, mp3, xvid

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 06:19 PM.


vBulletin ©2000 - 2009, Jelsoft Enterprises Ltd. Ubuntu Logo, Ubuntu and Canonical © Canonical Ltd. Tango Icons © Tango Desktop Project. lingonberry