文章目录
-
- [1. 背景](#1. 背景)
- [2. 准备工作](#2. 准备工作)
- [3. 源码编译](#3. 源码编译)
-
- [3.1 configure 配置](#3.1 configure 配置)
- [3.2 编译](#3.2 编译)
- [3.3 安装](#3.3 安装)
- [3.4 验证](#3.4 验证)
- [3.5 动态库路径](#3.5 动态库路径)
1. 背景
ffmpeg 是从事音视频领域绕不过去的一道坎,掌握了ffmpeg工具,在音视频开发的时候,无论是效率,还是看待问题的角度,都会产生一个不一样的情况。ffmpeg提供了源码,可以从源码角度,慢慢地去掌握这个工具。
2. 准备工作
- 卸载之前安装的
ffmpeg版本; - 如果知道安装位置,直接进行删除;
- 如果是直接使用版本包工具安装的,直接使用命令删除;
sudo apt remove -y ffmpeg libavutil-dev libavcodec-dev libavformat-dev - 源码下载
- 登录ffmpeg官网
https://ffmpeg.org/download.html,下载源码,或者在终端下

- 登录ffmpeg官网
c
wget https://ffmpeg.org/releases/ffmpeg-8.0.1.tar.xz
- 源码解压
c
tar -xvf ffmpeg-8.0.1.tar.xz
3. 源码编译
linux 下源码编译通常都是 configure、make、install。 ffmpeg的编译也是如此。
3.1 configure 配置
bash
./configure --prefix=/usr/local --enable-gpl --enable-version3 --enable-nonfree --enable-libfdk-aac --enable-alsa --enable-static --enable-debug --enable-ffmpeg --enable-ffplay --enable-ffprobe --cc=gcc --enable-fontconfig --enable-frei0r --enable-gnutls --enable-gmp --enable-gray --enable-libfribidi --enable-libass --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrwb --enable-libopenjpeg --enable-librubberband --enable-libsoxr --enable-libspeex --enable-libvorbis --enable-libopus --enable-libtheora --enable-libvidstab --enable-libvo-amrwbenc --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzvbi --enable-filters --enable-demuxers --enable-muxers --enable-encoders --enable-decoders --enable-bsfs
-prefix 选项为后续安装的路径,这里指定为usr/local ,其他的是一些使能编译的功能。
- 注意:configure 会检查系统依赖是否安装,如果没有安装或者版本过低,需要根据报错逐步去单个安装相关的工具。这一步会很繁琐且很麻烦。所以对于不需要的功能,可以直接
--disable。
3.2 编译
因为我们不是交叉编译,也就不需要在上面的一步配置交叉编译链,这里直接编译就行。
bash
make -j16
3.3 安装
bash
make install
3.4 验证
配置环境变量以及链接库路径:
bash
# 修改 ~/.bashrc,在最后添加PATH以及LD_LIBRARY_PATH
export PATH=/usr/share/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
bash
ffmpeg -v
ffmpeg version 8.0.1 Copyright (c) 2000-2025 the FFmpeg developers
built with gcc 9 (Ubuntu 9.4.0-1ubuntu1~20.04.3)
configuration: --prefix=/usr/local --enable-gpl --enable-version3 --enable-nonfree --enable-libfdk-aac --enable-alsa --enable-static --enable-shared --enable-debug --enable-ffmpeg --enable-ffplay --enable-ffprobe --cc=gcc --enable-fontconfig --enable-frei0r --enable-gnutls --enable-gmp --enable-gray --enable-libfribidi --enable-libass --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrwb --enable-libopenjpeg --enable-librubberband --enable-libsoxr --enable-libspeex --enable-libvorbis --enable-libopus --enable-libtheora --enable-libvidstab --enable-libvo-amrwbenc --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzvbi --enable-filters --enable-demuxers --enable-muxers --enable-encoders --enable-decoders --enable-bsfs
libavutil 60. 8.100 / 60. 8.100
libavcodec 62. 11.100 / 62. 11.100
libavformat 62. 3.100 / 62. 3.100
libavdevice 62. 1.100 / 62. 1.100
libavfilter 11. 4.100 / 11. 4.100
libswscale 9. 1.100 / 9. 1.100
libswresample 6. 1.100 / 6. 1.100
3.5 动态库路径
编译出来的 .so 在 /usr/local/lib 目录下,后续开发可以从此目录获取相关库。
- 参考