FFmpeg 编译安装和静态安装
简介
FFmpeg 是一个领先的多媒体框架,能够解码、编码、转码、复用、解复用、流化、过滤和播放几乎所有人类和机器创建的格式。本指南将详细介绍如何在 CentOS 8.5.2111 系统上从源代码编译并安装 FFmpeg 6.1.1 版本。从源代码编译安装可以确保您获得最新版本的功能,并可以根据您的特定需求进行定制。本博客主要依赖于 manus 生成,我通过 manus 给出的方案逐步运行并安装成功,并且我也对比了下预编译静态安装和编译安装的差别。
1. 预编译静态安装(新手推荐)
预编译静态安装是普通用户的首选,速度快操作少,只需要按照自己机器的型号和需要安装的版本进行选择,1分钟即装即用,但是缺点是有些动态库不支持,速度慢等等,但是我不是CV方向的深度用户,所以我没有卡到静态安装造成的瓶颈上
首先,我们要去官方预编译库中选择自己需要的版本,https://github.com/BtbN/FFmpeg-Builds/releases
其次,依次执行下面的命令就可以成功安装了,耗时取决于你的网速1
2
3
4
5
6
7
8
9
10wget https://johnvansickle.com/ffmpeg/releases/ffmpeg-6.1.1-amd64-static.tar.xz
tar xf ffmpeg-6.1.1-amd64-static.tar.xz
cd ffmpeg-n6.1-latest-linux64-gpl-6.1/bin
# 或者你可以选择添加路径的方式
sudo install -m 755 ffmpeg ffprobe /usr/local/bin
ffmpeg -version
2. 编译安装
编译安装版本选择更多,功能选择更多,对依赖包的使用更加极致,但是缺点就是安装的慢且复杂。不同的机器在编译配置的时候所需要的依赖包不同,我这里也是基于 manus 给出的建议进行罗列的,但在配置 ffmpeg configure 的时候一定不能报错,哪个包缺少或者版本依赖不对都要修改,否则在 make 编译的时候是通不过的
1. 更新系统
首先,更新您的系统,确保所有已安装的软件包都是最新版本。这有助于避免潜在的依赖问题。
1 | sudo dnf update -y |
2. 安装开发工具
安装编译 FFmpeg 所需的开发工具和库。Development Tools 组包含了 GCC、make 等基本编译工具。
1 | sudo dnf groupinstall "Development Tools" -y |
3. 安装必要的依赖库
FFmpeg 依赖于许多第三方库来支持不同的音视频格式和功能。以下是一些常用的、推荐安装的库。您可以根据需要选择性安装。
重要提示: CentOS 8 已经停止维护,其官方仓库可能不再更新。您可能需要启用 PowerTools 或 CodeReady Linux Builder (CRB) 仓库来获取一些依赖。
启用 PowerTools 仓库 (如果尚未启用):
1 | sudo dnf config-manager --set-enabled PowerTools |
或者,对于某些较新的 CentOS 8 版本,可能需要启用 CodeReady Linux Builder (CRB) 仓库:
1 | sudo dnf config-manager --set-enabled codeready-builder |
安装依赖库:
1 | sudo dnf install \ |
请注意,上述列表包含了很多可选的库。如果您不需要所有功能,可以只安装您需要的库。例如,如果您不需要 H.264 编码,可以不安装 x264-devel。
编译和安装 FFmpeg 6.1.1
1. 下载 FFmpeg 源代码
从 FFmpeg 官方网站下载 6.1.1 版本的源代码。您可以使用 wget 命令下载。
1 | cd /usr/local/src |
2. 配置编译选项
进入 FFmpeg 源代码目录后,运行 ./configure 命令来配置编译选项。您可以根据需要启用或禁用特定的组件和编解码器。以下是一个常用的配置示例,包含了许多常用功能。
1 | sudo ./configure \ |
配置选项说明:
--prefix=/usr/local/ffmpeg: 指定 FFmpeg 的安装路径。建议安装到/usr/local/下的独立目录,以便于管理。--enable-shared: 编译共享库,这对于其他程序调用 FFmpeg 库非常有用。--enable-gpl: 启用 GPL 许可下的组件。如果您计划分发您的应用程序,请注意 GPL 许可的限制。--enable-nonfree: 启用非自由许可下的组件,例如x264和x265。同样,请注意许可限制。--enable-libmp3lame,--enable-libopus,--enable-libvpx,--enable-libx264,--enable-libx265,--enable-libwebp,--enable-libtheora,--enable-libvorbis,--enable-libass,--enable-libfreetype,--enable-libfribidi,--enable-libharfbuzz,--enable-libfontconfig,--enable-libspeex,--enable-libv4l2,--enable-libxvid: 启用对特定外部库的支持。只有安装了相应的*-devel包,这些选项才能成功启用。--disable-debug: 禁用调试信息,可以减小编译后的文件大小。--disable-static: 禁用静态库编译,只编译共享库。
如果 configure 命令执行成功,它会显示一个总结,列出将要编译的组件和启用的功能。如果出现错误,通常是缺少某个依赖库,您需要根据错误信息安装相应的 *-devel 包。
3. 编译和安装
配置完成后,使用 make 命令编译 FFmpeg,然后使用 make install 进行安装。
1 | sudo make -j$(nproc) |
make -j$(nproc) 会利用所有可用的 CPU 核心进行并行编译,从而加快编译速度。
配置环境变量
为了让系统能够找到 FFmpeg 命令和库,需要配置环境变量。
1. 配置动态链接库路径
创建或编辑 /etc/ld.so.conf.d/ffmpeg.conf 文件,添加 FFmpeg 库的路径。
1 | sudo echo "/usr/local/ffmpeg/lib" | sudo tee /etc/ld.so.conf.d/ffmpeg.conf |
ldconfig 命令会更新动态链接库缓存。
2. 配置 PATH 环境变量
将 FFmpeg 的可执行文件路径添加到系统的 PATH 环境变量中,这样您就可以在任何位置直接运行 ffmpeg 命令。
1 | sudo echo 'export PATH="/usr/local/ffmpeg/bin:$PATH"' | sudo tee /etc/profile.d/ffmpeg.sh |
为了使 PATH 环境变量永久生效,您可能需要重新登录或重启终端会话。
验证安装
安装完成后,验证 FFmpeg 是否已成功安装并可正常使用。
1 | ffmpeg -version |