FFmpeg 编译安装和静态安装

发布于:2025-08-10 ⋅ 阅读:(13) ⋅ 点赞:(0)

FFmpeg 编译安装和静态安装

简介

FFmpeg 是一个领先的多媒体框架,能够解码、编码、转码、复用、解复用、流化、过滤和播放几乎所有人类和机器创建的格式。本指南将详细介绍如何在 CentOS 8.5.2111 系统上从源代码编译并安装 FFmpeg 6.1.1 版本。从源代码编译安装可以确保您获得最新版本的功能,并可以根据您的特定需求进行定制。本博客主要依赖于 manus 生成,我通过 manus 给出的方案逐步运行并安装成功,并且我也对比了下预编译静态安装和编译安装的差别。

1. 预编译静态安装(新手推荐)

预编译静态安装是普通用户的首选,速度快操作少,只需要按照自己机器的型号和需要安装的版本进行选择,1分钟即装即用,但是缺点是有些动态库不支持,速度慢等等,但是我不是CV方向的深度用户,所以我没有卡到静态安装造成的瓶颈上

首先,我们要去官方预编译库中选择自己需要的版本,https://github.com/BtbN/FFmpeg-Builds/releases

其次,依次执行下面的命令就可以成功安装了,耗时取决于你的网速

wget 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. 更新系统

首先,更新您的系统,确保所有已安装的软件包都是最新版本。这有助于避免潜在的依赖问题。

sudo dnf update -y

2. 安装开发工具

安装编译 FFmpeg 所需的开发工具和库。Development Tools 组包含了 GCC、make 等基本编译工具。

sudo dnf groupinstall "Development Tools" -y
sudo dnf install epel-release -y
sudo dnf install git nasm yasm autoconf automake cmake libtool -y

3. 安装必要的依赖库

FFmpeg 依赖于许多第三方库来支持不同的音视频格式和功能。以下是一些常用的、推荐安装的库。您可以根据需要选择性安装。

重要提示: CentOS 8 已经停止维护,其官方仓库可能不再更新。您可能需要启用 PowerTools 或 CodeReady Linux Builder (CRB) 仓库来获取一些依赖。

启用 PowerTools 仓库 (如果尚未启用):

sudo dnf config-manager --set-enabled PowerTools

或者,对于某些较新的 CentOS 8 版本,可能需要启用 CodeReady Linux Builder (CRB) 仓库:

sudo dnf config-manager --set-enabled codeready-builder

安装依赖库:

sudo dnf install \ 
  SDL2-devel \ 
  zlib-devel \ 
  bzip2-devel \ 
  libXext-devel \ 
  libXfixes-devel \ 
  libXrandr-devel \ 
  libXrender-devel \ 
  libXv-devel \ 
  libva-devel \ 
  libvdpau-devel \ 
  alsa-lib-devel \ 
  pulseaudio-libs-devel \ 
  libwebp-devel \ 
  openjpeg2-devel \ 
  lame-devel \ 
  libvorbis-devel \ 
  libtheora-devel \ 
  libvpx-devel \ 
  x264-devel \ 
  x265-devel \ 
  opus-devel \ 
  v4l-utils-devel \ 
  frei0r-devel \ 
  libass-devel \ 
  libbluray-devel \ 
  libbs2b-devel \ 
  libcaca-devel \ 
  libcdio-paranoia-devel \ 
  libdrm-devel \ 
  libiec61883-devel \ 
  libmodplug-devel \ 
  libopenmpt-devel \ 
  librtmp-devel \ 
  libssh-devel \ 
  libv4l-devel \ 
  libxml2-devel \ 
  openal-soft-devel \ 
  openssl-devel \ 
  speex-devel \ 
  teem-devel \ 
  twolame-devel \ 
  vid.stab-devel \ 
  vo-amrwbenc-devel \ 
  wavpack-devel \ 
  yasm-devel \ 
  zimg-devel \ 
  -y

请注意,上述列表包含了很多可选的库。如果您不需要所有功能,可以只安装您需要的库。例如,如果您不需要 H.264 编码,可以不安装 x264-devel

编译和安装 FFmpeg 6.1.1

1. 下载 FFmpeg 源代码

从 FFmpeg 官方网站下载 6.1.1 版本的源代码。您可以使用 wget 命令下载。

cd /usr/local/src
sudo wget https://ffmpeg.org/releases/ffmpeg-6.1.1.tar.bz2
sudo tar -xf ffmpeg-6.1.1.tar.bz2
cd ffmpeg-6.1.1

2. 配置编译选项

进入 FFmpeg 源代码目录后,运行 ./configure 命令来配置编译选项。您可以根据需要启用或禁用特定的组件和编解码器。以下是一个常用的配置示例,包含了许多常用功能。

sudo ./configure \ 
  --prefix=/usr/local/ffmpeg \ 
  --enable-shared \ 
  --enable-gpl \ 
  --enable-nonfree \ 
  --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 \ 
  --enable-opencl \ 
  --enable-opengl \ 
  --enable-pthreads \ 
  --enable-version3 \ 
  --enable-hardcoded-tables \ 
  --enable-avfilter \ 
  --enable-postproc \ 
  --enable-runtime-cpudetect \ 
  --disable-debug \ 
  --disable-static

配置选项说明

  • --prefix=/usr/local/ffmpeg: 指定 FFmpeg 的安装路径。建议安装到 /usr/local/ 下的独立目录,以便于管理。
  • --enable-shared: 编译共享库,这对于其他程序调用 FFmpeg 库非常有用。
  • --enable-gpl: 启用 GPL 许可下的组件。如果您计划分发您的应用程序,请注意 GPL 许可的限制。
  • --enable-nonfree: 启用非自由许可下的组件,例如 x264x265。同样,请注意许可限制。
  • --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 进行安装。

sudo make -j$(nproc)
sudo make install

make -j$(nproc) 会利用所有可用的 CPU 核心进行并行编译,从而加快编译速度。

配置环境变量

为了让系统能够找到 FFmpeg 命令和库,需要配置环境变量。

1. 配置动态链接库路径

创建或编辑 /etc/ld.so.conf.d/ffmpeg.conf 文件,添加 FFmpeg 库的路径。

sudo echo "/usr/local/ffmpeg/lib" | sudo tee /etc/ld.so.conf.d/ffmpeg.conf
sudo ldconfig

ldconfig 命令会更新动态链接库缓存。

2. 配置 PATH 环境变量

将 FFmpeg 的可执行文件路径添加到系统的 PATH 环境变量中,这样您就可以在任何位置直接运行 ffmpeg 命令。

sudo echo 'export PATH="/usr/local/ffmpeg/bin:$PATH"' | sudo tee /etc/profile.d/ffmpeg.sh
source /etc/profile.d/ffmpeg.sh

为了使 PATH 环境变量永久生效,您可能需要重新登录或重启终端会话。

验证安装

安装完成后,验证 FFmpeg 是否已成功安装并可正常使用。

ffmpeg -version

网站公告

今日签到

点亮在社区的每一天
去签到