转载请以链接形式标明出处: 本文出自:103style的博客
官方文档
创建相关文件夹
代码语言:javascript复制cd $HOME
mkdir ffmpeg_sources
mkdir ffmpeg_build
mkdir bin
安装依赖,安装报错请往下看。
sudo apt-get update -qq && sudo apt-get -y install
autoconf
automake
build-essential
cmake
git-core
libass-dev
libfreetype6-dev
libsdl2-dev
libtool
libva-dev
libvdpau-dev
libvorbis-dev
libxcb1-dev
libxcb-shm0-dev
libxcb-xfixes0-dev
pkg-config
texinfo
wget
zlib1g-dev
如果出现类似下列打印信息:xxx:依赖: xxx 但是它将不会被安装
libass-dev : 依赖: libfontconfig1-dev 但是它将不会被安装
依赖: libharfbuzz-dev 但是它将不会被安装
解决办法:安装 aptitude
工具
sudo apt-get install aptitude
然后修改运行一下指令,
代码语言:javascript复制sudo apt-get update -qq && sudo aptitude -y install
autoconf
automake
build-essential
cmake
git-core
libass-dev
libfreetype6-dev
libsdl2-dev
libtool
libva-dev
libvdpau-dev
libvorbis-dev
libxcb1-dev
libxcb-shm0-dev
libxcb-xfixes0-dev
pkg-config
texinfo
wget
zlib1g-dev
如果出现类似下面的报错
代码语言:javascript复制无法下载 http://dl.google.com/linux/chrome/deb/dists/stable/main/binary-amd64/Packages
无法发起与 dl.google.com:80 (2404:6800:4005:805::200e) 的连接 - connect (101: 网络不可达)
则使用Ubuntu国内镜像: 镜像地址
代码语言:javascript复制sudo chmod -R 777 /etc/apt/sources.list
gedit /etc/apt/sources.list
添加上面链接中的镜像地址到最后。
然后注释掉 /etc/apt/sources.list.d/google-chrome.list
中的源
sudo gedit /etc/apt/sources.list.d/google-chrome.list
修改为以下内容:
代码语言:javascript复制### THIS FILE IS AUTOMATICALLY CONFIGURED ###
# You may comment out this entry, but any other modifications may be lost.
# deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main
然后再次执行上面的命令。
安装其他依赖
- NASM
cd ~/ffmpeg_sources &&
wget https://www.nasm.us/pub/nasm/releasebuilds/2.14.02/nasm-2.14.02.tar.bz2 &&
tar xjvf nasm-2.14.02.tar.bz2 &&
cd nasm-2.14.02 &&
./autogen.sh &&
PATH="$HOME/bin:$PATH" ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" &&
make -j4 &&
make install
- Yasm
cd ~/ffmpeg_sources &&
wget -O yasm-1.3.0.tar.gz https://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 -j4 &&
make install
- libx264
cd ~/ffmpeg_sources &&
git -C x264 pull 2> /dev/null || git clone --depth 1 https://code.videolan.org/videolan/x264.git &&
cd x264 &&
PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --enable-static --enable-pic &&
PATH="$HOME/bin:$PATH" make -j4 &&
make install
- libx265
sudo apt-get install mercurial libnuma-dev &&
cd ~/ffmpeg_sources &&
if cd x265 2> /dev/null; then hg pull && hg update && cd ..; else hg clone https://bitbucket.org/multicoreware/x265; fi &&
cd x265/build/linux &&
PATH="$HOME/bin:$PATH" cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$HOME/ffmpeg_build" -DENABLE_SHARED=off ../../source &&
PATH="$HOME/bin:$PATH" make -j4 &&
make install
- libvpx
cd ~/ffmpeg_sources &&
git -C libvpx pull 2> /dev/null || git clone --depth 1 https://chromium.googlesource.com/webm/libvpx.git &&
cd libvpx &&
PATH="$HOME/bin:$PATH" ./configure --prefix="$HOME/ffmpeg_build" --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=yasm &&
PATH="$HOME/bin:$PATH" make -j4 &&
make install
- libfdk-aac
cd ~/ffmpeg_sources &&
git -C fdk-aac pull 2> /dev/null || git clone --depth 1 https://github.com/mstorsjo/fdk-aac &&
cd fdk-aac &&
autoreconf -fiv &&
./configure --prefix="$HOME/ffmpeg_build" --disable-shared &&
make -j4 &&
make install
- libmp3lame
cd ~/ffmpeg_sources &&
wget -O lame-3.100.tar.gz https://downloads.sourceforge.net/project/lame/lame/3.100/lame-3.100.tar.gz &&
tar xzvf lame-3.100.tar.gz &&
cd lame-3.100 &&
PATH="$HOME/bin:$PATH" ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --disable-shared --enable-nasm &&
PATH="$HOME/bin:$PATH" make -j4 &&
make install
- libopus
cd ~/ffmpeg_sources &&
git -C opus pull 2> /dev/null || git clone --depth 1 https://github.com/xiph/opus.git &&
cd opus &&
./autogen.sh &&
./configure --prefix="$HOME/ffmpeg_build" --disable-shared &&
make -j4 &&
make install
- libaom
cd ~/ffmpeg_sources &&
git -C aom pull 2> /dev/null || git clone --depth 1 https://aomedia.googlesource.com/aom &&
mkdir -p aom_build &&
cd aom_build &&
PATH="$HOME/bin:$PATH" cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$HOME/ffmpeg_build" -DENABLE_SHARED=off -DENABLE_NASM=on ../aom &&
PATH="$HOME/bin:$PATH" make -j4 &&
make install
git无法连接的话, 笔者提供了这个 下载地址,或者打开这里 自己点击 Download
。
将下载的 aom.rar
复制到 之前创建的 ffmpeg_sources
目录,然后依次运行下面的命令:
cd $HOME/ffmpeg_sources
sudo apt-get install unrar
rar x aom.rar
mv aom1/ aom/
然后继续执行下面一串命令:
代码语言:javascript复制mkdir aom_build &&
cd aom_build &&
PATH="$HOME/bin:$PATH" cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$HOME/ffmpeg_build" -DENABLE_SHARED=off -DENABLE_NASM=on ../aom &&
PATH="$HOME/bin:$PATH" make -j4 &&
make install
下载编译FFmpeg
执行以下命令:
代码语言:javascript复制cd $HOME/ffmpeg_sources &&
wget -O ffmpeg-snapshot.tar.bz2 https://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"
--extra-libs="-lpthread -lm"
--bindir="$HOME/bin"
--enable-gpl
--enable-libaom
--enable-libass
--enable-libfdk-aac
--enable-libfreetype
--enable-libmp3lame
--enable-libopus
--enable-libvorbis
--enable-libvpx
--enable-libx264
--enable-libx265
--enable-nonfree &&
PATH="$HOME/bin:$PATH" make -j4 &&
make install &&
hash -r
执行完毕会在 $HOME/bin
目录下生成对应的文件。
如果编译报错提示类似下面的信息:
代码语言:javascript复制 libass-dev : 依赖: libfontconfig1-dev 但是它将不会被安装
依赖: libharfbuzz-dev 但是它将不会被安装
则执行以下命令
代码语言:javascript复制sudo aptitude install libass-dev
如果出现 y / n / q
类似的提示时,则按 n
找到一个全部降级的选项方案,然后按y
安装。
再次执行FFmpeg
的编译命令。
如果还有提示对应的包未安装的话,则继续用sudo aptitude install
安装对应的包。
以上