FFmpeg 编译安装和静态安装
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.xztar xf ffmpeg-6.1.1-amd64-static.tar.xzcd ffmpeg-n6.1-latest-linux64-gpl-6.1/bin# 或者你可以选择添加路径的方式
sudo install -m 755 ffmpeg ffprobe /usr/local/binffmpeg -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
: 启用非自由许可下的组件,例如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
进行安装。
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