1. 程式人生 > >FFMPEG中最關鍵的結構體之間的關係

FFMPEG中最關鍵的結構體之間的關係

注:寫了一系列的結構體的分析的文章,在這裡列一個列表:


FFMPEG中結構體很多。最關鍵的結構體可以分成以下幾類:

a)        解協議(http,rtsp,rtmp,mms)

AVIOContext,URLProtocol,URLContext主要儲存視音訊使用的協議的型別以及狀態。URLProtocol儲存輸入視音訊使用的封裝格式。每種協議都對應一個URLProtocol結構。(注意:FFMPEG中檔案也被當做一種協議“file”)

b)        解封裝(flv,avi,rmvb,mp4)

AVFormatContext主要儲存視音訊封裝格式中包含的資訊;AVInputFormat儲存輸入視音訊使用的封裝格式。每種視音訊封裝格式都對應一個AVInputFormat 結構。

c)        解碼(h264,mpeg2,aac,mp3)

每個AVStream儲存一個視訊/音訊流的相關資料;每個AVStream對應一個AVCodecContext,儲存該視訊/音訊流使用解碼方式的相關資料;每個AVCodecContext中對應一個AVCodec,包含該視訊/音訊對應的解碼器。每種解碼器都對應一個AVCodec結構。

d)存資料

視訊的話,每個結構一般是存一幀;音訊可能有好幾幀

解碼前資料:AVPacket

解碼後資料:AVFrame

他們之間的對應關係如下所示: