0. 编译的版本
- ffmpeg-4.4
- nasm-2.14.02
- yasm-1.3.0
- H.264
- H.265
- fdk-aac-2.0.0
1. Get the Dependencies
-
需要
superuser
或者root
用户# yum install autoconf automake bzip2 bzip2-devel cmake freetype-devel gcc gcc-c++ git libtool make pkgconfig zlib-devel
-
新建
ffmpeg_sources
文件夹,把需要的源代码都放到这个文件夹中mkdir ~/ffmpeg_sources
-
新建
ffmpeg_build
文件夹,把构建的项目文件都放到这个文件夹中mkdir ~/ffmpeg_build
-
新建
bin
文件夹,把编译生成的文件都放到这个文件夹中mkdir ~/bin
2. Install NASM assembler
一些库使用的汇编程序。强烈建议这样做,否则构建可能会非常缓慢。
cd ~/ffmpeg_sources
curl -O -L 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
./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin"
make
make install
3. Install Yasm assembler
一些库使用的汇编程序。强烈建议这样做,否则构建可能会非常缓慢。
cd ~/ffmpeg_sources
curl -O -L 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
make install
4. Install libx264
Requires ffmpeg to be configured with --enable-gpl --enable-libx264
.
cd ~/ffmpeg_sources
git clone --branch stable --depth 1 https://code.videolan.org/videolan/x264.git
cd x264
PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --enable-static
make
make install
Warning: If you get Found no assembler. Minimum version is nasm-2.13 or similar after running ./configure then the outdated nasm package from the repo is installed. Run yum remove nasm && hash -d nasm
or export PATH=$HOME/bin:$PATH
and x264 will then use your newly compiled nasm instead. Ensure environment is able to resolve path to nasm binary.
5. Install libx265
Requires ffmpeg to be configured with --enable-gpl --enable-libx265
.
cd ~/ffmpeg_sources
git clone --branch stable --depth 2 https://bitbucket.org/multicoreware/x265_git
cd ~/ffmpeg_sources/x265_git/build/linux
PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$HOME/ffmpeg_build" -DENABLE_SHARED:bool=off ../../source
make
make install
6. Install libfdk_aac
Requires ffmpeg to be configured with --enable-libfdk_aac
(and --enable-nonfree
if you also included --enable-gpl
).
cd ~/ffmpeg_sources
git clone --depth 1 https://github.com/mstorsjo/fdk-aac
cd fdk-aac
autoreconf -fiv
./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --disable-shared
make
make install
7. Install FFmpeg
cd ~/ffmpeg_sources
curl -O -L https://ffmpeg.org/releases/ffmpeg-4.4.tar.bz2
tar xjvf ffmpeg-4.4.tar.bz2
cd ~/ffmpeg_sources/ffmpeg-4.4
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 \
--extra-libs=-lm \
--bindir="$HOME/bin" \
--enable-gpl \
--enable-libfdk_aac \
--enable-libx264 \
--enable-libx265 \
--enable-nonfree
make
make install
hash -d ffmpeg
问题
-
按照官方文档编译
libx265
后,在安装ffmpeg4 --enable-libx265
出现ERROR: x265 not found using pkg-config
的问题,解决办法参考这里。- 在执行
cmake
命令前,指定x265.pc
文件的生成路径:PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$HOME/ffmpeg_build" -DENABLE_SHARED:bool=off ../../source
- 或者将
x265.pc
文件的生成路径添加到环境变量PKG_CONFIG_PATH
中:export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
- 在编译
ffmpeg
时添加--extra-libs=-lpthread
配置
- 在执行
-
经过测试,4.3.x 的 ffmpeg 版本编译会有问题,解决办法参考这里,
在libavcodec/asvdec.c文件开头加上 ==> #include “libavutil/reverse.c”
,其他同理。 -
注意添加
PATH
环境变量:export PATH=$HOME/bin:$PATH
。 -
查看环境变量:
env
。