= Compile FFmpeg on Ubuntu, Debian, or Mint = [[PageOutline(2, Contents)]] This guide for supported releases of '''Ubuntu''', '''Debian''', and '''Linux Mint''' will provide a local install of the latest FFmpeg tools and libraries including several external encoding and decoding libraries (codecs). This will not provide a system installation and therefore will not interfere with anything such as repository packages. Recent [http://ffmpeg.org/download.html#LinuxBuilds static builds] are also available for lazy people or those who are unable to compile. ---- == Get the Dependencies == Copy and paste the whole code box for each step. {{{ sudo apt-get update sudo apt-get -y install autoconf automake build-essential git libass-dev libgpac-dev \ libsdl1.2-dev libtheora-dev libtool libva-dev libvdpau-dev libvorbis-dev libx11-dev \ libxext-dev libxfixes-dev pkg-config texi2html zlib1g-dev mkdir ~/ffmpeg_sources }}} * Server users can omit the ffplay and x11 dependencies: `libsdl1.2-dev libva-dev libvdpau-dev libx11-dev libxext-dev libxfixes-dev`. * Ubuntu 10.04 Lucid users will need to install the `git-core` package instead of the `git` package. Lucid lacks the packages `libva-dev` and `libvdpau-dev`. These can be ignored. ---- == Compilation & Installation == One advantage to compiling is that you can build ffmpeg to your liking. If you do not require certain encoders you may skip the relevant section and then remove the appropriate `./configure` option in FFmpeg. For example, if libopus is not needed, then skip that section and then remove `--enable-libopus` from the [#ffmpeg Install FFmpeg] section. === Yasm === Yasm is an assembler used by x264 and FFmpeg. Ubuntu 13.04 and Mint 15 users can alternatively install the `yasm` package from the repository instead of compiling. {{{ cd ~/ffmpeg_sources wget http://www.tortall.net/projects/yasm/releases/yasm-1.2.0.tar.gz tar xzvf yasm-1.2.0.tar.gz cd yasm-1.2.0 ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" make make install make distclean . ~/.profile }}} === x264 === H.264 video encoder. See the [[x264EncodingGuide|x264 Encoding Guide]] for more information and examples. {{{ cd ~/ffmpeg_sources git clone --depth 1 git://git.videolan.org/x264.git cd x264 ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --enable-static make make install make distclean }}} '''Note:''' You can download the nightly [ftp://ftp.videolan.org/pub/x264/snapshots/last_x264.tar.bz2 x264 source snapshot] as an alternative to using `git`. === fdk-aac === AAC audio encoder. See the [[AACEncodingGuide|AAC Encoding Guide]] for more information and examples. {{{ cd ~/ffmpeg_sources git clone --depth 1 git://github.com/mstorsjo/fdk-aac.git cd fdk-aac autoreconf -fiv ./configure --prefix="$HOME/ffmpeg_build" --disable-shared make make install make distclean }}} '''Note:''' You can download a [https://github.com/mstorsjo/fdk-aac/zipball/master fdk-aac source snapshot] as an alternative to using `git`. === libmp3lame === MP3 audio encoder. Most users can install the repository package: {{{ sudo apt-get install libmp3lame-dev }}} Ubuntu 10.04 and Debian Squeeze users must compile: {{{ sudo apt-get install nasm cd ~/ffmpeg_sources wget http://downloads.sourceforge.net/project/lame/lame/3.99/lame-3.99.5.tar.gz tar xzvf lame-3.99.5.tar.gz cd lame-3.99.5 ./configure --prefix="$HOME/ffmpeg_build" --enable-nasm --disable-shared make make install make distclean }}} === libopus === Opus audio decoder and encoder. Ubuntu 13.04 and Mint 15 users can alternatively install the `libopus-dev` package from the repository instead of compiling. {{{ cd ~/ffmpeg_sources wget http://downloads.xiph.org/releases/opus/opus-1.0.2.tar.gz tar xzvf opus-1.0.2.tar.gz cd opus-1.0.2 ./configure --prefix="$HOME/ffmpeg_build" --disable-shared make make install make distclean }}} === libvpx === VP8/VP9 video encoder and decoder. See the [[vpxEncodingGuide|vpx (WebM) Encoding Guide]] for more information and examples. Ubuntu 13.04 and Mint 15 users can alternatively install the `libvpx-dev` package from the repository instead of compiling. {{{ cd ~/ffmpeg_sources git clone --depth 1 http://git.chromium.org/webm/libvpx.git cd libvpx ./configure --prefix="$HOME/ffmpeg_build" --disable-examples make make install make clean }}} '''Note:''' You can download a [http://code.google.com/p/webm/downloads/list libvpx source snapshot] as an alternative to using `git`. === ffmpeg === '''Note:''' Server users should remove `--enable-x11grab` from the following command: {{{ cd ~/ffmpeg_sources git clone --depth 1 git://source.ffmpeg.org/ffmpeg cd ffmpeg ./configure --prefix="$HOME/ffmpeg_build" --extra-cflags="-I$HOME/ffmpeg_build/include" \ --extra-ldflags="-L$HOME/ffmpeg_build/lib" --bindir="$HOME/bin" --extra-libs="-ldl" --enable-gpl \ --enable-libass --enable-libfdk-aac --enable-libmp3lame --enable-libopus --enable-libtheora \ --enable-libvorbis --enable-libvpx --enable-libx264 --enable-nonfree --enable-x11grab make make install make distclean hash -r }}} '''Note:''' You can download the nightly [http://ffmpeg.org/releases/ffmpeg-snapshot.tar.bz2 FFmpeg source snapshot] as an alternative to using `git`. ---- == Finish == Installation is now complete and ffmpeg is now ready for use. Check to see if you're using your new ffmpeg: {{{ $ ffmpeg 2>&1 | head -n1 ffmpeg version git-2013-05-18-5918b7a Copyright (c) 2000-2013 the FFmpeg developers }}} If you do not see `FFmpeg developers` in your output then something went wrong and you're probably using the [http://stackoverflow.com/a/9477756/1109017 fake "ffmpeg"] from the repository. You can keep the `ffmpeg_sources` directory if you plan on updating later. See [#update Updating FFmpeg] below for more details followed by instructions for [#RevertingChangesMadebyThisGuide reverting all changes] made by this guide. ---- == Updating FFmpeg ==#update Development of FFmpeg is active and an occasional update can give you new features and bug fixes. First, remove (or move) the old files and then update the dependencies: {{{ rm -rf ~/ffmpeg_build ~/bin/{ffmpeg,ffprobe,ffserver,vsyasm,x264,yasm,ytasm} sudo apt-get update sudo apt-get -y install autoconf automake build-essential git libass-dev libgpac-dev \ libsdl1.2-dev libtheora-dev libtool libva-dev libvdpau-dev libvorbis-dev libx11-dev \ libxext-dev libxfixes-dev pkg-config texi2html zlib1g-dev }}} Server users can omit: `libsdl1.2-dev libva-dev libvdpau-dev libx11-dev libxext-dev libxfixes-dev`. === x264 === {{{ cd ~/ffmpeg_sources/x264 make distclean git pull }}} Now run `./configure`, `make`, and `make install` as shown in the [#x264 Install x264] section. === fdk-aac === {{{ cd ~/ffmpeg_sources/fdk-aac make distclean git pull }}} Now run `./configure`, `make`, and `make install` as shown in the [#fdk-aac Install fdk-aac] section. === libvpx === {{{ cd ~/ffmpeg_sources/libvpx make clean git pull }}} Now run `./configure`, `make`, and `make install` as shown in the [#libvpx Install libvpx] section. === ffmpeg === {{{ cd ~/ffmpeg_sources/ffmpeg make distclean git pull }}} Now run `./configure`, `make`, and `make install` as shown in the [#ffmpeg Install FFmpeg] section. ---- == Reverting Changes Made by This Guide == To remove ffmpeg, x264, and dependencies installed for this guide: {{{ rm -rf ~/ffmpeg_build ~/ffmpeg_sources ~/bin/{ffmpeg,ffprobe,ffserver,vsyasm,x264,yasm,ytasm} sudo apt-get autoremove autoconf automake build-essential git libass-dev libgpac-dev \ libmp3lame-dev libopus-dev libsdl1.2-dev libtheora-dev libtool libva-dev libvdpau-dev \ libvorbis-dev libvpx-dev libx11-dev libxext-dev libxfixes-dev texi2html zlib1g-dev hash -r }}} ---- == If You Need Help == Feel free to ask questions at the #ffmpeg IRC channel or the [http://ffmpeg.org/contact.html ffmpeg-user] mailing list. ---- == Also See == * [[x264EncodingGuide|x264 Encoding Guide]] * [[AACEncodingGuide|AAC Encoding Guide]] === External Links === * [http://ubuntuforums.org/showthread.php?t=2141949 Howto: Compile the development version of VLC under the latest Ubuntu release] * [http://ubuntuforums.org/showthread.php?t=2149564 Howto: Build the svn MPlayer under the latest release version of Ubuntu] {{{#!comment * Make man pages actually work * Make datadir location (the presets, etc) less useless FAQ Section How do I perform a "system" install of ffmpeg? What version of Ubuntu am I using? }}}