02.Linux下安装FFmpeg
目录一、下载FFmpeg的编译源码
二、编译源码
三、ffmpeg工具结构剖析
1、bin目录
2、include库
3、lib库
四、注意事项
五、可能出现的一些问题
1、某些工具未安装/版本过久
2、缺少pkg-config工具
3、缺少ffmplay
FFmpeg 是一个开源的跨平台音视频处置惩罚工具集,它包含了一系列的程序、库和工具,用于录制、转换和流处置惩罚音视频文件和流媒体。
一、下载FFmpeg的编译源码
进入网站:http://ffmpeg.org/download.html
https://img-blog.csdnimg.cn/direct/3d3eb6e13e884c0a9a5001e278ac39d0.png
在网站中先择git地址进行下载。假如git下载比力慢,也可以将选择浏览器下载后转移到Linux虚拟机中或直接在Ubuntu的内置浏览器中进行下载。
二、编译源码
执行下述命令:
./configure --prefix=/usr/local/ffmpeg --enable-debug=3 --enable-ffplay
sudo make -j 4
sudo make install
假如编译乐成,那么将会在安装路径/user/local/ffmpeg下出现如下子目录
https://img-blog.csdnimg.cn/direct/6fb7b5d5cc1e4027a1025db1a059ee1a.png
三、ffmpeg工具结构剖析
下面我们来看一下安装好的ffmpeg中的这些子目录中我们需要使用到的东西
[*] bin:
[*]bin 目录一样平常存放可执行文件(binaries),即程序的二进制文件。在 FFmpeg 中,这个目录存放了 ffmpeg、ffplay、ffprobe 等命令行工具的可执行文件。当你在终端中输入命令时,系统会在这个目录中查找对应的可执行文件来执行命令。
[*] include:
[*]include 目录通常存放头文件(header files),这些文件包含了程序接口的声明和定义,供开发者在自己的程序中引用和调用。在 FFmpeg 中,这个目录存放了各个模块的头文件,如 libavcodec、libavformat 等模块的头文件,答应开发者在自己的代码中使用 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、某些工具未安装/版本过久
https://img-blog.csdnimg.cn/direct/de8370436aab43caa11724641266dd87.png
执行下述命令:
sudo apt update
sudo apt upgrade
sudo apt install nasm
2、缺少pkg-config工具
https://img-blog.csdnimg.cn/direct/f885e865acb9477b9fcf7e8a7aabfc84.png
这里其实和上述问题处置惩罚一样
sudo apt install pkg-config 3、缺少ffmplay
https://img-blog.csdnimg.cn/direct/d72427a880b34906bd365b50106f8f51.png
假如安装结束发现bin目录下没有ffmplay,那就需要先安装,再重新执行第二部门的内容
sudo apt install libsdl2-dev
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]