目录
- 第三方源码编译三部曲
-
- [关于 configure 的说明](#关于 configure 的说明)
- [FFmpeg 移植流程](#FFmpeg 移植流程)
-
- 获取源码
-
- [方法一:git 远程克隆](#方法一:git 远程克隆)
- 方法二:官网下载压缩包解压
- 配置
- 安装
第三方源码编译三部曲
Linux平台下有许多开源的第三方库和服务,这些开源代码一般都符合GNU-autotools编码规范,可以使用所谓 "三步曲" 来统一进行配置、编译和安装,如下:
1️⃣ **配置:**根据当前平台的具体情况,生成 Makefile 文件
(configure会根据当前系统环境和指定参数生成makefile文件,为下一步的编译做准备)
powershell
li@alive:~/ffmpeg$ ./configure
- 注意:
- 默认安装到 /usr/local 下,可以通过 --prefix= 来指定安装路径
2️⃣ **编译:**根据生成的Makefile文件,指导当前平台的编译器编译所有的源码
powershell
li@alive:~/ffmpeg$ make
3️⃣ 安装: 将编译和配置好了的库文件、头文件等内容统一存储到指定的位置
powershell
li@alive:~/ffmpeg$ sudo make install
- 注意:
- 我当前用户不是 root,因此需要使用
sudo
以超级管理员权限写入/usr/local
下,否则会写入失败。
- 我当前用户不是 root,因此需要使用
关于 configure 的说明
在以上三个固定的步骤中,第一步配置一般来讲需要根据具体情况指定不同的配置参数,可以使用其自带的 --help 指令查看帮助信息,例如:

执行完该命令后会弹出相关的命令行参数。每种不同的源码包所支持的配置参数都不尽相同,但有一些是比较通用且常用的,比如如下4个参数:
shell
./configure --prefix=/home/li/ffmpeg \
--build=x86_64-linux-gnu \
--host=arm-none-linux-gnueabi \
--target=arm-none-linux-gnueabi
--prefix
:用来指定安装路径,若没指定则默认是 /usr/local--build
:指定用来编译这个源代码的编译器是在什么操作系统平台。通常由config.guess
自动检测,除非你明确指定。--host
**:**指定这个源代码编译出来的程序在什么平台上运行。如我的是在arm平台运行,可以使用交叉编译器命令arm-linux-gcc -v查看--target
:主要用于编译编译器等工具链本身时才使用,比如构建 GCC、Binutils。在构建普通程序(如 ffmpeg)时,通常不需要设置它,和--host
一样即可,或省略。
可以通过 gcc -v/arm-linux-gcc -v
来获取平台


FFmpeg 移植流程
获取源码
方法一:git 远程克隆
这里采用 Git 远程克隆 FFmpeg 源码到我的 WSL 上,当然也可以去 FFmpeg官网直接下载源码并解压。
**注意:**使用git之前请先安装git版本控制工具。
powershell
sudo apt update
sudo apt install git
安装完成输入git --version
查看是否安装成功

如上图,安装成功。
接下来使用 git 远程克隆 FFmpeg 到本地。
powershell
git clone https://github.com/FFmpeg/FFmpeg.git /home/li/ffmpeg
- 这里后面是指定 WSL 的路径,尽量避免直接克隆在 window 的文件系统里面,指定到 WSL 本地目录(ext4)效率更高。
克隆完成的我的 /home/li 目录下会多出来一个 ffmpeg 目录,cd 进去即可查看下载的源码。

方法二:官网下载压缩包解压
1️⃣ 下载官方提供的最新稳定版 FFmpeg。

2️⃣ 选择另存为,将压缩包放到 ubuntu 的共享文件夹下,方便我们后续移动到 ubuntu 的家目录下。

- 我这里 ubuntu 的共享文件夹设置成了 window 下的 F 盘,故另存到 F 盘即可。
3️⃣ 移动压缩包到家目录 ~
powershell
mv ffmpeg-7.1.1.tar.xz ~/
4️⃣ 解压
powershell
tar -xvf ffmpeg-7.1.1.tar.xz
5️⃣ 此时即可在家目录下看到我们解压后的文件夹

- 至此获取源码的步骤结束了,后面的步骤都是一样的。
配置
由于 FFmpeg 很多组件库,因此在配置的时候只需要先将常用的配置好,其他有需要的时候再配置。
1️⃣ 先安装这些组件库所需依赖
powershell
sudo apt update && sudo apt install -y \
yasm pkg-config build-essential clang \
libx264-dev libx265-dev libfdk-aac-dev \
libmp3lame-dev libopus-dev libfreetype6-dev \
libpipewire-0.3-dev \
libaom-dev libvpx-dev libvorbis-dev libtheora-dev \
libxvidcore-dev
2️⃣ 然后进行配置
powershell
./configure \
--prefix=/usr/local/ffmpeg \
--enable-gpl \
--enable-nonfree \
--enable-version3 \
--enable-libx264 \
--enable-libx265 \
--enable-libvpx \
--enable-libxvid \
--enable-libfdk-aac \
--enable-libmp3lame \
--enable-libopus \
--enable-libvorbis \
--enable-libtheora \
--enable-libaom \
--enable-shared \
--enable-pthreads \
--enable-libfreetype \
--enable-filter=delogo \
- 注意: 这里指定的路径为
/usr/local/ffmpeg
而并非传统的/usr/local
。
这样做的好处有几个:
配置路径 | 意义与效果 |
---|---|
--prefix=/usr/local |
默认用户级软件安装路径,直接将可执行文件放到 /usr/local/bin/ 等标准目录 |
--prefix=/usr/local/ffmpeg |
安装到子目录中,所有内容集中在 /usr/local/ffmpeg 下,更容易管理和卸载 |

因此,我们需要手动加上 PATH 让系统能找到 ffmpeg。
powershell
export PATH=/usr/local/ffmpeg/bin:$PATH
source ~/.bashrc # 或 ~/.zshrc
安装
1️⃣ 执行安装命令,等待时间会有点久
powershell
make && make install
2️⃣ 验证安装是否成功
powershell
which ffmpeg
ffmpeg -version

由于我安装 FFmpeg 时用的是 --enable-shared
,它会依赖这些共享库:
libavdevice.so.62
libavformat.so.60
libavcodec.so.60
- 等等......
因为我在配置 的时候指定了路径为/usr/local/ffmpeg
这些共享库都安装在了 /usr/local/ffmpeg/lib/
里。但:
Linux 默认只从 /lib
, /usr/lib
, /usr/local/lib
等几个路径找 .so
文件。
因此我们export PATH=/usr/local/ffmpeg/bin:$PATH
只是解决了which ffmpeg
找不到命令的问题。我们还需要设置库路径:
powershell
echo "/usr/local/ffmpeg/lib" | sudo tee /etc/ld.so.conf.d/ffmpeg.conf
sudo ldconfig
执行完即可发现ffmpeg --version
已经成功输出版本号说明。
