FFmpeg本身支持一些音视频编码格式、文件封装格式与流媒体传输协议,但是支持的数量仍然有限,FFmpeg所做的只是提供一套基础的框架,所有的编码格式、文件封装格式与流媒体协议均可以做为FFmpeg的一个模块挂载在FFmpeg框架中。
支持的第三方外部库,可以通过FFmpeg源码的configure命令查看FFmpeg所支持的音视频编码格式、文件封装格式与流媒体协议。对于FFmpeg不支持的格式,可以通过 configure --help 查看所需要的第三方外部库,然后通过增加对应的编译参数选项进行支持。如下图所示:支持的比较多,截图只是一部分
定制支持格式
如果需要自己配置FFmpeg支持一些格式,比如H264视频和AAC音频编码,可以调整配置如下:
./configure --enable-libx264 --enable-libfaac --enable-gpl --enable-nonfree
注意:
enable后面的库名要根据FFmpeg版本来,每个版本的名字不一样,最好通过configure --help确认下,名字不一致会报错。
如果你需要支持的库未安装是会进行错误提示:如下图
注意
从2016年初开始,FFmpeg自身的AAC编码器质量逐步好转,至2016年年底,libfaac已经从FFmpeg源代码中剔除。
关闭相应的模块
因为FFmpeg支持的编码格式、文件封装格式、流媒体协议比较多,因此编译出来的FFmpeg体积比较大,因此裁剪一些操作,一样可以通过configure --help查看,如下图:
./configure --disable-everything 此命令关闭所有的模块
FFmpeg的编码器支持
可以通过./configure --list-encoders参数查看,如下图:
上图不完整,只有部分,我们可以看出FFmpeg支持的编码器比较全面。包括AAC、H264、H265、MPEG4、PCM、FLV1等等
FFmpeg的解码器支持
可以通过./configure --list-decoders参数查看,如下图:
FFmpeg所支持的解码器模块decoders支持了MPEG4、H264、H265、MP3等
FFmpeg的封装支持
可以通过./configure --list-muxers参数查看,如下图:
FFmpeg支持生成裸流文件,如H264-5、AAC、PCM,也支持一些常规格式如MP3、FLV、M3U8等等
FFmpeg的解封装支持
可以通过./configure --list-demuxers参数查看,如下图:
FFmpeg的通信协议支持
可以通过./configure --list-protocols参数查看,如下图: