02.Linux下安装FFmpeg

ops/2024/9/23 6:39:35/

目录

一、下载FFmpeg的编译源码

二、编译源码

ffmpeg%E5%B7%A5%E5%85%B7%E7%BB%93%E6%9E%84%E8%A7%A3%E6%9E%90-toc" style="margin-left:0px;">三、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%E5%B7%A5%E5%85%B7%E7%BB%93%E6%9E%84%E8%A7%A3%E6%9E%90">三、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


http://www.ppmy.cn/ops/54989.html

相关文章

kali/ubuntu安装vulhub

无须更换源,安装docker-compose apt install docker.io docker -vdocker-compose #提示没有,输入y安装mkdir -p /etc/docker vi /etc/docker/daemon.json #更换dockerhub国内源┌──(root㉿kali)-[/home/kali/vulhub-master/tomcat/CVE-2017-12615] …

树洞陪聊陪玩交友程序系统源码,解锁交友新体验

在繁忙的都市生活中,你是否渴望找到一片属于自己的秘密花园,倾诉心声、分享快乐?今天,就让我带你走进这片名为“树洞”的神秘之地,感受陪聊陪玩交友的全新魅力! 🌳树洞陪聊陪玩交友程序系统 你…

使用nvm命令进行node和npm版本下载以及切换

下载以及安装nvm方式 https://blog.csdn.net/ppz8823/article/details/130862191 1.查看nvm版本 nvm -v2.查看node 和 npm版本 node -v npm -v3.使用nvm查看已下载的node版本 nvm ls4.使用nvm 查看可使用的在线node版本 nvm list available4.下载想要使用的node版本&#x…

mybatisplus多条件对象xml分页查询

不要用它自带的 selectPage方法,会有传参问题 controller import java.util.Set;RestController RequiredArgsConstructor RequestMapping("/deviceInfo" ) public class DeviceInfoController {private final DeviceInfoService deviceInfoService;/**…

MoneyPrinterPlus:AI自动短视频生成工具-微软云配置详解

MoneyPrinterPlus可以使用大模型自动生成短视频,我们可以借助Azure提供的语音服务来实现语音合成和语音识别的功能。 Azure的语音服务应该是我用过的效果最好的服务了,微软还得是微软。 很多小伙伴可能不知道应该如何配置,这里给大家提供一…

模拟QQ聊天界面遇到的问题:关于PyQt5 GUI模块不允许在多线程中进行操作的解决办法

简介 今天想要使用PyQt5结合Websocket实现一个小小的QQ聊天界面。 介绍一下我实现这个功能的具体思路:GUI界面运行起来后,创建一个线程去连接Websocket服务器,然后主界面类中实现了websocket的基本回调函数。比如,发送消息的回调…

机器学习原理之 -- 随机森林分类:由来及原理详解

随机森林分类器是机器学习中一种强大且灵活的集成学习方法。它通过构建多棵决策树并结合其结果来提高分类精度和稳定性。本文将详细介绍随机森林分类器的由来、基本原理、构建过程及其优缺点。 二、随机森林的由来 随机森林(Random Forest)由Leo Breima…

58.鸿蒙系统app(HarmonyOS)(ArkUI)更改应用程序图标

替换xx\MyApplication4.30\entry\src\main\resources\base\media目录下icon.png文件 54.HarmonyOS鸿蒙系统 App(ArkTS)tcp socket套接字网络连接收发测试_鸿蒙socket连接测试-CSDN博客