一、安装编译工具
bash
sudo apt install -y autoconf automake build-essential cmake git pkg-config nasm yasm libtool zlib1g-dev
说明:
autoconf
:生成 configure 脚本,用于自动配置源码。automake
:与 autoconf 配合,生成 Makefile。build-essential
:包括 gcc、g++、make 等基本编译工具。cmake
:x265 等依赖库需要 CMake 来生成构建文件。git
:用于从 Git 仓库(如 x264、fdk-aac)克隆源码。pkg-config
:用于查找已安装库的头文件和库路径。nasm
与yasm
:汇编优化工具,x264 和 FFmpeg 使用它提高性能。libtool
:统一管理库文件的编译、链接和安装过程,屏蔽不同平台的底层差异zlib1g-dev
:用于处理压缩数据,如 PNG 解码或某些容器格式,FFmpeg 核心功能需要。
二、ffmpeg依赖库(apt安装)
2.1 有哪些ffmpeg依赖库
分类 | 库名称 | 用途 | FFmpeg 配置选项 | Ubuntu 安装命令 |
---|---|---|---|---|
视频编码 | libx264-dev |
H.264 视频编码(高效、广泛使用) | --enable-libx264 |
sudo apt install -y libx264-dev |
libx265-dev |
H.265/HEVC 视频编码(高压缩率,适用于 4K/8K) | --enable-libx265 |
sudo apt install -y libx265-dev |
|
libvpx-dev |
VP8/VP9 视频编码(用于 WebM 格式) | --enable-libvpx |
sudo apt install -y libvpx-dev |
|
libtheora-dev |
Theora 视频编码(开源视频格式) | --enable-libtheora |
sudo apt install -y libtheora-dev |
|
libxvidcore-dev |
Xvid(MPEG-4)视频编码 | --enable-libxvid |
sudo apt install -y libxvidcore-dev |
|
libaom-dev |
AV1 视频编码(下一代开源视频格式) | --enable-libaom |
sudo apt install -y libaom-dev |
|
音频编码 | libfdk-aac-dev |
高质量 AAC 音频编码(非自由软件,需 --enable-nonfree ) |
--enable-libfdk-aac |
sudo apt install -y libfdk-aac-dev |
libmp3lame-dev |
MP3 音频编码 | --enable-libmp3lame |
sudo apt install -y libmp3lame-dev |
|
libvorbis-dev |
Vorbis 音频编码(常用于 Ogg 容器) | --enable-libvorbis |
sudo apt install -y libvorbis-dev |
|
libopus-dev |
Opus 音频编码(低延迟、高质量,适合网络传输) | --enable-libopus |
sudo apt install -y libopus-dev |
|
其他常用功能库 | libass-dev |
字幕渲染(支持 ASS/SSA 字幕格式) | --enable-libass |
sudo apt install -y libass-dev |
libfreetype6-dev |
字体渲染(用于字幕和文本叠加) | --enable-libfreetype |
sudo apt install -y libfreetype6-dev |
|
libsdl2-dev |
SDL 库,用于 FFmpeg 的 ffplay 播放器 | --enable-sdl2 |
sudo apt install -y libsdl2-dev |
|
zlib1g-dev |
压缩支持(用于处理压缩元数据,如 PNG 或某些容器格式) | --enable-zlib |
sudo apt install -y zlib1g-dev |
|
libva-dev |
硬件加速解码/编码(VAAPI,Intel/AMD GPU) | --enable-vaapi |
sudo apt install -y libva-dev |
|
libvdpau-dev |
硬件加速解码(VDPAU,NVIDIA GPU) | --enable-vdpau |
sudo apt install -y libvdpau-dev |
|
libdav1d-dev |
AV1 视频解码(高性能 AV1 解码器) | --enable-libdav1d |
sudo apt install -y libdav1d-dev |
|
libopenjpeg-dev |
JPEG 2000 图像/视频编码 | --enable-libopenjpeg |
sudo apt install -y libopenjpeg-dev |
2.2 常见案例
最小化配置:x264、x265、fdk-aac 和 lame
安装依赖:
bash
sudo apt install -y libx264-dev libx265-dev libfdk-aac-dev libmp3lame-dev
ffmpeg 4.4.1 编译:
bash
wget https://ffmpeg.org/releases/ffmpeg-4.4.1.tar.xz
tar xf ffmpeg-4.4.1.tar.xz && cd ffmpeg-4.4.1
./configure \
--prefix="$(pwd)/../ffmpeg_build" \
--enable-gpl \
--enable-nonfree \
--enable-libx264 \
--enable-libx265 \
--enable-libfdk-aac \
--enable-libmp3lame \
--enable-static \
--disable-shared \
--disable-doc
make -j$(nproc) && make install
说明:
--enable-gpl
和--enable-nonfree
是 x264、x265 和 fdk-aac 必需的。--extra-cflags
和--extra-ldflags
指定依赖库的头文件和库路径。--disable-doc
跳过文档生成,节省时间。make -j$(nproc)
使用所有 CPU 核心加速编译。
这是编译、安装的后的目录结构:
bash
laow@laow-pc:~/Downloads$ tree ffmpeg_build/ -L 2
ffmpeg_build/
├── bin
│ ├── ffmpeg
│ └── ffprobe
├── include
│ ├── libavcodec
│ ├── libavdevice
│ ├── libavfilter
│ ├── libavformat
│ ├── libavutil
│ ├── libpostproc
│ ├── libswresample
│ └── libswscale
├── lib
│ ├── libavcodec.a
│ ├── libavdevice.a
│ ├── libavfilter.a
│ ├── libavformat.a
│ ├── libavutil.a
│ ├── libpostproc.a
│ ├── libswresample.a
│ ├── libswscale.a
│ └── pkgconfig
└── share
└── ffmpeg
三、ffmpeg依赖库(手动编译安装)
所有源码下载:ffmpeg4.4.1源代码
3.1 编译依赖库
(1) 编译x264
x264 是一个 H.264 视频编码库,FFmpeg 使用其进行 H.264 编码。
bash
git clone https://code.videolan.org/videolan/x264.git
cd x264
./configure --prefix="$(pwd)/../3rdparty" --enable-static
make -j$(nproc) && make install
(2) 编译x265
x265 用于 H.265/HEVC 编码,需安装 CMake。
bash
wget https://bitbucket.org/multicoreware/x265_git/downloads/x265_3.5.tar.gz
tar xzvf x265_3.5.tar.gz && cd x265_3.5
mkdir tmp && cd tmp
cmake -G "Unix Makefiles" \
-DCMAKE_INSTALL_PREFIX=$(pwd)/../../3rdparty \
../source
make -j$(nproc) && make install
(3) 编译fdk-aac
fdk-aac 是高质量 AAC 编码器,需 --enable-nonfree 编译 FFmpeg。
bash
wget https://sourceforge.net/projects/opencore-amr/files/fdk-aac/fdk-aac-2.0.2.tar.gz
tar -xf fdk-aac-2.0.2.tar.gz && cd fdk-aac-2.0.2/
# 生成 configure 脚本
autoreconf -fiv
./configure --prefix="$(pwd)/../3rdparty" --disable-shared
make -j$(nproc) && make install
(4) 编译mp3lame
LAME 用于 MP3 编码,简单易用。
bash
wget https://sourceforge.net/projects/lame/files/lame/3.100/lame-3.100.tar.gz
tar -xf lame-3.100.tar.gz && cd lame-3.100
./configure --prefix="$(pwd)/../3rdparty" --enable-static --disable-shared
make -j$(nproc) && make install
3.2 编译ffmpeg
bash
wget https://ffmpeg.org/releases/ffmpeg-4.4.1.tar.xz
tar xf ffmpeg-4.4.1.tar.xz && cd ffmpeg-4.4.1
export PKG_CONFIG_PATH=$(pwd)/../3rdparty/lib/pkgconfig
./configure \
--prefix="$(pwd)/../ffmpeg_build" \
--extra-cflags="-I$(pwd)/../3rdparty/include" \
--extra-ldflags="-L$(pwd)/../3rdparty/lib" \
--enable-gpl \
--enable-nonfree \
--enable-libx264 \
--enable-libx265 \
--enable-libfdk-aac \
--enable-libmp3lame \
--enable-static \
--disable-shared \
--disable-doc
make -j$(nproc) && make install