FFmpeg 學習(六):FFmpeg 核心模塊 libavformat 與 libavcodec 分析


一、libavformat介紹

libavformat的主要組成與層次調用關系如下圖:

 

AVFromatContext是API層直接接觸到的結構體,它會進行格式的封裝和解封裝,它的數據部分由底層提供,底層使用了AVIOContext,這個AVIOContext實際上就是為普通的I/O增加了一層Buffer緩沖區,再往底層就是URLContext,也就是達到了協議層,協議層的實現由很多,如rtmp、http、hls、file等,這個就是libavformat的內部封裝結構了。

二、libavcodec介紹

libavcodec模塊的主要組成和數據結構圖如下:

 

對於開發者來說,這個模塊我們能接觸到的最頂層的數據結構就是AVCodecContext,該結構體包含的就是與實際的編解碼有關的部分。

首先AVCodecContext是包含在一個AVStream里面的,即描述了這路流的編碼格式是什么,然后利用該編碼器或者解碼器進行AVPacket與AVFrame之間的轉換(實際上就是編碼或者解碼的過程),這是FFmpeg中最重要的一部分。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM