今天分享一下ffmpeg源码包的安装过程,针对在没有网络环境下,且不能直接使用yum如何成功安装ffmpeg源码包。博主本人通过正式服务器测试,记录整个安装过程。值得大家收藏
同时,我会分享一下如何使用ffmpeg对H.264格式视频(MP4)进行m3u8+ts切片的转换,并生成m3u8+ts格式文件
ffmpeg所需要环境和依赖包
1.操作系统,CentOS7
2.依赖包
(1)gcc++编译源码的必须环境
(2)yasm:yasm是一种汇编语言编译器,用于将x86和x86-64指令集的汇编代码转换为可执行的二进制机器代码。它用于优化和加速性能敏感的计算密集型任务,如视频编解码、音频处理和图形渲染
(3)nasm:它是libx264的依赖包,需要先安装nasm,再安装libx264
(4)libx264:libx264是一个高性能的视频编码库,用于将视频压缩为H.264或AVC(Advanced Video Coding)格式。它提供了广泛的编码参数和配置选项,可用于实现高质量的视频压缩,并在低比特率下实现更好的视频质量。libx264广泛应用于视频编码和压缩领域,例如视频流媒体、实时视频通信、视频存储与传输以及多媒体应用开发。它是许多视频编码软件、多媒体框架和应用程序中的核心组件之一。
3.安装步骤
(1)检测gcc++是否已安装,一般情况下安装好的CentOS7都自带了gcc++的环境。若没有需要自行安装一下
[root@localhost ~]# gcc --version
gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44)
Copyright © 2015 Free Software Foundation, Inc.
本程序是自由软件;请参看源代码的版权声明。本软件没有任何担保;
包括没有适销性和某一专用目的下的适用性担保。
(2)安装yasm源码包
第一:源码地址,http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz
第二:解压源码
[root@localhost ffmpeg]# tar xvf yasm-1.3.0.tar.gz
第三:进入源码包,开始进行安装源码操作,安装后默认安装路径/usr/local
[root@localhost ffmpeg]# cd yasm-1.3.0
[root@localhost yasm-1.3.0]# ./configure
第四:make进行编译
[root@localhost yasm-1.3.0]# make
第五:make install进行安装
[root@localhost yasm-1.3.0]# make install
第六:检测是否可以使用
[root@localhost yasm-1.3.0]# yasm --version
若yasm出现"not command"的提示,则表示环境变量出现问题,大家可以通过bashrc添加环境变量的路径,并进行永久生效的,参考如下
1. 找到yasm安装路径:首先,确定yasm已成功安装并找到其安装路径。默认情况下,yasm安装在`/usr/local/bin`目录中,但也可能安装在其他位置。
2. 打开bash配置文件:使用文本编辑器(如vi、nano等)打开bash配置文件。通常,该文件是`~/.bashrc`或`~/.bash_profile`。
使用以下命令打开`~/.bashrc`文件:
```
vi ~/.bashrc
```
或使用以下命令打开`~/.bash_profile`文件:
```
vi ~/.bash_profile
```
3. 添加yasm的路径到环境变量:在打开的bash配置文件中,找到以下行(如果不存在,请添加):
```
export PATH=
```
在上面的行下方,添加yasm的安装路径。例如,如果yasm的安装路径是`/usr/local/bin`,添加以下行:
```
export PATH=$PATH:/usr/local/bin
```
保存文件并关闭文本编辑器。
4. 更新环境变量:在终端中运行以下命令,以使新的环境变量生效:
```
source ~/.bashrc
```
或者,如果你编辑的是`~/.bash_profile`文件,则运行以下命令:
```
source ~/.bash_profile
```
5. 验证环境变量:最后,运行以下命令来验证yasm的环境变量是否已配置成功:
```
echo $PATH
```
输出结果中,应该包含你添加的yasm安装路径(例如`/usr/local/bin`)。
完成上述步骤后,yasm的环境变量配置应该已完成。现在,你可以在终端中运行`yasm`命令,而无需提供完整路径,系统会自动找到它。
请注意,如果使用其他shell(如zsh)或其他配置文件(如`~/.zshrc`),则需要相应地进行修改和更新。此外,确保提供正确的yasm安装路径。
(3)安装nasm源码包
第一:nasm官方地址下载
wget https://www.nasm.us/pub/nasm/releasebuilds/2.14.02/nasm-2.14.02.tar.gz
第二:解压nasm-2.14.02.tar.gz源码包
[root@localhost ffmpeg]# tar xvf nasm-2.14.02.tar.gz
第三:配置安装nasm
[root@localhost ffmpeg]# cd nasm-2.14.02
[root@localhost nasm-2.14.02]# ./configure
第四:make进行编译
[root@localhost nasm-2.14.02]# make
第五:make install 安装
[root@localhost nasm-2.14.02]# make install
第六:进行检测
[root@localhost nasm-2.14.02]# nasm -v
(4)安装libx264
第一:下载libx264源代码:
wget https://code.videolan.org/videolan/x264/-/archive/master/x264-master.tar.gz
第二:解压libx264
[root@localhost ffmpeg]# tar xvf x264-master.tar.gz
第三:进入x264目录,然后进行./configure配置
[root@localhost ffmpeg]# cd x264-master
[root@localhost x264-master]# ./configure --enable-shared
第四:make编译
[root@localhost x264-master]# make
第五:make install安装
[root@localhost x264-master]# make install
第六:检测安装
[root@localhost x264-master]# x264 --version
(5)安装ffmpeg,版本号4.4.1,大家可以去官方选择适合自己的版本号
第一:官方下载地址
# 下面两个地址都可以访问
http://ffmpeg.org/releases/ffmpeg-4.4.4.tar.gz
http://www.ffmpeg.org/releases/
第二:解压源码包
[root@localhost ffmpeg]# tar xvf ffmpeg-4.4.1.tar.gz
第三:配置
[root@localhost ffmpeg]# cd ffmpeg-4.4.1
[root@localhost ffmpeg-4.4.1]# ./configure --enable-gpl --enable-libx264 --enable-nonfree --enable-shared
参数说明
- --enable-shared:确保在编译时启用
--enable-shared
参数,以生成动态链接库文件 - --enable-nonfree:
--enable-nonfree
是 FFmpeg 的配置选项之一,它表示启用非免费(Non-Free)的功能和编解码器。FFmpeg 默认情况下只包含免费开源的编解码器和功能,这是出于遵守开源许可证的原因 - --enable-libx264:开启X264解码库
第四:make编译,此过程比较长
[root@localhost ffmpeg-4.4.1]# make
第五:make install安装
[root@localhost ffmpeg-4.4.1]# make install
第六:检测
[root@localhost ffmpeg-4.4.1]# ffmpeg --version
提示报错:
[root@localhost ffmpeg-4.4.1]# ffmpeg --version
ffmpeg: error while loading shared libraries: libavdevice.so.58: cannot open shared object file: No such file or directory
原因:系统没有成功加载ffmpeg的动态库文件,在 CentOS 7 中,当您通过源代码编译安装 FFmpeg 时,默认生成的动态链接库文件会安装在 /usr/local/lib
目录下
解决方法
- 验证 FFmpeg 是否已经被安装
[root@localhost /]# find /usr/local/bin
- 安装完成后,您可以进入
/usr/local/lib
目录,使用ls
命令查看是否已经安装了 FFmpeg 的动态链接库文件
ls /usr/local/lib/ | grep libav
上述命令将列出以 "libav" 开头的文件,这些就是 FFmpeg 的动态链接库文件
- 临时设置ffmpeg动态库方法
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
注意:如果您希望每次启动终端时都自动设置此环境变量,可以将上述命令添加到您的 ~/.bashrc
或 ~/.bash_profile
文件中。然后,运行 source ~/.bashrc
或 source ~/.bash_profile
使其立即生效
- 永久设置ffmpeg动态链接库方法
在 CentOS 7 上,您可以通过编辑 `~/.bashrc` 文件,将 FFmpeg 的动态链接库路径添加到 `LD_LIBRARY_PATH` 环境变量中,以便在每次打开新的终端时加载 FFmpeg 的动态链接库。
请按照以下步骤进行操作:
1. 打开终端,登录到您的用户账户。
2. 使用文本编辑器(如 `nano` 或 `vi`)打开 `~/.bashrc` 文件:
```
nano ~/.bashrc
```
或
```
vi ~/.bashrc
```
3. 在 `~/.bashrc` 文件中,添加以下行:
```bash
export LD_LIBRARY_PATH="/path/to/your/ffmpeg/libs:$LD_LIBRARY_PATH"
```
将 `/path/to/your/ffmpeg/libs` 替换为您实际安装 FFmpeg 动态链接库的目录路径。
4. 保存并关闭文件。
5. 使修改生效。可以通过运行以下命令重新加载 `~/.bashrc` 文件,或者直接注销并重新登录:
```
source ~/.bashrc
```
6. 现在,每当您打开新的终端时,FFmpeg 的动态链接库将自动添加到 `LD_LIBRARY_PATH` 环境变量中,使系统能够找到 FFmpeg 的库文件。
请注意,这样设置后,只有当前用户的终端会自动加载 FFmpeg 的动态链接库。如果您希望对所有用户生效,可以考虑将设置添加到系统范围的配置文件(例如 `/etc/bashrc`)中,但在更改系统范围的配置文件时要格外小心,确保您知道自己在做什么。