FFmpeg is a collection of libraries and tools to process multimedia content
such as audio, video, subtitles and related metadata.
## Libraries
* `libavcodec` provides implementation of a wider range of codecs.
* `libavformat` implements streaming protocols, container formats and basic I/O access.
* `libavutil` includes hashers, decompressors and miscellaneous utility functions.
* `libavfilter` provides means to alter decoded audio and video through a directed graph of connected filters.
* `libavdevice` provides an abstraction to access capture and playback devices.
* `libswresample` implements audio mixing and resampling routines.
* `libswscale` implements color conversion and scaling routines.
## Tools
* [ffmpeg](https://ffmpeg.org/ffmpeg.html) is a command line toolbox to
manipulate, convert and stream multimedia content.
* [ffplay](https://ffmpeg.org/ffplay.html) is a minimalistic multimedia player.
* [ffprobe](https://ffmpeg.org/ffprobe.html) is a simple analysis tool to inspect
multimedia content.
* Additional small tools such as `aviocat`, `ismindex` and `qt-faststart`.
1. libavformat:封装模块,封装与解封装
处理mp4/flv等文件封装格式与RTMP/RTSP/HLS等网络协议封装格式
2. libavcodec:编码模块,编码与解码
处理音频和视频编解码
3. libavfilter:滤镜模块,可以有多路输入与多路输出
4. libswscale:视频图像转换
5. libswresample:音频重采样
6. libavdevice:
7. libavutil:通用工具
首先ffmpeg库分为 6个库组成:
(1) libavformat :用于各种音视频封装格式的生成和解析,包括获取编解码所需信
息以生成编解码上下文结构和读取音视频帧等功能;
(2) libavcodec :用于各种类型声音/图像编解码;
(3) libavutil :包含一些公共的工具函数;
(4) libswscale :用于视频场景比例缩放、色彩映射转换;
(5) libavfilter: 用于后期效果处理,比如添加水印等;
(6) libavdevice:用于视频源的获取;
上面6个库相互协作完成了下面的3个示例程序:
(1)ffmpeg :该项目提供的一个工具,可用于格式转换、解码或电视卡即时编码等;
(2)ffsever :一个 HTTP 多媒体即时广播串流服务器;
(3)ffplay :是一个简单的播放器,使用 ffmpeg 库解析和解码,通过SDL显示;