FFMPEG中最關鍵的結構體之間的關係
阿新 • • 發佈:2018-12-23
注:寫了一系列的結構體的分析的文章,在這裡列一個列表:
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
他們之間的對應關係如下所示: