[root@localhost yum.repos.d]# vi /etc/fstab
[root@localhost yum.repos.d]# cat /etc/fstab

#
# /etc/fstab
# Created by anaconda on Thu Sep 25 09:37:51 2025
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root /                       xfs     defaults        0 0
UUID=877583d9-0c26-4937-9256-b20852d0d3a6 /boot                   xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0
/dev/sr0    /mnt/centos_iso    iso9660    ro,loop    0    0

第一步

yum clean all
yum -y update  # 可选,若后续依赖报错,建议先更新
yum install -y autoconf automake bzip2 bzip2-devel cmake freetype-devel gcc gcc-c++ git libtool make pkgconfig zlib-devel

第二步 创建工作目录

用于统一管理源码和编译产物:

mkdir -p /usr/local/src/ffmpeg_sources  # 存放源码
mkdir -p /usr/local/ffmpeg              #

之前挂载的镜像是mini版的,现在挂载的是最大的版本,包比较全,

[root@localhost ~]# mount /dev/cdrom /mnt/centos_iso/
mount: /dev/sr0 is write-protected, mounting read-only
[root@localhost ~]# df -HT
Filesystem              Type      Size  Used Avail Use% Mounted on
devtmpfs                devtmpfs  498M     0  498M   0% /dev
tmpfs                   tmpfs     510M     0  510M   0% /dev/shm
tmpfs                   tmpfs     510M  8.0M  502M   2% /run
tmpfs                   tmpfs     510M     0  510M   0% /sys/fs/cgroup
/dev/mapper/centos-root xfs        19G  1.4G   17G   8% /
/dev/sda1               xfs       1.1G  144M  920M  14% /boot
/dev/sr0                iso9660   4.8G  4.8G     0 100% /mnt/centos_iso
tmpfs                   tmpfs     102M     0  102M   0% /run/user/0
[root@localhost ~]# yum clean all
Loaded plugins: fastestmirror
Cleaning repos: local
Cleaning up list of fastest mirrors
[root@localhost ~]# yum repolist
Loaded plugins: fastestmirror
Determining fastest mirrors
local                                                                            | 3.6 kB  00:00:00
(1/2): local/group_gz                                                            | 153 kB  00:00:00
(2/2): local/primary_db                                                          | 3.3 MB  00:00:00
repo id                                     repo name                                             status
local                                       CentOS-Local-Repo                                     4,070
repolist: 4,070
[root@localhost ~]# yum clean all
Loaded plugins: fastestmirror
Cleaning repos: local
Cleaning up list of fastest mirrors
[root@localhost ~]# yum makecache
Loaded plugins: fastestmirror
Determining fastest mirrors
local                                                                            | 3.6 kB  00:00:00
(1/4): local/group_gz                                                            | 153 kB  00:00:00
(2/4): local/primary_db                                                          | 3.3 MB  00:00:00
(3/4): local/other_db                                                            | 1.3 MB  00:00:00
(4/4): local/filelists_db                                                        | 3.3 MB  00:00:00
Metadata Cache Created
要安装这个
[root@localhost ~]# yum install gcc -y
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Resolving Dependencies
--> Running transaction check
---> Package gcc.x86_64 0:4.8.5-44.el7 will be installed
--> Processing Dependency: cpp = 4.8.5-44.el7 for package: gcc-4.8.5-44.el7.x86_64
--> Processing Dependency: glibc-devel >= 2.2.90-12 for package: gcc-4.8.5-44.el7.x86_64
--> Processing Dependency: libmpfr.so.4()(64bit) for package: gcc-4.8.5-44.el7.x86_64
--> Processing Dependency: libmpc.so.3()(64bit) for package: gcc-4.8.5-44.el7.x86_64
--> Running transaction check
---> Package cpp.x86_64 0:4.8.5-44.el7 will be installed
---> Package glibc-devel.x86_64 0:2.17-326.el7_9 will be installed
--> Processing Dependency: glibc-headers = 2.17-326.el7_9 for package: glibc-devel-2.17-326.el7_9.x86_64
--> Processing Dependency: glibc = 2.17-326.el7_9 for package: glibc-devel-2.17-326.el7_9.x86_64
--> Processing Dependency: glibc-headers for package: glibc-devel-2.17-326.el7_9.x86_64
---> Package libmpc.x86_64 0:1.0.1-3.el7 will be installed
---> Package mpfr.x86_64 0:3.1.1-4.el7 will be installed
--> Running transaction check
---> Package glibc.x86_64 0:2.17-317.el7 will be updated
--> Processing Dependency: glibc = 2.17-317.el7 for package: glibc-common-2.17-317.el7.x86_64
---> Package glibc.x86_64 0:2.17-326.el7_9 will be an update
---> Package glibc-headers.x86_64 0:2.17-326.el7_9 will be installed
--> Processing Dependency: kernel-headers >= 2.2.1 for package: glibc-headers-2.17-326.el7_9.x86_64
--> Processing Dependency: kernel-headers for package: glibc-headers-2.17-326.el7_9.x86_64
--> Running transaction check
---> Package glibc-common.x86_64 0:2.17-317.el7 will be updated
---> Package glibc-common.x86_64 0:2.17-326.el7_9 will be an update
---> Package kernel-headers.x86_64 0:3.10.0-1160.71.1.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

========================================================================================================
 Package                    Arch               Version                          Repository         Size
========================================================================================================
Installing:
 gcc                        x86_64             4.8.5-44.el7                     local              16 M
Installing for dependencies:
 cpp                        x86_64             4.8.5-44.el7                     local             5.9 M
 glibc-devel                x86_64             2.17-326.el7_9                   local             1.1 M
 glibc-headers              x86_64             2.17-326.el7_9                   local             691 k
 kernel-headers             x86_64             3.10.0-1160.71.1.el7             local             9.1 M
 libmpc                     x86_64             1.0.1-3.el7                      local              51 k
 mpfr                       x86_64             3.1.1-4.el7                      local             203 k
Updating for dependencies:
 glibc                      x86_64             2.17-326.el7_9                   local             3.6 M
 glibc-common               x86_64             2.17-326.el7_9                   local              12 M

Transaction Summary
========================================================================================================
Install  1 Package  (+6 Dependent packages)
Upgrade             ( 2 Dependent packages)

Total download size: 48 M
Downloading packages:
--------------------------------------------------------------------------------------------------------
Total                                                                   135 MB/s |  48 MB  00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Updating   : glibc-2.17-326.el7_9.x86_64                                                         1/11
  Updating   : glibc-common-2.17-326.el7_9.x86_64                                                  2/11
  Installing : mpfr-3.1.1-4.el7.x86_64                                                             3/11
  Installing : libmpc-1.0.1-3.el7.x86_64                                                           4/11
  Installing : cpp-4.8.5-44.el7.x86_64                                                             5/11
  Installing : kernel-headers-3.10.0-1160.71.1.el7.x86_64                                          6/11
  Installing : glibc-headers-2.17-326.el7_9.x86_64                                                 7/11
  Installing : glibc-devel-2.17-326.el7_9.x86_64                                                   8/11
  Installing : gcc-4.8.5-44.el7.x86_64                                                             9/11
  Cleanup    : glibc-2.17-317.el7.x86_64                                                          10/11
  Cleanup    : glibc-common-2.17-317.el7.x86_64                                                   11/11
  Verifying  : glibc-common-2.17-326.el7_9.x86_64                                                  1/11
  Verifying  : glibc-2.17-326.el7_9.x86_64                                                         2/11
  Verifying  : mpfr-3.1.1-4.el7.x86_64                                                             3/11
  Verifying  : glibc-devel-2.17-326.el7_9.x86_64                                                   4/11
  Verifying  : cpp-4.8.5-44.el7.x86_64                                                             5/11
  Verifying  : glibc-headers-2.17-326.el7_9.x86_64                                                 6/11
  Verifying  : gcc-4.8.5-44.el7.x86_64                                                             7/11
  Verifying  : libmpc-1.0.1-3.el7.x86_64                                                           8/11
  Verifying  : kernel-headers-3.10.0-1160.71.1.el7.x86_64                                          9/11
  Verifying  : glibc-2.17-317.el7.x86_64                                                          10/11
  Verifying  : glibc-common-2.17-317.el7.x86_64                                                   11/11

Installed:
  gcc.x86_64 0:4.8.5-44.el7

Dependency Installed:
  cpp.x86_64 0:4.8.5-44.el7                       glibc-devel.x86_64 0:2.17-326.el7_9
  glibc-headers.x86_64 0:2.17-326.el7_9           kernel-headers.x86_64 0:3.10.0-1160.71.1.el7
  libmpc.x86_64 0:1.0.1-3.el7                     mpfr.x86_64 0:3.1.1-4.el7

Dependency Updated:
  glibc.x86_64 0:2.17-326.el7_9                   glibc-common.x86_64 0:2.17-326.el7_9

Complete!
[root@localhost ~]# gcc --version
gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44)
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

[root@localhost ~]# cd /usr/local/src/ffmpeg_sources/nasm-3.00rc12
[root@localhost nasm-3.00rc12]# ./configure --prefix="/usr/local/ffmpeg" --bindir="/usr/local/ffmpeg/bin"


====================================================
[root@localhost nasm-3.00rc12]# nasm -v
-bash: nasm: command not found
[root@localhost nasm-3.00rc12]# vi /etc/profile
添加这个到末尾 export PATH=$PATH:/usr/local/ffmpeg/bin'
使用 echo 命令(推荐)
这是最直接、最不容易出错的方法,尤其适合在脚本中使用。
bash
# 使用 echo 命令将内容追加到文件末尾
echo 'export PATH=$PATH:/usr/local/ffmpeg/bin' >> /etc/profile
让文件生效,使用source /etc/profile 
===================================================================================






cd /usr/local/src/ffmpeg_sources
curl -O -L https://www.nasm.us/pub/nasm/releasebuilds/2.16.01/nasm-2.16.01.tar.bz2
tar -jxvf nasm-2.16.01.tar.bz2
cd nasm-2.16.01
./configure --prefix="/usr/local/ffmpeg" --bindir="/usr/local/ffmpeg/bin"
make
make install

# Yasm
cd /usr/local/src/ffmpeg_sources
curl -O -L https://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz
tar -zxvf yasm-1.3.0.tar.gz
cd yasm-1.3.0
./configure --prefix="/usr/local/ffmpeg" --bindir="/usr/local/ffmpeg/bin"
make
make install

2. 安装视频编码器

bash

# x264 (H.264 编码器)
cd /usr/local/src/ffmpeg_sources
curl -O -L https://code.videolan.org/videolan/x264/-/archive/master/x264-master.tar.bz2
tar -jxvf x264-master.tar.bz2
cd x264-master
PKG_CONFIG_PATH="/usr/local/ffmpeg/lib/pkgconfig" ./configure --prefix="/usr/local/ffmpeg" --bindir="/usr/local/ffmpeg/bin" --enable-static
make
make install
cd /usr/local/src/ffmpeg_sources
curl -O -L http://ftp.videolan.org/pub/videolan/x265/x265_3.5.tar.gz
tar -zxvf 3.5.tar.gz
cd x265-3.5/build/linux
cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="/usr/local/ffmpeg" -DENABLE_SHARED=off ../../source
make
make install

3. 安装音频编码器

bash

# fdk-aac (高质量 AAC 编码器)
cd /usr/local/src/ffmpeg_sources
curl -O -L https://github.com/mstorsjo/fdk-aac/archive/refs/tags/v2.0.3.tar.gz
tar -zxvf v2.0.3.tar.gz
cd fdk-aac-2.0.3
autoreconf -fiv
./configure --prefix="/usr/local/ffmpeg" --disable-shared
make
make install


# LAME (MP3 编码器)
cd /usr/local/src/ffmpeg_sources
curl -O -L https://nchc.dl.sourceforge.net/project/lame/lame/3.100/lame-3.100.tar.gz
tar -zxvf lame-3.100.tar.gz
cd lame-3.100
./configure --prefix="/usr/local/ffmpeg" --bindir="/usr/local/ffmpeg/bin" --disable-shared --enable-nasm
make
make install

备份并替换 epel.repo 文件
执行以下命令,它会用一个指向阿里云 EPEL 镜像的干净配置来替换你现有的 epel.repo 文件。
bash
# 1. 备份当前的 epel.repo 文件,以防万一
mv /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo.bak

# 2. 创建一个新的 epel.repo 文件,内容指向阿里云镜像
cat > /etc/yum.repos.d/epel.repo << 'EOF'
[epel]
name=Extra Packages for Enterprise Linux 7 - $basearch
baseurl=http://mirrors.aliyun.com/epel/7/$basearch
enabled=1
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/epel/RPM-GPG-KEY-EPEL-7
EOF
为什么这个方法能行?
固定 baseurl:我们直接写死了 baseurl,使用了国内速度飞快的阿里云镜像,避免了 yum 去解析可能出错的 metalink。
简化配置:这个配置非常简洁,yum 很容易处理,不会出错。
步骤 2:清理并重建缓存(关键!)
现在配置文件已经是最简洁可靠的版本了,我们必须再次清理旧的、可能已损坏的缓存。
bash
yum clean all
yum makecache
这次执行 yum makecache,你应该能看到 epel 源被成功处理,不再报错。
步骤 3:再次尝试安装
缓存重建成功后,yum 就可以从阿里云镜像中找到并下载软件包了。
bash
yum install -y meson ninja-build
./configure --prefix="/usr/local/ffmpeg"  \
--pkg-config-flags="--static" \
--extra-cflags="-I/usr/local/ffmpeg/include" \
--extra-ldflags="-L/usr/local/ffmpeg/lib" \
--extra-libs="-lpthread -lm" \
--bindir="/usr/local/bin" \
--enable-gpl \
--enable-nonfree \
--enable-libfdk-aac \
--enable-libmp3lame \
--enable-libx264 \
--enable-libx265
# 1. 确认 PKG_CONFIG_PATH 环境变量正确,这能帮助 ffmpeg 找到你安装的库
export PKG_CONFIG_PATH="/usr/local/ffmpeg/lib/pkgconfig"

# 2. 运行 configure 命令 (已移除 opus和vpx)
./configure --prefix="/usr/local/ffmpeg"  \
--pkg-config-flags="--static" \
--extra-cflags="-I/usr/local/ffmpeg/include" \
--extra-ldflags="-L/usr/local/ffmpeg/lib" \
--extra-libs="-lpthread -lm" \
--bindir="/usr/local/bin" \
--enable-gpl \
--enable-nonfree \
--enable-libfdk-aac \
--enable-libmp3lame \
--enable-libx264 \
--enable-libx265

# 3. 编译 (使用多线程加速,速度更快)
make -j$(nproc)

# 4. 安装
make install

# 5. 验证安装
echo "编译安装完成!正在验证..."
ffmpeg -version

echo "----------------------------------------"
echo "你编译的 ffmpeg 支持的编码器和解码器如下:"
echo "支持的音频编码器 (包含 fdk_aac, mp3lame):"
ffmpeg -encoders | grep -E "fdk_aac|mp3lame"

echo "----------------------------------------"
echo "支持的视频编码器 (包含 libx264, libx265):"
ffmpeg -encoders | grep -E "libx264|libx265"

总结

这就是最后的完整步骤了。执行完之后,你就会拥有一个功能强大的 ffmpeg,它支持:

  • 音频编码: AAC (via libfdk-aac), MP3 (via libmp3lame)

  • 视频编码: H.264 (via libx264), H.265/HEVC (via libx265)

虽然它不支持 Opus 音频和 VP8/VP9 视频,但对于绝大多数应用场景来说,这已经是一个非常实用和强大的组合了。