FFmpeg4入门系列教程2:开发组件介绍

索引地址:系列教程索引地址

上一篇:FFmpeg4入门系列教程1:编译源码

基本组件

FFmpeg基本组件包括:

可执行文件

ffmpeg:该项目提供的一个工具,可用于格式转换、解码或电视卡即时编码等;
ffsever:一个 HTTP 多媒体即时广播串流服务器;(4.x版本中已经没有了)
ffplay:是一个简单的播放器,使用ffmpeg 库解析和解码,通过SDL显示;
ffprobe:是一个多媒体流分析工具。它从多媒体流中收集信息,并且以人类和机器可读的形式打印出来。它可以用来检测多媒体流的容器类型,以及每一个多媒体流的格式和类型。它可以作为一个独立的应用来使用,也可以结合文本过滤器执行更复杂的处理。

库文件

FFmpeg提供所有功能的重要部件,是所有操作的代码实现。通过库文件,我们才能使用可执行文件来处理音视频。通过库文件,我们可以通过头文件来调用具体函数来处理音视频。

libavcodec

编解码库,封装了Codec层,但是有一些codec是具备自己的 License 的,FFmpeg不会默认添加像libx264、FDK-AAC、Lame等库,但是 FFmpeg像一个平台,可以将其他的第三方codec以插件的方式添加进来,为开发者提供统一接口。

libavformat

文件格式和协议库,封装了Protocol层和Demuxer、Muxer层,使得协议和格式对于开发者来说是透明的。

libavfilter

音视频滤镜库,该模块包含了音频特效和视频特效的处理,在使用 FFmpeg的API进行编解码的过程中,可以使用该模块高效的为音视频数据做特效处理。

libavdevice

输入输出设备库,比如需要编译出播放声音或者视频的工具 ffplay,就需要确保该模块是打开的,同事也需要libsdl的预先编译,该设备模块播放声音和视频都又是使用libsdl库。

libavutil

核心工具库,最基础模块之一,其他模块都会依赖该库做一些基本的音视频处理操作。

libswresample

用于音频重采样,可以对数字音频进行声道数、数据格式、采样率等多种基本信息的转换。

libswscale

该模块用于图像格式转换,可以将 YUV 的数据转换为RGB的数据。

libpostproc

该模块用于进行后期处理,当我们使用filter的时候,需要打开这个模块,filter会用到这个模块的一些基础函数比较老的 ffmpeg 还会编译出 avresamle模块,也是用于对音频原始出具进行重采样的,但是已经被废弃,推荐使用libswresample替代。另外,库里还可以包含对 H.264/MPEG-4 AVC 视频编码的X264库,是最常用的有损视频编码器,支持CBR、VBR模式,可以在编码的过程中直接改变码率的设置,在直播的场景中非常适用!可以做码率自适应的功能。

头文件

二次开发使用的头文件(一系列.h文件),通过它我们可以调用FFmpeg库进行音视频处理。

文档

FFmpeg官方发布的文档,包括参考手册、官方示例代码等等。

支持编码

1
ffmpeg -codecs

支持格式

1
ffmpeg -formats

支持协议

1
ffmpeg -protocols

下一篇:FFmpeg4入门系列教程3:输出版本号