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協議支持的多個文件串流操作。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章