ffmpeg下有7个library,分别是:
- libavutil
- libswscale
- libswresample
- libavcodec
- libavformat
- libavdevice
- libavfilter
本文内容主要源于ffmpeg官网对各个库的简介
ffmeg
libavutil:(通用工具库)
libavutil十一个实用的工具库用于辅助可移植的多媒体编程。它包含安全的可移植的字符串函数,随机数生成器,数据结构,附加的数学函数,密码学和多媒体相关功能(例如像素和样本格式的枚举)。它不是 libavcodec 和 libavformat 都需要的代码库。
libswscale:(图像转换)
libswscale库执行高度优化的图像缩放以及色彩空间和像素格式转换操作。
具体来说,这个库执行以下转换:
- Recailing:是改变视频大小的过程。 有几个重新缩放选项和算法可用。 这通常是一个有损过程。
- Pixel format conversion:是将图像的图像格式和色彩空间转换的过程,例如从平面YUV420P 到RGB24 打包。 它还处理打包方式转换,即从Packed布局转换为Planar布局。
注意:如果源和目标颜色空间不同,这通常是一个有损过程。
libswresample:(音频处理)
libswresample库执行高度优化的音频重采样,重矩阵化和样本格式转换操作。
具体来说,这个库执行以下转换:
- Resampling:是改变音频码率的过程,例如从一个高采样率44100Hz转化为8000Hz。音频从高采样率转换为低采样率是一个有损的过程。有几种重采样选项和算法可用。
- Format conversion:是一个转换样本类型的过程,例如从有符号16-bit(int16_t)样本转换为无符号8-bit(uint8_t)或浮点样本。它也处理打包方式转换,如从Packed布局转换为Planar布局。
- Rematrixing:是改变通道布局的过程,例如从立体声到单声道。当输入通道不能映射到输出流时,这个过程是有损的,因为它涉及不同的增益因子和混合。
通过专用选项启用各种其他音频转换(例如拉伸和填充)。
libavcodec:(编解码库)
libavcodec库提供了一个通用的编码/解码框架,并且包含用于音频、视频个字幕流的多个编解器和解码器
共享架构提供从比特流 I/O 到 DSP 优化的各种服务,使其适用于实现鲁棒和快速的编解码器以及实验。
libavformat:(封装与解封装,如MP4、RMVB等)
libavformat库为音频、视频和字幕流的复用和解复用(muxing and demuxing)提供了一个通用框架。它包含多个用于媒体容器格式的多个复用器和解复用器。
它还支持多种输入和输出协议来访问媒体资源。
libavdevice:(设备库、如录制、播放等)
libavdevice 库提供了一个通用框架,用于从许多常见的多媒体输入/输出设备进行抓取和渲染,并支持多种输入和输出设备,包括 Video4Linux2、VfW、DShow 和 ALSA。
libavfilter:
libavfilter 库提供了一个通用的音频/视频过滤框架,其中包含多个过滤器、源和接收器。