1.1 Linux 编译FFmpeg 4.4.1

一、安装编译工具

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
相关推荐
hujun86104 小时前
Ubuntu安装无线网卡
linux
Johny_Zhao5 小时前
CentOS Stream 8 高可用 Kuboard 部署方案
linux·网络·python·网络安全·docker·信息安全·kubernetes·云计算·shell·yum源·系统运维·kuboard
十五年专注C++开发7 小时前
Qt .pro配置gcc相关命令(三):-W1、-L、-rpath和-rpath-link
linux·运维·c++·qt·cmake·跨平台编译
qq_628515767 小时前
Centos与RockLinux设置静态ip
linux·运维·centos
程序猿小D8 小时前
第27节 Node.js Buffer
linux·开发语言·vscode·node.js·c#·编辑器·vim
东风西巷8 小时前
AudioLab安卓版:音频处理,一应俱全
ffmpeg·音视频·软件需求
沧浪之水120101378 小时前
linux常用命令
linux·运维·服务器
梦会实现9 小时前
无外接物理显示器的Ubuntu系统的远程桌面连接(升级版)
linux·运维·ubuntu·计算机外设
暗离子跃迁9 小时前
达梦数据库单机部署dmhs同步复制(dm8->kafka)
linux·运维·数据库·分布式·学习·kafka·达梦数据库