ffmpeg---CompilationGuide
2015-12-04 15:39
555 查看
https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu
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. 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.
Copy and paste the whole code box for each step. First install the dependencies:
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:
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 (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.
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:
Otherwise you can compile:
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:
Otherwise you can compile:
H.265/HEVC video encoder. See the H.265
Encoding Guide for more information and usage examples.
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).
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:
Otherwise you can compile:
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:
Otherwise you can compile:
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.
Installation is now complete and ffmpeg is now ready for use. Your newly
compiled FFmpeg programs are in ~/bin.
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.
If you want to run man ffmpeg to have local access to the documentation:
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).
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.
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:
Now just follow the guide from the beginning.
Feel free to ask questions at the #ffmpeg IRC channel or the ffmpeg-user mailing
list.
Generic FFmpeg Compilation
Guide
H.264 Video Encoding Guide
AAC Audio Encoding Guide
Compile FFmpeg on Ubuntu, Debian, or Mint
Contents
Getthe 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. 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 update sudo 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 certainencoders 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 (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.2.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 EncodingGuide 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
libx265
H.265/HEVC video encoder. See the H.265Encoding Guide for more information and usage examples.
sudo apt-get install cmake mercurial cd ~/ffmpeg_sources hg clone https://bitbucket.org/multicoreware/x265 cd ~/ffmpeg_sources/x265/build/linux PATH="$HOME/bin:$PATH" cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$HOME/ffmpeg_build" -DENABLE_SHARED:bool=off ../../source make make install make distclean
libfdk-aac
AAC audio encoder. See the AAC Audio EncodingGuide 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_sources wget -O fdk-aac.tar.gz https://github.com/mstorsjo/fdk-aac/tarball/master tar xzvf fdk-aac.tar.gz 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 clean
libvpx
VP8/VP9 video encoder and decoder. See the VP8Video Encoding Guide for more information and usage examples.
Requires ffmpeg to be configured
with --enable-libvpx.
cd ~/ffmpeg_sources wget http://storage.googleapis.com/downloads.webmproject.org/releases/webm/libvpx-1.4.0.tar.bz2 tar xjvf libvpx-1.4.0.tar.bz2 cd libvpx-1.4.0 PATH="$HOME/bin:$PATH" ./configure --prefix="$HOME/ffmpeg_build" --disable-examples --disable-unit-tests PATH="$HOME/bin:$PATH" make make install make clean
ffmpeg
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" \ --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-nonfree PATH="$HOME/bin:$PATH" make make install make distclean hash -r
Conclusion
Installation is now complete and ffmpeg is now ready for use. Your newlycompiled 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 forsome 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-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 mailinglist.
Also See
Generic FFmpeg CompilationGuide
H.264 Video Encoding Guide
AAC Audio Encoding Guide
相关文章推荐
- UIWindow & UIWindowLevel笔记
- git clone: SSL certificate problem: unable to get local issuer certificate
- vm虚拟机出现目标主机不支持CPUID的情况
- pyquery安装
- [LeetCode 307] Range Sum Query - Mutable
- U3D打图集流程
- iOS重写系统中的UINavigationController返回按钮的事件
- MySQL.. ERROR! The server quit without updating PID file问题解决
- [cc150]Chapter 3 | Stacks and Queues
- UITableView 左右滑动时,出现删除按钮的动画
- easyui动态添加组件没有样式
- poj 1679 The Unique MST
- 滚动指定UITableViewCell到顶部
- Build Settings中的变量@rpath,@loader_path,@executable_path
- UI视图控件、视图嵌套、SubView、Tag 的使用
- Android UICC 实现框架和数据读写
- LeetCode(304)Range Sum Query 2D - Immutable
- LeetCode(304)Range Sum Query 2D - Immutable
- easyui-slider
- IOS 高斯模糊 (毛玻璃效果 UIVisualEffect)