Difference between revisions of "Ffmpeg: compile"

From OnnoWiki
Jump to navigation Jump to search
(New page: Compile FFmpeg on Ubuntu, Debian, or Mint Contents Get the Dependencies Compilation & Installation Conclusion Updating FFmpeg Reverting Changes Made by This Guide ...)
 
Line 16: Line 16:
  
 
Recent ​static builds are also available for lazy people or those who are unable to compile.
 
Recent ​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.
+
==Instalasi aplikasi pendukung==
  
sudo apt-get update
+
sudo apt-get update
sudo apt-get -y install autoconf automake build-essential libass-dev libfreetype6-dev libgpac-dev \
+
sudo apt-get -y install autoconf automake build-essential libass-dev libfreetype6-dev \
  libsdl1.2-dev libtheora-dev libtool libva-dev libvdpau-dev libvorbis-dev libx11-dev \
+
libgpac-dev libsdl1.2-dev libtheora-dev libtool libva-dev libvdpau-dev \
  libxext-dev libxfixes-dev pkg-config texi2html zlib1g-dev
+
libvorbis-dev libx11-dev libxext-dev libxfixes-dev pkg-config texi2html zlib1g-dev
mkdir ~/ffmpeg_sources
+
 
 +
mkdir ~/ffmpeg_sources
  
 
Notes:
 
Notes:
Line 48: Line 48:
 
If your repository offers a yasm package ≥ 1.3.0 then you can install that instead of compiling:
 
If your repository offers a yasm package ≥ 1.3.0 then you can install that instead of compiling:
  
sudo apt-get install yasm
+
sudo apt-get install yasm
  
 
Otherwise you can compile:
 
Otherwise you can compile:
  
cd ~/ffmpeg_sources
+
cd ~/ffmpeg_sources
wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz
+
wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz
tar xzvf yasm-1.3.0.tar.gz
+
tar xzvf yasm-1.3.0.tar.gz
cd yasm-1.3.0
+
cd yasm-1.3.0
./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin"
+
./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin"
make
+
make
make install
+
make install
make distclean
+
make distclean
  
 
libx264
 
libx264
Line 69: Line 69:
 
If your repository offers a libx264-dev package ≥ 0.118 then you can install that instead of compiling:
 
If your repository offers a libx264-dev package ≥ 0.118 then you can install that instead of compiling:
  
sudo apt-get install libx264-dev
+
sudo apt-get install libx264-dev
  
 
Otherwise you can compile:
 
Otherwise you can compile:
  
cd ~/ffmpeg_sources
+
cd ~/ffmpeg_sources
wget http://download.videolan.org/pub/x264/snapshots/last_x264.tar.bz2
+
wget http://download.videolan.org/pub/x264/snapshots/last_x264.tar.bz2
tar xjvf last_x264.tar.bz2
+
tar xjvf last_x264.tar.bz2
cd x264-snapshot*
+
cd x264-snapshot*
PATH="$HOME/bin:$PATH" ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --enable-static
+
PATH="$HOME/bin:$PATH" ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --enable-static
PATH="$HOME/bin:$PATH" make
+
PATH="$HOME/bin:$PATH" make
make install
+
make install
make distclean
+
make distclean
  
 
libfdk-aac
 
libfdk-aac
Line 88: Line 88:
 
Requires ffmpeg to be configured with --enable-libfdk_aac (and --enable-nonfree if you also included --enable-gpl).
 
Requires ffmpeg to be configured with --enable-libfdk_aac (and --enable-nonfree if you also included --enable-gpl).
  
sudo apt-get install unzip
+
sudo apt-get install unzip
cd ~/ffmpeg_sources
+
cd ~/ffmpeg_sources
wget -O fdk-aac.zip https://github.com/mstorsjo/fdk-aac/zipball/master
+
wget -O fdk-aac.zip https://github.com/mstorsjo/fdk-aac/zipball/master
unzip fdk-aac.zip
+
unzip fdk-aac.zip
cd mstorsjo-fdk-aac*
+
cd mstorsjo-fdk-aac*
autoreconf -fiv
+
autoreconf -fiv
./configure --prefix="$HOME/ffmpeg_build" --disable-shared
+
./configure --prefix="$HOME/ffmpeg_build" --disable-shared
make
+
make
make install
+
make install
make distclean
+
make distclean
  
 
libmp3lame
 
libmp3lame
Line 107: Line 107:
 
If your repository offers a libmp3lame-dev package ≥ 3.98.3 then you can install that instead of compiling:
 
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
+
sudo apt-get install libmp3lame-dev
  
 
Otherwise you can compile:
 
Otherwise you can compile:
  
sudo apt-get install nasm
+
sudo apt-get install nasm
cd ~/ffmpeg_sources
+
cd ~/ffmpeg_sources
wget http://downloads.sourceforge.net/project/lame/lame/3.99/lame-3.99.5.tar.gz
+
wget http://downloads.sourceforge.net/project/lame/lame/3.99/lame-3.99.5.tar.gz
tar xzvf lame-3.99.5.tar.gz
+
tar xzvf lame-3.99.5.tar.gz
cd lame-3.99.5
+
cd lame-3.99.5
./configure --prefix="$HOME/ffmpeg_build" --enable-nasm --disable-shared
+
./configure --prefix="$HOME/ffmpeg_build" --enable-nasm --disable-shared
make
+
make
make install
+
make install
make distclean
+
make distclean
  
 
libopus
 
libopus
Line 129: Line 129:
 
If your repository offers a libopus-dev package ≥ 1.1 then you can install that instead of compiling:
 
If your repository offers a libopus-dev package ≥ 1.1 then you can install that instead of compiling:
  
sudo apt-get install libopus-dev
+
sudo apt-get install libopus-dev
  
 
Otherwise you can compile:
 
Otherwise you can compile:
  
cd ~/ffmpeg_sources
+
cd ~/ffmpeg_sources
wget http://downloads.xiph.org/releases/opus/opus-1.1.tar.gz
+
wget http://downloads.xiph.org/releases/opus/opus-1.1.tar.gz
tar xzvf opus-1.1.tar.gz
+
tar xzvf opus-1.1.tar.gz
cd opus-1.1
+
cd opus-1.1
./configure --prefix="$HOME/ffmpeg_build" --disable-shared
+
./configure --prefix="$HOME/ffmpeg_build" --disable-shared
make
+
make
make install
+
make install
make distclean
+
make distclean
  
 
libvpx
 
libvpx
Line 148: Line 148:
 
Requires ffmpeg to be configured with --enable-libvpx.
 
Requires ffmpeg to be configured with --enable-libvpx.
  
cd ~/ffmpeg_sources
+
cd ~/ffmpeg_sources
wget http://webm.googlecode.com/files/libvpx-v1.3.0.tar.bz2
+
wget http://webm.googlecode.com/files/libvpx-v1.3.0.tar.bz2
tar xjvf libvpx-v1.3.0.tar.bz2
+
tar xjvf libvpx-v1.3.0.tar.bz2
cd libvpx-v1.3.0
+
cd libvpx-v1.3.0
PATH="$HOME/bin:$PATH" ./configure --prefix="$HOME/ffmpeg_build" --disable-examples
+
PATH="$HOME/bin:$PATH" ./configure --prefix="$HOME/ffmpeg_build" --disable-examples
PATH="$HOME/bin:$PATH" make
+
PATH="$HOME/bin:$PATH" make
make install
+
make install
make clean
+
make clean
  
 
ffmpeg
 
ffmpeg
Line 161: Line 161:
 
Note: Server users can omit --enable-x11grab (this option is for x11 screen grabbing).
 
Note: Server users can omit --enable-x11grab (this option is for x11 screen grabbing).
  
cd ~/ffmpeg_sources
+
cd ~/ffmpeg_sources
wget http://ffmpeg.org/releases/ffmpeg-snapshot.tar.bz2
+
wget http://ffmpeg.org/releases/ffmpeg-snapshot.tar.bz2
tar xjvf ffmpeg-snapshot.tar.bz2
+
tar xjvf ffmpeg-snapshot.tar.bz2
cd ffmpeg
+
cd ffmpeg
PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure \
+
PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure \
  --prefix="$HOME/ffmpeg_build" \
+
  --prefix="$HOME/ffmpeg_build" \
  --extra-cflags="-I$HOME/ffmpeg_build/include" \
+
  --extra-cflags="-I$HOME/ffmpeg_build/include" \
  --extra-ldflags="-L$HOME/ffmpeg_build/lib" \
+
  --extra-ldflags="-L$HOME/ffmpeg_build/lib" \
  --bindir="$HOME/bin" \
+
  --bindir="$HOME/bin" \
  --enable-gpl \
+
  --enable-gpl \
  --enable-libass \
+
  --enable-libass \
  --enable-libfdk-aac \
+
  --enable-libfdk-aac \
  --enable-libfreetype \
+
  --enable-libfreetype \
  --enable-libmp3lame \
+
  --enable-libmp3lame \
  --enable-libopus \
+
  --enable-libopus \
  --enable-libtheora \
+
  --enable-libtheora \
  --enable-libvorbis \
+
  --enable-libvorbis \
  --enable-libvpx \
+
  --enable-libvpx \
  --enable-libx264 \
+
  --enable-libx264 \
  --enable-nonfree \
+
  --enable-nonfree \
  --enable-x11grab
+
  --enable-x11grab
PATH="$HOME/bin:$PATH" make
+
PATH="$HOME/bin:$PATH" make
make install
+
make install
make distclean
+
make distclean
hash -r
+
hash -r
  
 
Conclusion
 
Conclusion
Line 199: Line 199:
 
You can tell your shell (assuming you're using Bash) to persistently use your new ffmpeg in ~/bin. The first command will allow you to simply run man ffmpeg to get the FFmpeg man pages. The second command will source ~/.profile which will add ~/bin to your $PATH. In short, the following commands will allow you to simply type ffmpeg and man ffmpeg in your terminal and they will "just work":
 
You can tell your shell (assuming you're using Bash) to persistently use your new ffmpeg in ~/bin. The first command will allow you to simply run man ffmpeg to get the FFmpeg man pages. The second command will source ~/.profile which will add ~/bin to your $PATH. In short, the following commands will allow you to simply type ffmpeg and man ffmpeg in your terminal and they will "just work":
  
echo "MANPATH_MAP $HOME/bin $HOME/ffmpeg_build/share/man" >> ~/.manpath
+
echo "MANPATH_MAP $HOME/bin $HOME/ffmpeg_build/share/man" >> ~/.manpath
. ~/.profile
+
. ~/.profile
  
 
Note:
 
Note:
Line 223: Line 223:
 
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:
 
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,ffserver,vsyasm,x264,yasm,ytasm}
+
rm -rf ~/ffmpeg_build ~/ffmpeg_sources \
 +
~/bin/{ffmpeg,ffprobe,ffserver,vsyasm,x264,yasm,ytasm}
  
 
Now just follow the guide from the beginning.
 
Now just follow the guide from the beginning.
 
Reverting Changes Made by This Guide
 
Reverting Changes Made by This Guide
  
rm -rf ~/ffmpeg_build ~/ffmpeg_sources ~/bin/{ffmpeg,ffprobe,ffserver,vsyasm,x264,yasm,ytasm}
+
rm -rf ~/ffmpeg_build ~/ffmpeg_sources \
sudo apt-get autoremove autoconf automake build-essential libass-dev libfreetype6-dev libgpac-dev \
+
~/bin/{ffmpeg,ffprobe,ffserver,vsyasm,x264,yasm,ytasm}
  libmp3lame-dev libopus-dev libsdl1.2-dev libtheora-dev libtool libva-dev libvdpau-dev \
+
 
  libvorbis-dev libvpx-dev libx11-dev libx264-dev libxext-dev libxfixes-dev texi2html zlib1g-dev
+
sudo apt-get autoremove autoconf automake build-essential libass-dev \
sed -i '/ffmpeg_build/c\' ~/.manpath
+
libfreetype6-dev libgpac-dev libmp3lame-dev libopus-dev libsdl1.2-dev \
hash -r
+
libtheora-dev libtool libva-dev libvdpau-dev libvorbis-dev libvpx-dev \
 +
libx11-dev libx264-dev libxext-dev libxfixes-dev texi2html zlib1g-dev
 +
sed -i '/ffmpeg_build/c\' ~/.manpath
 +
hash -r
  
 
If You Need Help
 
If You Need Help

Revision as of 18:20, 19 November 2014

Compile FFmpeg on Ubuntu, Debian, or Mint

Contents

   Get the Dependencies
   Compilation & Installation
   Conclusion
   Updating FFmpeg
   Reverting Changes Made by This Guide
   If You Need Help
   Also See

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 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.

Instalasi aplikasi pendukung

sudo apt-get update
sudo apt-get -y install autoconf automake build-essential libass-dev libfreetype6-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

Notes:

   Server users can omit the ffplay and x11 dependencies: libsdl1.2-dev libva-dev libvdpau-dev libx11-dev libxext-dev libxfixes-dev.
   Lucid lacks the package libva-dev. This can be ignored. 

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-libopus from 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 (ffmpeg, ffplay, ffserver, x264, 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.3.0 then you can install that instead of compiling:

sudo apt-get install yasm

Otherwise you can compile:

cd ~/ffmpeg_sources
wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz
tar xzvf yasm-1.3.0.tar.gz
cd yasm-1.3.0
./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin"
make
make install
make 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_sources
wget http://download.videolan.org/pub/x264/snapshots/last_x264.tar.bz2
tar xjvf last_x264.tar.bz2
cd x264-snapshot*
PATH="$HOME/bin:$PATH" ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --enable-static
PATH="$HOME/bin:$PATH" make
make install
make 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).

sudo apt-get install unzip
cd ~/ffmpeg_sources
wget -O fdk-aac.zip https://github.com/mstorsjo/fdk-aac/zipball/master
unzip fdk-aac.zip
cd mstorsjo-fdk-aac*
autoreconf -fiv
./configure --prefix="$HOME/ffmpeg_build" --disable-shared
make
make install
make 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 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.

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_sources
wget http://downloads.xiph.org/releases/opus/opus-1.1.tar.gz
tar xzvf opus-1.1.tar.gz
cd opus-1.1
./configure --prefix="$HOME/ffmpeg_build" --disable-shared
make
make install
make distclean

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_sources
wget http://webm.googlecode.com/files/libvpx-v1.3.0.tar.bz2
tar xjvf libvpx-v1.3.0.tar.bz2
cd libvpx-v1.3.0
PATH="$HOME/bin:$PATH" ./configure --prefix="$HOME/ffmpeg_build" --disable-examples
PATH="$HOME/bin:$PATH" make
make install
make clean

ffmpeg

Note: Server users can omit --enable-x11grab (this option is for x11 screen grabbing).

cd ~/ffmpeg_sources
wget http://ffmpeg.org/releases/ffmpeg-snapshot.tar.bz2
tar xjvf ffmpeg-snapshot.tar.bz2
cd ffmpeg
PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure \
  --prefix="$HOME/ffmpeg_build" \
  --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-nonfree \
  --enable-x11grab
PATH="$HOME/bin:$PATH" make
make install
make distclean
hash -r

Conclusion

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

   Navigate to ~/bin and execute the binary: cd ~/bin && ./ffmpeg -i ~/input.mp4 ~/videos/output.mkv (notice the ./)
   Or you can use the full path to the binary: /home/yourusername/bin/ffmpeg -i ../input.mp4 ../videos/output.mkv
   Or if you simply want to just issue the ffmpeg command and have your shell use your compiled binary see the Persistent Environment Variables section below. 

Persistent Environment Variables

You can tell your shell (assuming you're using Bash) to persistently use your new ffmpeg in ~/bin. The first command will allow you to simply run man ffmpeg to get the FFmpeg man pages. The second command will source ~/.profile which will add ~/bin to your $PATH. In short, the following commands will allow you to simply type ffmpeg and man ffmpeg in your terminal and they will "just work":

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

Note:

   This may reset custom variables in the current shell session.
   This assumes you are using the default ~/.profile (and therefore ~/.bashrc).
   This assumes you are using Bash shell.
   Sourcing the default ~/.profile will also source ~/.bashrc.
   You may have to log out and then log in for man ffmpeg to work.
   Don't worry: you can undo any of this as shown in Reverting Changes Made by This Guide. 

See ​Ubuntu Wiki: Persistent Environment Variables for more info. 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.
   HTML formatted documentation is available in ~/ffmpeg_build/share/doc/ffmpeg.
   You can keep the ffmpeg_sources directory if you plan on updating later. See Updating FFmpeg below for more details followed by instructions for reverting all changes made by this guide. 

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,ffserver,vsyasm,x264,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,ffserver,vsyasm,x264,yasm,ytasm}
sudo apt-get autoremove autoconf automake build-essential libass-dev \
libfreetype6-dev libgpac-dev libmp3lame-dev libopus-dev libsdl1.2-dev \
libtheora-dev libtool libva-dev libvdpau-dev libvorbis-dev libvpx-dev \
libx11-dev libx264-dev libxext-dev libxfixes-dev texi2html zlib1g-dev
sed -i '/ffmpeg_build/c\' ~/.manpath
hash -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 



Referensi