马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
FFmpeg 是处理音视频的瑞士军刀,转码、切片、截图、推流都靠它。在 CentOS 上装 FFmpeg 有三条路:走官方仓库、走第三方仓库、或者自己编译。本文把这三条路的适用条件、命令和踩坑点一次讲清,方便按实际场景挑一条最省事的。
一、先分清你的 CentOS 大版本
CentOS 7 的包管理器是 yum,CentOS 8 及以后是 dnf(dnf 其实是 yum 的下一代实现,命令基本通用,下文统一写 dnf,在 7 上换成 yum 即可)。另外 CentOS Stream 9 / Rocky / Alma 8+ 同样走 dnf 这条线。判断版本用一句命令就行:
cat /etc/redhat-release
这条输出会直接告诉你是大版本 7 还是 8+,后面所有命令都以此为准。
二、方法一:EPEL 仓库直接装
这是最省事的一条路。EPEL(Extra Packages for Enterprise Linux)是 Fedora 社区维护的高质量附加源,官方源里没有的常用软件基本都在这里。
2.1 安装 EPEL 仓库
- CentOS 8 及更高版本:
sudo dnf install epel-release
- CentOS 7:执行
sudo yum install epel-release,装完后同样会生成 /etc/yum.repos.d/epel.repo
2.2 安装 FFmpeg
EPEL 装好后执行:
sudo dnf install ffmpeg
在部分小版本里 EPEL 提供的是 ffmpeg-free 这个包名,安装时如果提示找不到 ffmpeg,换成 sudo dnf install ffmpeg-free 即可。两者的区别是 free 版本用没有专利风险的编解码实现,普通转码场景完全够用。
2.3 验证
ffmpeg -version
能打印出版本号和配置项就说明装好了。
三、方法二:Negativo17 第三方仓库
EPEL 的 FFmpeg 版本往往偏保守,如果你的业务需要特定的编码器(比如 h264 硬件加速、fdk-aac),可以加 Negativo17 这个仓库。它专门提供较新的多媒体栈。
3.1 添加仓库
sudo dnf install https://copr.fedorainfracloud.org/coprs/negativo17/ffmpeg/repo/epel-8/negativo17-ffmpeg-epel-8.repo
注意这条仓库地址里的 epel-8 段落是跟着系统大版本走的,CentOS 7 上要换成 epel-7,写错会导致仓库不可用。
3.2 安装与依赖处理
加完仓库后同样是 sudo dnf install ffmpeg。这一步可能遇到 GPG 校验或者依赖冲突提示,常见处理是先跑一次 sudo dnf install epel-release 确保 EPEL 已就绪,再执行安装,多数冲突是和 EPEL 里的同类包打架。
四、方法三:源码编译安装
需要特定编译选项、特定版本、或者要启用官方仓库里没有的编码器时才走这条路。编译耗时长(普通机器 15 到 40 分钟不等),但灵活性最高。
4.1 安装编译依赖
sudo dnf install git make cmake gcc gcc-c++ autoconf automake libtool pkgconfig \
zlib-devel bzip2-devel libpng-devel libjpeg-turbo-devel libtiff-devel \
freetype-devel gmp-devel mpfr-devel libvorbis-devel libtheora-devel \
libogg-devel speex-devel lame-devel libvpx-devel x264-devel x265-dev \
openjpeg-devel opus-devel faac-devel libmp3lame-devel libwebp-devel \
libxvid-devel libass-devel libfreetype-devel libfribidi-devel \
libopenjpeg-devel libopenh264-devel libzimg-devel libfontconfig-devel
这里把依赖集中成一条,中间用反斜杠续行,复制执行更省事。
4.2 拉取源码
git clone https://github.com/FFmpeg/FFmpeg.git
cd FFmpeg
默认拉的是 master 分支。要固定版本可以先 git checkout n4.4 之类的 tag 再编译,生产环境建议这么做,避免每次重新编译得到不同结果。
4.3 配置编译选项
./configure --enable-shared --enable-gpl --enable-nonfree --enable-version3 \
--enable-libx264 --enable-libx265 --enable-libmp3lame --enable-libfdk-aac \
--enable-libopus --enable-libvorbis --enable-libvpx --enable-libass \
--enable-libfreetype --enable-libfribidi --enable-libopenjpeg \
--enable-libopenh264 --enable-pthreads --enable-libzimg --enable-libwebp \
--enable-fontconfig
几个开关的含义:--enable-shared 生成动态库,方便其他程序链接;--enable-gpl 是使用 x264/x265 这类 GPL 编码器的前提;--enable-nonfree 是为了启用 fdk-aac 这类非自由实现;--enable-version3 则与部分许可证要求相关。按需裁剪,不要无脑全开,配置项越多编译越慢。
4.4 编译与安装
make && sudo make install
4.5 清理中间产物
make distclean
编译安装的最后一步容易漏:源码安装到 /usr/local/bin,而这个路径默认可能不在 root 用户的 PATH 里,导致 ffmpeg: command not found。执行时补全路径即可:/usr/local/bin/ffmpeg -version。要永久生效,在 /etc/profile.d/ 下加一个 export PATH=/usr/local/bin PATH。
五、三条路怎么选
- 快速用上:走 EPEL,一条
dnf install 完事,适合内网工具机、容器基础镜像。
- 要新版编码器:加 Negativo17,安装成本略高但版本更新。
- 要特定编译参数:只能编译,适合有固定产线的转码服务。
六、安装后常用的几个检查
- 确认可用编码器:
ffmpeg -encoders | grep 264,能看到 libx264 说明 h264 编码可用。
- 确认可用协议:
ffmpeg -protocols,rtmp、http、rtsp 这些是否支持一目了然。
- 查依赖是否健全:
ldd /usr/local/bin/ffmpeg,出现 not found 就说明某个 -devel 包漏装了。
三种方式最终装出来的都是同一个工具,差别只在版本新旧和编码器齐全度。先想清楚你要用哪些编码格式,再倒推该走哪条路,能省掉不少返工。
qidao123.com企服评测-应用市场 编辑提示 |