当前位置: 首页 > news >正文

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: 启用非自由许可下的组件,例如 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
http://www.dtcms.com/a/321754.html

相关文章:

  • 12、GPIO介绍
  • Redis7集群搭建与原理分析
  • element plus table 表格操作列根据按钮数量自适应宽度
  • 从引导加载程序到sysfs:Linux设备树的完整解析与驱动绑定机制
  • 您与此网站之间建立的连接不安全
  • 智慧园区漏检率↓82%:陌讯多模态融合算法实战解析
  • 防御保护09
  • 【从0到1制作一块STM32开发板】6. PCB布线--信号部分
  • 手机拍照识别中模糊场景准确率↑37%:陌讯动态适配算法实战解析
  • 二、k8s 1.29 之 网络
  • OpenAI 的 GPT-5 来了
  • GO的启动流程(GMP模型/内存)
  • 要写新项目了,运行老Django项目找找记忆先
  • Redis(②-持久化)
  • 写一个redis客户端软件,参考 Another Redis Desktop Manager 的设计风格。
  • 【沉浸式解决问题】pycharm关闭科学模式
  • Docker Compose 实战指南:从配置到多容器联动的全流程解析
  • Linux系统编程Day9 -- 理解计算机的软硬件管理
  • Dijkstra?spfa?SPstra?
  • 01Vue3
  • 增长强势 成果丰硕 | Fortinet发布2025年第二季度财报
  • GPT-5正式发布:与Claude 4、Gemini 2.5等主流大模型谁更胜一筹?
  • Java中重写和重载有哪些区别
  • 大模型——部署体验gpt-oss-20b
  • 写论文助手Zotero 的使用
  • Scrapy返回200但无数据?可能是Cookies或Session问题
  • electron 静默安装同时安装完成后自动启动(nsis)
  • 【vLLM 学习】Load Sharded State
  • VB网际探针:零依赖轻量爬虫实战
  • GPT-5 is here