ffmpeg---CompilationGuide

来源:互联网 发布:iphone如何投屏到mac 编辑:程序博客网 时间:2024/06/08 14:18

https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu


Compile FFmpeg on Ubuntu, Debian, or Mint

Contents

  1. Get the Dependencies
  2. Compilation & Installation
  3. Conclusion
  4. Updating FFmpeg
  5. Reverting Changes Made by This Guide
  6. If You Need Help
  7. Also See

This guide for supported releases of UbuntuDebian, 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 interfere with repository packages.

You may also refer to the Generic FFmpeg Compilation Guide for additional information.

Recent static builds are also available for lazy people or those who are unable to compile. The static builds do not support non-free encoders.

Note: FFmpeg has returned in Ubuntu 15.04 Vivid Vervet. You may still wish to compile if you experience a bug or want to customize your build, and it will not interfere with the ffmpeg package in the repository.


Get the Dependencies

Copy and paste the whole code box for each step. First install the dependencies:

sudo apt-get updatesudo apt-get -y --force-yes install autoconf automake build-essential libass-dev libfreetype6-dev \  libsdl1.2-dev libtheora-dev libtool libva-dev libvdpau-dev libvorbis-dev libxcb1-dev libxcb-shm0-dev \  libxcb-xfixes0-dev pkg-config texinfo zlib1g-dev

Note: Server users can omit the ffplay and x11grab dependencies: libsdl1.2-dev libva-dev libvdpau-dev libxcb1-dev libxcb-shm0-dev libxcb-xfixes0-dev.

Now make a directory for the source files that will be downloaded later in this guide:

mkdir ~/ffmpeg_sources

Compilation & Installation

You can compile 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-libopusfrom the Install FFmpeg section.

This guide is designed to be non-intrusive and will create several directories in your home directory:

  • ffmpeg_sources – Where the source files will be downloaded.
  • ffmpeg_build – Where the files will be built and libraries installed.
  • bin – Where the resulting binaries (ffmpegffplayffserverx264, and yasm) will be installed.

You can easily undo any of this as shown in Reverting Changes Made by This Guide.

Yasm

An assembler for x86 optimizations used by x264 and FFmpeg. Highly recommended or your resulting build may be very slow.

If your repository offers a yasm package ≥ 1.2.0 then you can install that instead of compiling:

sudo apt-get install yasm

Otherwise you can compile:

cd ~/ffmpeg_sourceswget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gztar xzvf yasm-1.3.0.tar.gzcd yasm-1.3.0./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin"makemake installmake distclean

libx264

H.264 video encoder. See the H.264 Encoding Guide for more information and usage examples.

Requires ffmpeg to be configured with --enable-gpl --enable-libx264.

If your repository offers a libx264-dev package ≥ 0.118 then you can install that instead of compiling:

sudo apt-get install libx264-dev

Otherwise you can compile:

cd ~/ffmpeg_sourceswget http://download.videolan.org/pub/x264/snapshots/last_x264.tar.bz2tar xjvf last_x264.tar.bz2cd x264-snapshot*PATH="$HOME/bin:$PATH" ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --enable-staticPATH="$HOME/bin:$PATH" makemake installmake distclean

libx265

H.265/HEVC video encoder. See the H.265 Encoding Guide for more information and usage examples.

sudo apt-get install cmake mercurialcd ~/ffmpeg_sourceshg clone https://bitbucket.org/multicoreware/x265cd ~/ffmpeg_sources/x265/build/linuxPATH="$HOME/bin:$PATH" cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$HOME/ffmpeg_build" -DENABLE_SHARED:bool=off ../../sourcemakemake installmake distclean

libfdk-aac

AAC audio encoder. See the AAC Audio Encoding Guide for more information and usage examples.

Requires ffmpeg to be configured with --enable-libfdk-aac (and --enable-nonfree if you also included --enable-gpl).

cd ~/ffmpeg_sourceswget -O fdk-aac.tar.gz https://github.com/mstorsjo/fdk-aac/tarball/mastertar xzvf fdk-aac.tar.gzcd mstorsjo-fdk-aac*autoreconf -fiv./configure --prefix="$HOME/ffmpeg_build" --disable-sharedmakemake installmake distclean

libmp3lame

MP3 audio encoder.

Requires ffmpeg to be configured with --enable-libmp3lame.

If your repository offers a libmp3lame-dev package ≥ 3.98.3 then you can install that instead of compiling:

sudo apt-get install libmp3lame-dev

Otherwise you can compile:

sudo apt-get install nasmcd ~/ffmpeg_sourceswget http://downloads.sourceforge.net/project/lame/lame/3.99/lame-3.99.5.tar.gztar xzvf lame-3.99.5.tar.gzcd lame-3.99.5./configure --prefix="$HOME/ffmpeg_build" --enable-nasm --disable-sharedmakemake installmake distclean

libopus

Opus audio decoder and encoder.

Requires ffmpeg to be configured with --enable-libopus.

If your repository offers a libopus-dev package ≥ 1.1 then you can install that instead of compiling:

sudo apt-get install libopus-dev

Otherwise you can compile:

cd ~/ffmpeg_sourceswget http://downloads.xiph.org/releases/opus/opus-1.1.tar.gztar xzvf opus-1.1.tar.gzcd opus-1.1./configure --prefix="$HOME/ffmpeg_build" --disable-sharedmakemake installmake clean

libvpx

VP8/VP9 video encoder and decoder. See the VP8 Video Encoding Guide for more information and usage examples.

Requires ffmpeg to be configured with --enable-libvpx.

cd ~/ffmpeg_sourceswget http://storage.googleapis.com/downloads.webmproject.org/releases/webm/libvpx-1.4.0.tar.bz2tar xjvf libvpx-1.4.0.tar.bz2cd libvpx-1.4.0PATH="$HOME/bin:$PATH" ./configure --prefix="$HOME/ffmpeg_build" --disable-examples --disable-unit-testsPATH="$HOME/bin:$PATH" makemake installmake clean

ffmpeg

cd ~/ffmpeg_sourceswget http://ffmpeg.org/releases/ffmpeg-snapshot.tar.bz2tar xjvf ffmpeg-snapshot.tar.bz2cd ffmpegPATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure \  --prefix="$HOME/ffmpeg_build" \  --pkg-config-flags="--static" \  --extra-cflags="-I$HOME/ffmpeg_build/include" \  --extra-ldflags="-L$HOME/ffmpeg_build/lib" \  --bindir="$HOME/bin" \  --enable-gpl \  --enable-libass \  --enable-libfdk-aac \  --enable-libfreetype \  --enable-libmp3lame \  --enable-libopus \  --enable-libtheora \  --enable-libvorbis \  --enable-libvpx \  --enable-libx264 \  --enable-libx265 \  --enable-nonfreePATH="$HOME/bin:$PATH" makemake installmake distcleanhash -r

Conclusion

Installation is now complete and ffmpeg is now ready for use. Your newly compiled FFmpeg programs are in ~/bin.

Usage

There are several methods to use your new ffmpeg.

  • Navigate to ~/bin and execute the binary: cd ~/bin && ./ffmpeg -i ~/input.mp4 ~/videos/output.mkv (notice the ./)
  • Or use the full path to the binary: /home/yourusername/bin/ffmpeg -i ../input.mp4 ../videos/output.mkv

If you want the ffmpeg command to just work from anywhere:

  • Log in and log out
  • Or run source ~/.profile

Note: ~/bin is included in the standard Ubuntu $PATH by default (via the ~/.profile file), but only when the ~/bin directory actually exists. This is why you must log out then log in or run source ~/.profile if you just created ~/bin. See Ubuntu Wiki: Persistent Environment Variables for more info.

Documentation

If you want to run man ffmpeg to have local access to the documentation:

echo "MANPATH_MAP $HOME/bin $HOME/ffmpeg_build/share/man" >> ~/.manpath

You may then have to log out and then log in for man ffmpeg to work.

HTML formatted documentation is available in ~/ffmpeg_build/share/doc/ffmpeg.

You can also refer to the online FFmpeg documentation, but remember that it is regenerated daily and is meant to be used with the most current ffmpeg (meaning an old build may not be compatible with the online docs).

Additional Notes

  • See the H.264 Encoding Guide for some encoding examples.
  • If you do not see FFmpeg developers in your ffmpeg console output then something went wrong and you're probably using the fake "ffmpeg" from the repository (the counterfeit "ffmpeg" was eventually removed and the real ffmpeg returned in 15.04).
  • You can delete the ffmpeg_sources directory if you want to.

Updating FFmpeg

Development of FFmpeg is active and an occasional update can give you new features and bug fixes. First you need to delete (or move) the old files:

rm -rf ~/ffmpeg_build ~/ffmpeg_sources ~/bin/{ffmpeg,ffprobe,ffplay,ffserver,vsyasm,x264,x265,yasm,ytasm}

Now just follow the guide from the beginning.


Reverting Changes Made by This Guide

rm -rf ~/ffmpeg_build ~/ffmpeg_sources ~/bin/{ffmpeg,ffprobe,ffplay,ffserver,vsyasm,x264,x265,yasm,ytasm}sudo apt-get autoremove autoconf automake build-essential cmake libass-dev libfreetype6-dev \  libmp3lame-dev libopus-dev libsdl1.2-dev libtheora-dev libtool libva-dev libvdpau-dev \  libvorbis-dev libvpx-dev libx264-dev libxcb1-dev libxcb-shm0-dev ibxcb-xfixes0-dev mercurial texinfo zlib1g-devsed -i '/ffmpeg_build/c\' ~/.manpathhash -r

If You Need Help

Feel free to ask questions at the #ffmpeg IRC channel or the ffmpeg-user mailing list.


Also See

  • Generic FFmpeg Compilation Guide
  • H.264 Video Encoding Guide
  • AAC Audio Encoding Guide

0 0