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

news2024/11/17 13:25:24

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

echarts数据可视化模板相互影响

问题 echarts数据可视化模板相互影响 详细问题 echarts数据可视化模板相互影响,笔者使用由CSSJavaScriptHTML实现的echarts数据可视化模板,对于其中的子图(图A,位于boxA.js下与图B位于boxB.js下)进行数据下钻,更改option配置后&#xff0c…

苹果正在研发具备智能家居显示功能的外接显示器,具备低功耗模式

据彭博社记者 Mark Gurman 在他最新一期的 Power On 时事通讯中报道,苹果公司正致力于研发一款新的 Mac 外接显示器,具备智能家居设备显示器的低功耗模式功能。 根据了解,这款显示器将集成iOS设备芯片,与Studio Display不同的是&a…

最短路径相关算法

文章目录 图论中的图属性最短路径算法- Dijkstra算法1. 算法介绍2. 适用场景3. 场景举例 - Bellman-Ford算法1. 算法介绍2. 适用场景3. 场景举例 - Floyd-Warshall算法1. 算法介绍2. 适用场景3. 场景举例 具体实现方案- JGraphT 小结 图论中的图属性 图论中,图的属…

SpringMVC (三) RestFul和控制器

学习回顾:SpringMVC (一) 什么是SpringMVC 现在我们来看看里面的控制器和路径请求的具体内容吧! 一、控制器Controller 控制器复杂提供访问应用程序的行为,通常通过接口定义或注解定义两种方法实现。控制器负责解析用户…

如何在Centos7下安装Nginx

一、Nginx简介 Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器 ,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,公开版本1.19.6…

Self-attention Transformer

参考资料: 《机器学习》李宏毅 1 Self-attention 当模型输入为长度不定的向量序列时(如一段文字、一段语音、图模型),要求模型输出为等长的向量序列(序列标注)时,可以使用 Self-attention S…

文件的概念 + 文件的相对/绝对路径 + 文件IO字符流 / 字节流的读写操作 (java)

文章目录 前言一、文件是什么1.文件的概念2.文件路径1.绝对路径2.相对路径 二、针对文件的IO1.File类2.对文件内容的读写操作1.针对文本文件—— 字符流输入流 Reader类输出流 Writer类 2.针对二进制文件—— 字节流输入流 InputStream类输出流 OutputStream类 总结 前言 本人…

《Reinforcement Learning: An Introduction》第7章笔记

Chapter 7 n-step Bootstrapping 本章的n-step TD方法是前两章的Monte Carlo 方法和one-step TD方法的推广。它使自举法在多个时间步内进行,解决了前两章中的更新时间步不灵活的问题。 7.1 n-step TD Prediction 在用策略 π \pi π下生成的采样回合序列来估计 v…

UE5 MetaHuman SDK插件的使用【一、编辑器创建音波与蓝图创建获取音波,音波与嘴唇的同步】

目录 打开插件 创建音频 编辑器这直接创建音频: 蓝图中创建和获取音频: 唇语: 声音与嘴唇同步: 方法一【效果不是很好】: 方法二【效果很好,但有一段时间延迟在处理】: 逻辑&#xff1…

Spring Boot 中的微服务架构:原理和使用

Spring Boot 中的微服务架构:原理和使用 什么是微服务架构? 微服务架构是一种软件架构模式,它将一个应用程序分解成一组小的、松散耦合的服务。每个服务都有独立的进程和数据存储,可以独立地开发、部署、测试和扩展。这种架构模…

最新AI创作系统ChatGPT网站源码+新增GPT联网功能+支持GPT4+支持ai绘画+实时语音识别输入

最新AI创作系统ChatGPT网站源码新增GPT联网功能支持GPT4支持ai绘画实时语音识别输入 一、AI创作系统二、系统介绍三、系统程序下载四、安装教程五、其他主要功能展示六、更新日志 一、AI创作系统 提问:程序已经支持GPT3.5、GPT4.0接口、支持新建会话,上…

常见面试题之ThreadLocal的理解

1. ThreadLocal概述 ThreadLocal是多线程中对于解决线程安全的一个操作类,它会为每个线程都分配一个独立的线程副本从而解决了变量并发访问冲突的问题。ThreadLocal同时实现了线程内的资源共享 案例:使用JDBC操作数据库时,会将每一个线程的…

常微分方程的解题思路

通解:独立常数的个数等于微分方程的阶数,独立常数的个数实际上就是 c 1 , c 2 , . . . , c n c_1,c_2,...,c_n c1​,c2​,...,cn​是数目 所以补 C C C也是关键的一步,而且未必是 C C C,也可以是 ln ⁡ C \ln C lnC之类的&…

HPM6750系列--第六篇 创建自己的工程

一、目的 细心的朋友可能会发现官方提供了HPM-Sdk仓库,示例代码都是作为一个文件夹的形式放在此仓库下,我们之前都是直接拷贝里面的工程进行演示。 下面我们就具体来分析一下hello_world工程的文件组成,这样我们就可以创建自己的工程。 二、…

vscode里vue文件内<template>标签报错

发现只要把文件名使用驼峰命名法,把Login.vue改为LoginView.vue就不报错了加个大写的View就没有了。 官方参考文档:vue/multi-word-component-names | eslint-plugin-vue

说说@EnableConfigurationProperties那点事

两者的对比 ConfigurationProperties 使用ConfigurationProperties的时候,把配置类的属性与yml配置文件绑定起来的时候,还需要加上Component注解才能绑定并注入IOC容器中,若不加上Component,则会无效。 EnableConfigurationPro…

Mybatis 入门及实践

Mybatis 入门及实践 文章目录 Mybatis 入门及实践前言一. 简介二. 入手案例2.1 前置准备2.1.1 Maven依赖2.1.2 sql准备2.1.3 Log4j2 配置1. Maven引入2. log4j2.xml 2.2 代码流程构建步骤2.2.1 Mybatis前置知识2.2.2 步骤流程2.2.3 代码实现 三. XML映射器前置代码3.1 select3.…

【网络编程】网络编程套接字(一)

文章目录 网络编程预备知识认识端口号理解源端口号和目的端口号认识TCP协议和UDP协议网络字节序sockaddr结构1.socket 常见API2.sockaddr结构 网络编程预备知识 认识端口号 端口号(port)是传输层协议的内容. 端口号是一个2字节16位的整数; 端口号用来标识一个进程, 告诉操作系…

Linux :LNMP(源码包安装)

Linux 虚拟机 VMware:安装centos7_鲍海超-GNUBHCkalitarro的博客-CSDN博客 物理机 linux:真机安装centos linux(突发事件:解决卡在安装界面){寻找镜像--u启制作--引导u盘--解决卡在安装界面--安装配置}_安装centos7卡…

Linux--文件/目录权限

看懂权限: 拥有者:文件属于谁 所属组:文件属于哪个组 other:不属于上面两种的任何一个,就是other 图示: 分析: ①第一列: d:目录 -:普通文件 p:管道文件 b:块设备 c:字符设备 l:链接…