1.1 Linux 编译FFmpeg 4.4.1
一、安装编译工具
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
安装依赖:
sudo apt install -y libx264-dev libx265-dev libfdk-aac-dev libmp3lame-dev
ffmpeg 4.4.1 编译:
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-docmake -j$(nproc) && make install
说明:
--enable-gpl
和--enable-nonfree
是 x264、x265 和 fdk-aac 必需的。--extra-cflags
和--extra-ldflags
指定依赖库的头文件和库路径。--disable-doc
跳过文档生成,节省时间。make -j$(nproc)
使用所有 CPU 核心加速编译。
这是编译、安装的后的目录结构:
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 编码。
git clone https://code.videolan.org/videolan/x264.git
cd x264./configure --prefix="$(pwd)/../3rdparty" --enable-staticmake -j$(nproc) && make install
(2) 编译x265
x265 用于 H.265/HEVC 编码,需安装 CMake。
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 tmpcmake -G "Unix Makefiles" \
-DCMAKE_INSTALL_PREFIX=$(pwd)/../../3rdparty \
../sourcemake -j$(nproc) && make install
(3) 编译fdk-aac
fdk-aac 是高质量 AAC 编码器,需 --enable-nonfree 编译 FFmpeg。
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-sharedmake -j$(nproc) && make install
(4) 编译mp3lame
LAME 用于 MP3 编码,简单易用。
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-sharedmake -j$(nproc) && make install
3.2 编译ffmpeg
wget https://ffmpeg.org/releases/ffmpeg-4.4.1.tar.xz
tar xf ffmpeg-4.4.1.tar.xz && cd ffmpeg-4.4.1export 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-docmake -j$(nproc) && make install