离线安装ffmpeg源码包【详细教程】

今天分享一下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 ~/.bashrcsource ~/.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`)中,但在更改系统范围的配置文件时要格外小心,确保您知道自己在做什么。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/35109.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ss客服让您在Facebook 的客户服务更便捷

ss客服让您在Facebook Messenger 的客户服务更便捷 在这个信息时代,新兴通讯软件蓬勃兴起,比如Facebook Messenger。事实证明,这对企业来说非常有利,同时突出了电子邮件、网络聊天和电话等传统渠道的局限性。在传统渠道上&#xf…

PostGIS(2):PostGreSQL数据库空间扩展模块安装

正式开始解读PostGIS 3.1.10文档之前,我们还是先简单叙述一下如何安装PostGIS。 从引言篇已经了解到:PostGIS是对象关系型数据库PostGreSQL的一个拓展模块。既然如此,我们必须先安装PostGreSQL数据库(详细教程可参考:P…

Cocos2dx学习笔记:浅谈游戏内的适配方案

前言 本篇在讲什么 Cocos2dx中的适配方案 本篇适合什么 适合初学Cocos的小白 本篇需要什么 对Lua语法有简单认知 依赖Cocos2dx3.15环境 依赖Sublime Text编辑器 依赖VS 2015编辑器 本篇的特色 具有全流程的图文教学 重实践,轻理论,快速上手…

【软件测试】盘一盘工作中遇到的 Redis 异常测试

目录 前言: 一、更新 Key 异常 二、Key的删除和丢失 三、KEY 过期策略不当造成内存泄漏 四、查询Redis异常时处理 五、redis 穿透、击穿、雪崩 六、Redis死锁 七、Redis持久化 八、缓存与数据库双写时的数据一致性 前言: 在软件测试过程中&…

Centos安装RabbitMQ

#安装 yum install rabbitmq-server #启动 systemctl start rabbitmq-server #查看状态 systemctl status rabbitmg-server #安装管理插件 rabbitmg-plugins enable rabbitmg_management #新增admin账号 rabbitmqctl add_user admin admin #设置为管理员 rabbitmqctl set_user_…

计算机组成原理实验一:一位逻辑门构建

目录 一、实验目的 二、实验设备 三、实验原理 四、实验内容 1.一位非门 2.一位与门 3.一位或门 4.一位复用器 5.一位多路选择器 五、实验习题 如果只使用或非门搭建与、或和非门,该如何设计各芯片的物理结构? 六、自主设计——采用与或非门…

Word表格设置边框不生效的解决方法

1、这是新建并随意设置的表格,可以看出来上边框、内边框和下边框都是不同的粗细,很不协调。 2、选中表格,然后右击——>表格属性——>边框和底纹。 3、三线表,一般上边框和下边框都是1磅,内边框是0.5磅&#xff…

SpringSecurity对CSRF的支持实践

【1】什么是CSRF 跨站请求伪造(英语:Cross-site request forgery),也被称为 one-click attack 或者 session riding,通常缩写为 CSRF 或者 XSRF, 是一种挟制用户在当前已登录的Web应用程序上执行非本意的操…

【远程开发】VSCode使用Remote SSH远程连接Linux服务器

文章目录 前言1、安装OpenSSH2、vscode配置ssh3. 局域网测试连接远程服务器4. 公网远程连接4.1 ubuntu安装cpolar4.2 创建隧道映射4.3 测试公网远程连接 5. 配置固定TCP端口地址5.1 保留一个固定TCP端口地址5.2 配置固定TCP端口地址5.3 测试固定公网地址远程 转载自cpolar极点云…

MSP432自主开发笔记2:八路寻迹模块的编程

今日得以继续我的MSP432学习之路,今日学习八路寻迹模块的编程与测试: 本章需要掌握的知识只有俩个:串口通信发送数据、GPIO基础初始化与获取电平状态 这俩个在我专栏里都可寻到,大家可以自行查找~~ 八路灰度寻迹模块的原理与应用…

MySQL:子查询(全面详解)

MySQL:子查询 前言一、需求分析与问题解决1、实际问题2、子查询的基本使用3、子查询的分类 二、单行子查询1、单行比较操作符2、代码示例3、HAVING 中的子查询4、CASE中的子查询5、子查询中的空值问题6、非法使用子查询 三、多行子查询1、多行比较操作符2、代码示例…

pyodbc读取.mdb文件时出现[ODBC Microsoft Access Driver] 网络访问已中断。请关闭数据库.....解决方法

在使用pyodbc读取.mdb文件时出现下面的错误 : ODBC Microsoft Access Driver] 网络访问已中断。若要继续,请关闭数据库,然后再将其打开。 (-1022) (SQLDriverConnect) 网上找了很多方法,最后通过下面的方法解决了,就是安装64位的…

Flink写入数据到ClickHouse

文章目录 1.ClickHouse建表1.ClickHouse依赖2.Bean实体类3.ClickHouse业务写入逻辑4.测试写入类5.发送数据 1.ClickHouse建表 ClickHouse中建表 CREATE TABLE default.test_write (id UInt16,name String,age UInt16 ) ENGINE TinyLog();1.ClickHouse依赖 Flink开发相关…

【文生图系列】文生图大模型合集与效果对比

文章目录 DELL EDELL E 1DELL E 2 ERNIE-ViLGERNIE-ViLG 1ERNIE-ViLG 2Paddlehub ImagenMidjourneyStable DiffusionAltDiffusioneDiff-I阿里通义 DELL E DALLE到目前为止有两个版本,2021年1月,OpenAI发布了DALLE;2022年,DALLE 迎来了升…

【电影推荐系统】实时推荐

目录 原因 由于实时性,所以算法设计需要满足一下两点 算法设计 算法实现 算法公式 完整代码 原因 用户对电影的偏好随着时间的推移总是会发生变化的。此时离线系统无法解决,需要实时推荐。 由于实时性,所以算法设计需要满足一下两点 …

Go语言远程调试

Go语言远程调试 1、安装dlv # 安装dlv $ go install github.com/go-delve/delve/cmd/dlvlatest$ dlv version Delve Debugger Version: 1.20.1 Build: $Id: 96e65b6c615845d42e0e31d903f6475b0e4ece6e $2、命令行远程调试 我们远程(Linux服务器)有如下代码: [ro…

自学大语言模型之GPT

GPT火爆的发展史 2017年6月OpenAI联合DeepMind首次正式提出的:Deep Reinforcement Learning from Human Preferences,即基于人类偏好的深度强化学习,简称RLHF 2017年7月的OpenAI团队提出的对TRPO算法的改进:PPO算法 GPT-1&#…

Tomcat的优化多实例部署

目录 一.tomcat核心组件模块 1.2. toncat功能组件结构 二.Tomcat 优化 三.简述Tomcat请求过程 四.Tomcat 多实例部署 多实例部署图示 1.关闭防火墙 拖入软件包 2.安装JDk 设置JDK环境变量 3.解压tomcat 创建目录 4.配置 tomcat 环境变量 5.修改 tomcat2 中的 server.xm…

学习系统编程No.29【线程执行过程之页表详解】

引言: 北京时间:2023/7/3/14:09,刚睡醒,放假在家起床时间确实不怎么好调整,根本固定不了一点,当然通俗点说也就是根本起不来,哈哈哈,已经很少见到那种7点起来码字的情形了&#xff…

UART-GD32

UART-GD32 通信的概念 同步通信和异步通信 数据帧格式 波特率 使用步骤 引脚分布