前言 線程是電腦中的一種執行單元,是操作系統進行調度的最小單位。它是進程中的實際運行單位,每個進程可以包含多個線程。線程可以理解為進程中的一個執行流,它獨立運行,擁有獨立的棧和寄存器,但共用進程的資源,如記憶體空間、文件等。線程通過併發執行,將一個進程的任務劃分成多個子任務並行處理,以提高程式的 ...
前言
Android Media是一塊非常龐大的內容,上到APP的書寫,中到播放器的實現、封裝格式的瞭解,下到編解碼組件的封裝、VPU API的瞭解,每塊內容的學習都需要我們下很大的功夫。此外,我們還要對相關的模塊進行瞭解,比如AudioFlinger、SurfaceFlinger等,他們與Media相關交織共同構建了Android多媒體平臺。
音視頻開發的知識本就繁雜細碎,這些內容融入到Android框架中,對於初學者而言又複雜了些許。網上已經有很多優秀的文章解析了Android Media框架,筆者閱讀這些文章收穫了許多,但同樣也有許多問題得不到解決。“紙上得來終覺淺,絕知此事要躬行”,筆者決定系統地學習Android Media框架,從去年開始潦草記錄了幾十篇學習筆記,學習過程中碰到了許許多多的問題,思考過後對Android Media框架也有了新的認識,再回過頭來看,很多內容依舊是一知半解,很多理解也是“自以為是”。深思熟慮後,筆者決定重新思考整理,從全新的角度切入,力求能夠更系統、更深入地理解Android Media框架,同時也會把思考以文章的形式整理出來,放在網上供讀者參考。由於筆者水平有限,文章中難免存在錯誤,也請讀者在順著文章思路閱讀的過程中保持審慎思考,如有錯誤歡迎指出。
在之前的學習中,筆者的想法是從Framework API開始學習,按照調用的順序一層一層向下揭開框架的面紗。但是在實際的學習過程中,筆者發現上層實現是緊緊依賴下層實現的,不理解下層就很難通透地理解上層。為了學地通體透亮,筆者這次將從底層開始解析,一層一層向外包裹,直至延伸到最外層的API。
內容安排
Android Media框架有非常多的模塊,筆者將要學習的內容以框架的形式繪製出來,在這個合集中我們將自下而上學習:
-
Android OpenMAX框架
-
Android Codec2框架
-
MediaCodec
-
NuPlayer
-
MediaExtractor Service
-
MediaPlayerService
-
MediaPlayer API
以上是精簡的模塊,我們要學習的遠遠不止上述內容,該合集將會包括例如OpenMAX框架會包含spec閱讀、OMX IL Component實現,OMX IL Core實現、OMX IL Client等等,Codec2框架解析同樣包含很多內容。由於內容多且廣,工作繁忙,文章不會更新太快,儘量做到每篇文章都有所可讀!
最後還要再強調一下,由於筆者水平有限,文章中如存在錯誤,也請讀者不吝賜教。
關註公眾號《青山渺渺》獲取更多Android Media框架解析