Linux编译ffmpeg

Eave 2015.06.26

FFmpeg 是领先的多媒体框架,能够解码、编码、 转码、复用、解复用、流、过滤和播放 几乎所有人类和机器创建的东西。它支持最模糊的古老格式,直到最前沿。无论它们是由某个标准委员会、社区还是公司设计的。它还具有高度的可移植性:FFmpeg 在各种构建环境、机器架构和配置下跨 Linux、Mac OS X、Microsoft Windows、BSD、Solaris 等 编译、运行。

1、安装相关依赖

yum groupinstall "Development Tools"
yum install -y epel-release
yum install -y nasm yasm cmake
yum install -y libx264-devel libx265-devel libvpx-devel fdk-aac-devel
yum install -y lame-devel opus-devel libvorbis-devel
yum install -y libass-devel freetype-devel SDL2-devel

安装nasmc

wget "https://www.nasm.us/pub/nasm/releasebuilds/3.01/nasm-3.01.tar.gz"
tar -zxf nasm-3.01.tar.gz
cd nasm-3.01

./configure
make -j$(nproc) && make install
# 查看版本号
nasm --version

安装fdk-aac

wget -O fdk-aac-v2.0.3.tar.gz "https://github.com/mstorsjo/fdk-aac/archive/refs/tags/v2.0.3.tar.gz"
tar -zxf fdk-aac-v2.0.3.tar.gz
cd fdk-aac-2.0.3

./autogen.sh
./configure --prefix=/usr/local --enable-shared
make -j$(nproc) && make install
ldconfig

安装lame

wget "https://zenlayer.dl.sourceforge.net/project/lame/lame/3.100/lame-3.100.tar.gz"
tar -zxf lame-3.100.tar.gz
cd lame-3.100

./configure --prefix=/usr/local --enable-shared
make -j$(nproc) && make install
ldconfig

安装opus

wget "https://github.com/xiph/opus/releases/download/v1.5.2/opus-1.5.2.tar.gz"
tar -zxf opus-1.5.2.tar.gz
cd opus-1.5.2

./autogen.sh
./configure --prefix=/usr/local --enable-shared
make -j$(nproc) && make install
ldconfig

# 验证 Opus 是否可以找到
pkg-config --cflags --libs opus

安装libogg

wget "https://downloads.xiph.org/releases/ogg/libogg-1.3.6.tar.gz"
tar -zxf libogg-1.3.6.tar.gz
cd libogg-1.3.6

./configure --prefix=/usr/local --enable-shared
make -j$(nproc) && make install

安装libvorbis

wget "https://ftp.osuosl.org/pub/xiph/releases/vorbis/libvorbis-1.3.7.tar.gz"
tar -zxf libvorbis-1.3.7.tar.gz
cd libvorbis-1.3.7

./configure --prefix=/usr/local --enable-shared --with-ogg=/usr/local
make -j$(nproc) && make install
ldconfig

安装libvpx

wget -O libvpx-1.15.2.tar.gz "https://github.com/webmproject/libvpx/archive/v1.15.2.tar.gz"
tar -zxf libvpx-1.15.2.tar.gz
cd libvpx-1.15.2

./configure --prefix=/usr/local --enable-shared --disable-static --enable-vp8 --enable-vp9 --enable-vp9-highbitdepth --enable-multithread
make -j$(nproc) && make install
ldconfig

# 检查 pkg-config
pkg-config --modversion vpx

安装x264

wget "https://code.videolan.org/videolan/x264/-/archive/stable/x264-stable.tar.bz2"
tar -jxf x264-stable.tar.bz2
cd x264-stable

./configure --prefix=/usr/local --enable-shared --enable-pic
make -j$(nproc) && make install

# 检查 pkg-config
pkg-config --modversion x264

安装x265

git clone https://bitbucket.org/multicoreware/x265_git.git
cd x265_git

cd build/linux
cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX=/usr/local -DENABLE_SHARED=ON ../../source
make -j$(nproc) && make install
ldconfig

2、下载所需源码包

下载地址:http://ffmpeg.org/download.html

wget "https://ffmpeg.org/releases/ffmpeg-8.0.tar.xz"
tar -xJf ffmpeg-8.0.tar.xz
cd ffmpeg-8.0
./configure --prefix=/usr/local --enable-gpl --enable-libx264 --enable-libx265 --enable-libvpx --enable-libfdk-aac --enable-libmp3lame --enable-libopus --enable-libvorbis --enable-libass --enable-static --enable-shared --extra-cflags="-I/usr/local/include" --extra-ldflags="-L/usr/local/lib"
# 使用多核加速,数字为CPU核心数
make -j$(nproc) && make install
# 更新动态库缓存
ldconfig

参数解释

--prefix:指定安装目录

--enable-gpl:启用 GPL 许可证

--enable-libx264:启用 H.264 编码

--enable-libx265:启用 H.265/HEVC 编码

--enable-libfdk-aac:启用 AAC 音频编码

--enable-static:构建静态库

--enable-shared:构建共享库

2、编辑/etc/profile文件

/etc/profile文件末尾追加一下内容

# ffmpeg
# export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/lib/x86_64-linux-gnu/pkgconfig:/usr/lib/pkgconfig:$PKG_CONFIG_PATH

3、执行一下命令使配置生效

source /etc/profile

4、查看FFMpeg版本号

# 检查 FFmpeg 版本
ffmpeg -version

# 查看支持的编解码器
ffmpeg -codecs

# 查看支持的格式
ffmpeg -formats