FFmpeg从入门到精通-1.2.ffmpeg编码支持与定制
1.2.1FFmpeg的编码器支持
FFmpeg源代码中可以包含的编码非常多,常见的和不常见的都可以在编译配置列表中见到,可以通过使用编译配置命令./configure --list-encoders
FFmpeg支持的编码器比较全面,比如AAC、AC3、H.264、H.265、MPEG4、MPEG2VIDEO、PCM、FLVl的编码器支持。
1.2.1FFmpeg的解码器支持
解码主要是在输入的时候进行解码,也可以理解为将压缩过的编码进行解压缩../configure --list-decoders
FFmpeg所支持的解码器模块decoders支持了MPEG4、H.264、H.265 (HEVC)、MP3等格式。
1.2.2FFmpeg的封装支持
FFmpeg的封装(Muxing)是指将压缩后的编码封装到一个容器格式中,如果要查看FFmpeg源代码中都可以支持哪些容器格式,可以通过命令./configure --list-muxers
从封装(又称复用)格式所支持的信息中可以看到, FFmpeg支持生成裸流文件,如H.264、AAC、PCM,也支持一些常见的格式,如MP3、MP4、FLV、M3U8、WEBM等。
1.2.3FFmpeg的解封装支持
FFmpeg的解封装(Demuxing)是指将读入的容器格式拆解开,将里面压缩的音频流、视频流、字幕流、数据流等提取出来,如果要查看FFmpeg的源代码中都可以支持哪些输入的容器格式,可以通过命令./configure --list-demuxers
从解封装(Demuxer,又称解复用)格式支持信息中可以看到,FFmpeg源代码中已经支持的demuxer非常多,包含图片(image)、MP3、FLV、MP4、MOV、AVI等。
1.2.4FFmpeg的通信协议支持
FFmpeg不仅仅支持本地的多媒体处理,而且还支持网络流媒体的处理,支持的网络流媒体协议相对来说也很全面,可以通过命令./configure --list-protocols
FFmpeg支持的流媒体协议比较多,包括MMS、HTTP、HTTPS、HLS(M3U8)、RTMP、RTP,甚至支持TCP、UDP,其也支持使用file
协议的本地文件操作和使用concat协议支持的多个文件串流操作
