ffmpeg简介及编码支持

一、 ffmpeg简介

FFmpeg框架的基本组成包含 AVFormat 、AVCodec、AVFilter、AVDevice、AVUtil等模块库,如下图片: Alt

1 、FFmpeg的封装模块AVFormat

AVFormat中实现了目前多媒体领域中的绝大多数媒体封装格式,包含封装和解封装,如MP4、FLV、KV、TS等文件封装格式,RTMP、RTSP、MMS、HLS等网络协议封装格式。FFmpeg是否支持某种媒体封装格式,取决于编译时是否包含了该格式的封装库。根据实际需求,可进行媒体封装格式的扩展,增加自己定制的封装格式,即在AVFormat中增加自己的封装处理模块。

2、FFmpeg的编解码模块AVcodec

AVCodec中实现可目前多媒体领域绝大多数常用的编解码格式,既支持编码,也支持解码。AVCodec除了支持MPEG4、AAC、MJPEG等自带的媒体编解码格式之外,还支持第三方的编解码器,如H.264(AVC)编码,需要使用x264编码器;H.265(HEVC)编码,需要使用x265编码器;MP3(mp3lame)编码,需要使用libmp3lame编码器。如果希望增加自己的编码格式,或者硬件编解码,则需要在AVCodec中增加相应的编解码模块。

3、FFmpeg的滤镜模块AVFilter

AVFilter库提供了一个通用的音频、视频、字幕等滤镜处理框架。在AVFilter中,滤镜框架可以有多个输入和多个输出。如下例子

main
tmp
flip
输入
split
overlay
crop
输出
vfilp

4、FFmpeg的视频图像转换计算模块swscale

swscale模块提供了高级别的图像转换API,例如它允许进行图像缩放和像素格式转换,常见于图像从1080p转换成720p或者480p等的缩放,或者将图像数据从YUV420p转换成YUYV,或者YUV转RGB等图像格式转换。

5、FFmpeg 的音频转换计算模块seresample

swresample模块提供了高级别的音频重采样API。例如他允许操作音频采样、音频通道布局转换与布局调整。

二、编码、解码、封装、解封装支持

1、FFmpeg的编码器支持

FFmpeg支持的编码器比较全面,比如AAC、AC3、H.264、H.265、MPEG4、MPEG2VIDEO、PCM、FLV1的编码器支持。

2、FFmpeg的解码器支持

FFmpeg支持的解码器模块decoders支持了MPEG4、H.264、H.265(HEVC)、MP3等格式

3、FFmpeg的封装支持

FFmpeg支持生成裸流文件,如H.264、AAC、PCM,也支持一些常见的格式,如MP3、MP4、FLV、M3U8、WEBM等。

4、FFmpeg的解封装支持

FFmpeg源码中已经支持的demuxer非常多,包含图片(image)、MP3、FLV、MP4、MOV、AVI等

5、FFmpeg的通信协议支持

FFmpeg支持的流媒体协议比较多,包含MMS、HTTP、HTTPS、HLS(M3U8)、RTMP、RTP,甚至支持TCP,UDP,其也支持使用file协议的本地文件操作和使用concat协议支持的多个文件串流操作。

发布了29 篇原创文章 · 获赞 6 · 访问量 5142

猜你喜欢

转载自blog.csdn.net/liuzhanchun/article/details/103403131