FFmpeg 是一款音视频编解码套件,提供了丰富的音视频处理调用接口。支持多种多媒体格式的封装与解封装,多种音视频编解码、多种协议的流媒体、多种色彩格式转换、多种采样率转换、多种码率转换等。
下载 FFmpeg
FFmpeg 框架基本组成包含 libavformat、libavcodec、libswscale、libswresample、libfilter、libavdevice、libavutil。
- libavformat 封装模块
libavformat 中实现了目前多媒体领域的绝大多数媒体格式,包括封装与解封装,例如 FLV、MP4、WAV 等文件格式,可以使用如下命令查看支持的封装格式:
ffmpeg -muxers
以及支持 RTMP、HLS 等等,同样你可以使用如下命令查看支持的网络协议封装格式
ffmpeg -protocols
- libavcodec 编解码模块
libavcodec 实现了目前多媒体领域大多数常用的编解码格式,libavcodec 除了支持 MPEG4、AAC、MJPEG 等自带的媒体编解码格式之外,还支持第三方编解码器,例如:H.264 (AVC) 编码,需要使用 x264 编码器;H.265 (HEVC) 编码,需要使用 x265 编码器;MP3(mp3lame) 编码,需要使用 libmp3lame 编码器。使用如下命令查看支持的编解码格式:
ffmpeg -encoders(编码器格式)/-decoders(解码器格式)
- libavfilter 提供了一个通用的音频、视频、字幕等滤镜处理框架。
- libswscale 模块提供了高级别图像转换 API, 例如它允许图像缩放和像素格式转换,比如将图像从 1080p 转成 720p,或者将图像数据从 yuv420p 转成 YUYV, 或者 YUV 转成 RGB 等图像格式。
- libswresample 模块提供了高级别的音频重采样 API,允许音频采样、音频通道布局转换。