当前位置: 首页 > news >正文

02.Linux下安装FFmpeg

目录

一、下载FFmpeg的编译源码

二、编译源码

三、ffmpeg工具结构解析

1、bin目录

2、include库

3、lib库

四、注意事项

五、可能出现的一些问题

1、某些工具未安装/版本过久

2、缺少pkg-config工具

3、缺少ffmplay


        FFmpeg 是一个开源的跨平台音视频处理工具集,它包含了一系列的程序、库和工具,用于录制、转换和流处理音视频文件和流媒体。

一、下载FFmpeg的编译源码

        进入网站:http://ffmpeg.org/download.html

        

        在网站中先择git地址进行下载。如果git下载比较慢,也可以将选择浏览器下载后转移到Linux虚拟机中或直接在Ubuntu的内置浏览器中进行下载。

二、编译源码

        执行下述命令:

./configure --prefix=/usr/local/ffmpeg --enable-debug=3 --enable-ffplay
sudo make -j 4
sudo make install

        如果编译成功,那么将会在安装路径/user/local/ffmpeg下出现如下子目录

三、ffmpeg工具结构解析

        下面我们来看一下安装好的ffmpeg中的这些子目录中我们需要使用到的东西

  • bin:

    • bin 目录一般存放可执行文件(binaries),即程序的二进制文件。在 FFmpeg 中,这个目录存放了 ffmpegffplayffprobe 等命令行工具的可执行文件。当你在终端中输入命令时,系统会在这个目录中查找对应的可执行文件来执行命令。
  • include:

    • include 目录通常存放头文件(header files),这些文件包含了程序接口的声明和定义,供开发者在自己的程序中引用和调用。在 FFmpeg 中,这个目录存放了各个模块的头文件,如 libavcodeclibavformat 等模块的头文件,允许开发者在自己的代码中使用 FFmpeg 的功能。
  • lib:

    • lib 目录一般存放库文件(libraries),这些文件包含了程序在编译时链接的代码和函数。在 FFmpeg 中,这个目录存放了各个模块的静态库文件(如 .a 文件)和动态库文件(如 .so 文件),供开发者在自己的应用程序中链接使用 FFmpeg 提供的功能。
  • share:

    • share 目录通常存放共享文件(shared data),这些文件可以被多个程序或者用户共享使用。在 FFmpeg 中,这个目录可能包含一些共享的配置文件、文档或者其他资源文件,帮助用户更好地使用和理解 FFmpeg 的功能和特性。

1、bin目录

        重点主要在于bin目录下的三个工具

  • ffmpeg:

    • ffmpeg 是 FFmpeg 项目中最主要的命令行工具之一,用于音视频的录制、转换以及流处理。
    • 它支持从多种输入源(文件、摄像头、网络流等)读取音视频数据,然后可以对其进行编解码、过滤、转码等操作,最后将处理后的结果输出到文件或者流媒体服务器中。
  • ffplay:

    • ffplay 是 FFmpeg 提供的一个简单音视频播放器,基于 SDL(Simple DirectMedia Layer)库。
    • 它能够播放多种音视频格式,支持快进、快退、循环播放等基本功能,是调试和测试音视频文件的方便工具。
  • ffprobe:

    • ffprobe 是 FFmpeg 提供的音视频流分析工具,用于分析媒体文件或者流的详细信息。
    • 它可以提取音视频文件的元数据(如分辨率、编码格式、帧率、比特率等),帮助用户了解和分析媒体文件的特性和结构。

2、include库

        用于后续的二次开发

  • libavcodec:

    • 这是 FFmpeg 中最重要的模块之一,包含了各种音视频编解码器。
    • libavcodec 提供了将音频和视频数据编码和解码的功能。例如,它支持将视频从一种格式转换为另一种格式,如将 H.264 编码的视频转换为 MPEG-2 编码的视频。
    • FFmpeg 中的许多命令行工具和应用程序都依赖于 libavcodec 来处理音视频编解码任务。
  • libavdevice:

    • 这个模块包含了各种设备的输入和输出支持代码。
    • libavdevice 允许 FFmpeg 支持不同的音视频输入和输出设备,如摄像头、音频输入设备、视频捕获卡等。
    • 例如,使用 libavdevice 可以从摄像头捕获视频数据或从麦克风捕获音频数据。
  • libavfilter:

    • libavfilter 模块实现了音视频过滤器框架。
    • 这个模块允许用户应用各种音视频过滤器来处理音视频流。过滤器可以用来进行裁剪、缩放、旋转、去噪、水印等操作。
    • FFmpeg 中的 ffmpeg 命令行工具通过 libavfilter 支持将一个或多个过滤器应用到输入音视频流,并将输出写入到文件或者流媒体服务器。
  • libavformat:

    • libavformat 提供了音视频格式的封装和解封装功能。
    • 这个模块允许 FFmpeg 支持从各种音视频格式中读取数据,以及将音视频数据封装为不同的格式,如 MP4、AVI、FLV 等。
    • 通过 libavformat,FFmpeg 能够处理从本地文件到网络流媒体的广泛应用场景。
  • libavutil:

    • libavutil 是一个工具库,提供了各种用于音视频处理的工具函数。
    • 这个模块包含了用于数学运算、数据结构操作、字节操作、日志、时间处理等功能的工具函数。
    • 许多 FFmpeg 的其他模块都依赖于 libavutil 中的函数来实现它们的功能。
  • libswresample:

    • libswresample 提供了音频重采样功能。
    • 这个模块用于将音频数据从一个采样率或格式转换为另一个采样率或格式,以便匹配特定的音频设备或格式要求。
    • FFmpeg 中处理音频流时经常需要使用 libswresample 来进行采样率调整或格式转换。
  • libswscale:

    • libswscale 提供了视频图像缩放和颜色空间转换的功能。
    • 这个模块可以将视频帧从一种像素格式转换为另一种像素格式,以及进行图像大小的缩放和裁剪。
    • FFmpeg 使用 libswscale 来处理视频流中的图像缩放、格式转换以及色彩空间的转换,例如将 RGB 格式的图像转换为 YUV 格式。

3、lib库

  • libavcodec.a:

    • libavcodec.a 是 FFmpeg 中的静态链接库,包含了各种音视频编解码器的实现代码。静态库在编译时会被直接链接到应用程序中,使得应用程序在运行时不再需要动态加载。
  • libavdevice.a:

    • libavdevice.a 是包含各种音视频输入和输出设备支持代码的静态链接库。它允许应用程序通过 FFmpeg 访问和操作音视频设备,如摄像头、音频输入设备等。
  • libavfilter.a:

    • libavfilter.a 包含音视频过滤器框架的实现代码。这个库允许应用程序使用各种过滤器对音视频流进行处理,如裁剪、缩放、旋转、去噪等操作。
  • libavformat.a:

    • libavformat.a 包含音视频格式封装和解封装的实现代码。它允许应用程序读取和写入各种音视频格式的文件和流媒体。
  • libavutil.a:

    • libavutil.a 是 FFmpeg 的实用工具函数库的静态链接库。它包含了各种常用的工具函数,用于数学运算、数据结构操作、日志处理等。
  • libswresample.a:

    • libswresample.a 包含音频重采样功能的实现代码。它允许应用程序将音频数据从一个采样率或格式转换为另一个采样率或格式。
  • libswscale.a:

    • libswscale.a 包含视频图像缩放和颜色空间转换功能的实现代码。它允许应用程序对视频帧进行大小缩放、像素格式转换以及色彩空间转换。
  • pkgconfig:

    • pkgconfig 目录包含了用于 pkg-config 工具的配置文件。这些文件允许开发者在编译和链接应用程序时,通过 pkg-config 查询 FFmpeg 库的编译和链接选项。

四、注意事项

        如果需要关闭静态库,打开动态库,可以在第一条命令的末尾再添加下述命令

--disable-static  --enable-shared

        在编译过程中,如果对于一些参数的意义不太清楚,可以通过下述命令来查看命令的含义

./configure -help | grep "需要查看的参数名"

五、可能出现的一些问题

1、某些工具未安装/版本过久

执行下述命令:

sudo apt update
sudo apt upgrade
sudo apt install nasm

2、缺少pkg-config工具

这里其实和上述问题处理一样

sudo apt install pkg-config

3、缺少ffmplay

如果安装结束发现bin目录下没有ffmplay,那就需要先安装,再重新执行第二部分的内容

sudo apt install libsdl2-dev

相关文章:

02.Linux下安装FFmpeg

目录 一、下载FFmpeg的编译源码 二、编译源码 三、ffmpeg工具结构解析 1、bin目录 2、include库 3、lib库 四、注意事项 五、可能出现的一些问题 1、某些工具未安装/版本过久 2、缺少pkg-config工具 3、缺少ffmplay FFmpeg 是一个开源的跨平台音视频处理工具集&…...

华为RH2288H V2服务器,远程端口安装Linux操作系统

1、管理口 每台服务器的管理口不一样的,假如我的管理IP地址为:192.168.111.201 使用网线,将管理口和自己电脑连接起来,自己ip地址设置成和管理ip同一网段。 使用 ie 浏览器,如果是Edge,必须在Internet Exp…...

JS在线加密简述

JS在线加密,是指:在线进行JS代码混淆加密。通过混淆、压缩、加密等手段,使得JS源代码难以阅读和理解。从而可以有效防止代码被盗用或抄袭,保护开发者的知识产权和劳动成果。常用的JS在线加密网站有:JShaman、JS-Obfusc…...

理想汽车提出3DRealCar:首个大规模3D真实汽车数据集

理想提出3DRealCar,这是第一个大规模 3D 实车数据集,包含 2500 辆在真实场景中拍摄的汽车。我们希望 3DRealCar 可以成为促进汽车相关任务的宝贵资源。 理想汽车提出3DRealCar:首个大规模3D真实汽车数据集! 我们精心策划的高质量3DRealCar数…...

HTML5文旅文化旅游网站模板源码

文章目录 1.设计来源文旅宣传1.1 登录界面演示1.2 注册界面演示1.3 首页界面演示1.4 文旅之行界面演示1.5 文旅之行文章内容界面演示1.6 关于我们界面演示1.7 文旅博客界面演示1.8 文旅博客文章内容界面演示1.9 联系我们界面演示 2.效果和源码2.1 动态效果2.2 源代码2.3 源码目…...

山东大学多核并行2024年回忆版

2024.6.13回忆版 矩阵向量乘不可整除代码 集合通信与点对点通信的区别 块划分、循环划分、循环块划分(14个向量,4个进程) 按行访问还是按列访问快 SISD系统问题 循环依赖问题 问题:为什么不能对这个循环并行化&#xff0…...

CentOS 7 上搭建 JavaEE 环境

CentOS 7 上搭建 JavaEE 环境 安装 Java 环境 1)检查系统中是否已安装 Java java -version如果未安装,将返回提示信息。 2)安装 Java 8 sudo yum install java-1.8.0-openjdk3)配置 Java 环境变量,编辑 /etc/prof…...

库与表管理的终极指南

数据库的库和表的管理 库的管理1.库的创建2.数据库的查看和使用3.数据库的修改4.数据库的删除 表的管理1.表的创建2.表的修改3.表的删除4.查看一个表 阅读指南: 本文章是数据库教程系列的一部分,专注于数据库的库和表管理。读者可以根据兴趣选择阅读相关…...

等级保护测评在测评中Linux系统怎么改

在等级保护测评中,针对Linux系统的整改主要是为了提高其安全性,使之符合等级保护的基本要求。 以下是一些常见的整改步骤和建议: 1. 身份鉴别: • 强化密码策略,例如设置复杂的密码规则、密码长度、密码复杂度、密码…...

Python项目开发实战:微信跳一跳辅助工具,案例教程编程实例课程详解

一、项目背景与意义 微信跳一跳是微信推出的一款小游戏,玩家需要控制一个小人从一个平台跳到另一个平台上,每成功跳过一个平台,分数就会增加。然而,随着游戏难度的增加,玩家需要更精准的控制和更快的反应速度,这往往让许多玩家感到力不从心。因此,开发一款微信跳一跳的辅…...

STM32 SWD烧写

最小电路 stm32f103x 内部已经集成了振荡电路,可以省略;rst引脚电路,可以省略,boot0,boot1不需要设置 正常烧录 -------------------------------------------------------------------STM32CubeProgrammer v2.9.0 …...

数据库系统概论(第5版教材)

第一章 绪论 1、数据(Data)是描述事物的符号记录; 2、数据库系统的构成:数据库 、数据库管理系统(及其开发工具) 、应用程序和数据库管理员; 3、数据库是长期存储在计算机内、有组织、可共享的大量数据的集合&…...

算法力扣刷题 二十六【459.重复的子字符串】

前言 字符串篇,继续。 记录 二十六【459.重复的子字符串】 一、题目阅读 给定一个非空的字符串 s ,检查是否可以通过由它的一个子串重复多次构成。 示例 1: 输入: s "abab" 输出: true 解释: 可由子串 "ab" 重复两次构成。示例…...

【Linux】虚拟机安装openEuler 24.03 X86_64 教程

目录 一、概述 1.1 openEuler 覆盖全场景的创新平台 1.2 系统框架 1.3 平台框架 二、安装详细步骤 一、概述 1.1 openEuler 覆盖全场景的创新平台 openEuler 已支持 x86、Arm、SW64、RISC-V、LoongArch 多处理器架构,逐步扩展 PowerPC 等更多芯片架构支持&…...

分布式事务:理论与实践

分布式事务:理论与实践 在现代分布式系统中,分布式事务是一种确保跨多个独立系统的一致性和完整性的方法。本文将介绍分布式事务的基本概念、实现方式、在Java中的具体实现以及在实际应用中的案例。 分布式事务的基本概念 分布式事务涉及多个独立的数…...

5、双足机器人mpc动力学模型

为计算机器人的当前实际状态x,需要建立双足质心动力学模型。 速度模型由控制输入变量推导速度公式: x向速度νx :当前机器人x方向的前进速度,初始值由速度传感器实时测量得到。y向速度νy :机器人y方向的平移速度。z向速度νz :垂直方向的速度,对于双足机器人行走时为0:…...

虚拟机配置与windows之间文件夹共享samba服务:

虚拟机配置与windows之间文件夹共享samba服务: #输入安装命令: 第一步: 下载samba cd /etc/ sudo apt-get install samba第二步: 配置用户 sudo smbpasswd -a 虚拟机用户名第三步: 进入配置文件配置共享文件 sudo vim /etc/samba/smb.conf末尾输入以下内容: [s…...

探索音频创作的无限可能——Studio One 5 软件深度解析

Studio One 5 是一款功能强大且备受赞誉的音频制作软件,无论是专业音乐制作人还是业余爱好者,都能在其中找到满足自己需求的强大功能。 对于 Mac 和 Windows 用户来说,Studio One 5 提供了一个直观且友好的操作界面。其简洁明了的布局让用户…...

CSS Flex弹性布局

一、传统布局与flex布局 1、传统布局 2、flex布局 二、flex布局原理 1、布局原理 2、flex布局体验 三、flex布局父项常见属性 1、常见的父项属性 2、flex-direction设置主轴的方向 3、justify-content 设置主轴上的子元素排列方式 4、flex-wrap 设置子元素是否换行 …...

第十六章:基于开源大模型使用huggingface在deepspeed与accelerator下继承源码权重保存而实现resume与infer

文章目录 前言一、huggingface的_save_checkpoint函数不同阶段保存内容介绍1、_save_checkpoint函数2、save_model函数3、_save函数4、save_pretrained函数5、resume说明二、模型训练Resume相关内容重载1、Resume的一次性权重载入(deepspeed_load_checkpoint)2、Resume的optimi…...

业务系统对接大模型的基础方案:架构设计与关键步骤

业务系统对接大模型:架构设计与关键步骤 在当今数字化转型的浪潮中,大语言模型(LLM)已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中,不仅可以优化用户体验,还能为业务决策提供…...

SciencePlots——绘制论文中的图片

文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了:一行…...

全球首个30米分辨率湿地数据集(2000—2022)

数据简介 今天我们分享的数据是全球30米分辨率湿地数据集,包含8种湿地亚类,该数据以0.5X0.5的瓦片存储,我们整理了所有属于中国的瓦片名称与其对应省份,方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...

江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命

在华东塑料包装行业面临限塑令深度调整的背景下,江苏艾立泰以一场跨国资源接力的创新实践,重新定义了绿色供应链的边界。 跨国回收网络:废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点,将海外废弃包装箱通过标准…...

论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)

笔记整理:刘治强,浙江大学硕士生,研究方向为知识图谱表示学习,大语言模型 论文链接:http://arxiv.org/abs/2407.16127 发表会议:ISWC 2024 1. 动机 传统的知识图谱补全(KGC)模型通过…...

WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)

一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解,适合用作学习或写简历项目背景说明。 🧠 一、概念简介:Solidity 合约开发 Solidity 是一种专门为 以太坊(Ethereum)平台编写智能合约的高级编…...

C++ 求圆面积的程序(Program to find area of a circle)

给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...

今日科技热点速览

🔥 今日科技热点速览 🎮 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售,主打更强图形性能与沉浸式体验,支持多模态交互,受到全球玩家热捧 。 🤖 人工智能持续突破 DeepSeek-R1&…...

3403. 从盒子中找出字典序最大的字符串 I

3403. 从盒子中找出字典序最大的字符串 I 题目链接:3403. 从盒子中找出字典序最大的字符串 I 代码如下: class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...

华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建

华为云FlexusDeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色,华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型,能助力我们轻松驾驭 DeepSeek-V3/R1,本文中将分享如何…...