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

问题

  1. 按照官方文档编译 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 配置
  2. 经过测试,4.3.x 的 ffmpeg 版本编译会有问题,解决办法参考这里在libavcodec/asvdec.c文件开头加上 ==> #include “libavutil/reverse.c”,其他同理。

    ffmpeg4.3.x版本编译问题

  3. 注意添加 PATH 环境变量:export PATH=$HOME/bin:$PATH

  4. 查看环境变量:env