學習ffmpeg 結構體之間關系

FFmpeg 有多個重要的結構體,解協議,解分裝,解碼,解封裝。
解協議:http,rstp,rtmp,mms。
AVIOContext,URLProtocol,URLContext主要存儲視頻音頻試用的協議類型及狀態,URLProtocol存儲輸入視頻音頻的封裝格式。每種協議都對應一個URLProtocol結構

解封裝:flv,avi,rmvb,mp4
AVFormatContext 主要存儲視頻音頻封裝格式中包含的信息;
AVInputFormat存儲視頻音頻試用的封裝格式。
每種視頻音頻封裝格式都對應一個AVInputFormat結構。

解碼:h264,mpeg2,aac,mp3,avs(真的超級多一頁都顯示不完,包含攝像頭,監控,電視等等幾乎能有視頻音頻的地方都有解碼器)
視頻音頻都有視頻流會音頻流。
每個AVStream存儲一個視頻音頻流的相關數據。
每個AVStream對應一個AVCodecContext,存儲該視頻音頻的解碼方式相關數據。
每個AVCodecContext中對應一個AVCodec,包含該視頻音頻對應的解碼器,每種解碼器對應一個AVCodec結構。

存數據:
視頻每個結構都是存一幀(一張圖)。音頻可能好幾幀。
解碼前的數據:AVPacket;
解碼后的數據:AVFormat;

關系是這樣:(引用雷神的原圖,雷神天堂一路走好,愿天堂永無代碼)


image.png
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容