Android Multimedia Framework 架構--base on jelly...

 轉載請註明出處:太妃糖出品。哈哈java

      咱們學習一種新事物必然首先都要對該事物要有個大致的瞭解,熟悉它的總體架構,而後進行劃分歸類,接下來纔是各個擊破,逐步學習乃至掌握。對於要學習android Multimedia的人來講也是如此,先來個總括吧 !我打算分三部分來說解,請聽我娓娓道來....android

一:多媒體簡介

     爲啥要講多媒體的概念呢?可能不少人都對這個名稱解釋不怎麼了解,因此在這普及普及。c++

     媒體(Media)就是人與人之間實現信息交流的中介,簡單地說,就是信息的載體,也稱爲媒介。多媒體是計算機和視頻技術的結合,實際上它是兩個媒體;聲音和圖像,或者用如今的術語:音響和電視。多媒體自己有兩個方面,和全部現代技術同樣它是由硬件和軟件,或機器和思想混合組成。能夠將多媒體技術和功能在概念上區分爲控制系統和信息。多媒體之因此可以實現是依靠數字技術。多媒體表明數字控制和數字媒體的匯合,電腦是數字控制系統,而數字媒體是當今音頻和視頻最早進的存儲和傳播形式。事實上有人就簡單地認爲多媒體是電腦和電視的結合。電腦的能力達到實時處理電視和聲音數據流的水平,這時多媒體就誕生了。git

二:android多媒體框架演變歷史

       android 的多媒體框架從android誕生以來,發生了天方腹地的變化,包括引擎的更改,單獨處理流媒體的播放器nuplayer的加入,到最新jellybean(android4.1)nuplayer逐步加入stagefrightplayer的功能,可能之後stagefight引擎會被nuplayer取代,那都是後話了。可是openomx(即引擎鏈接codec的紐帶)一直都獲得了保持。xcode

       在Froyo2.2 之前,multimedia framework 的引擎是一直都是opencore,但爲啥用stagefright替代呢,因爲我沒有開發過opencore,不便下結論,但從網上一些言論來看,估計是opencore太過龐大,不太好維護,具體真正緣由就得問google了,若是你知道具體緣由,能夠給我留言,在此多謝了!架構

       Gingerbread  android2.3,加入了真正的支持流媒體的播發器nuplayer,若是你下有源碼,能夠用gitk \nuplayer,從gitk能夠看到以下提交:Initial support for a true streaming player for mpeg2 transport streams. 2010.12。框架

      android 3.0 到android 4.0 ,整體框架沒有多大變化。ide

      android4.1 (jellybean) 最大的變化是給c/c++部分的多媒體框架單獨設立了一個framework/av的目錄,給它開闢了一個git庫,即從framework/base下的git庫分離了出來,總算給多媒體找了個港灣。 學習

三:jellybean多媒體架構

        multimedia framework 架構 由三大部分構成:供上層程序調用的java API,鏈接java和C/C++的jni部分,多媒體引擎(stagefright)和codec接口(openmax interface)。前面兩部代碼在framework/base/media 下,後一部分在framework/av文件夾下。若是你修改的是java API接口或加LOG後編譯能夠用以下命令:make framework ,JNI 部分 make media_jni,第三部分有三個libs組成:libmedia ,libmediaplayerservice, libstagefright,命令以下 make media ,make stagefright , make mediaplayerservice. 生成各自的.so文件,用adb push 到system/下就能夠調試了。記得重啓!講了好多廢話,仍是沒有看到整體架構,罪過,好吧,上圖,更直觀。google

 

      

 

 

      

    從上兩圖,咱們能夠發現上層APK要播放視頻,首先得得到一個player,而這個player的類型根據你媒體文件的類型來決定的,分配的任務由mediaplayerservice來完成,除了得到player外最主要的是到底選用哪一種編碼器進行編解碼,這個過程由awesomeplayer和omxcodec來完成,至於聲音和圖像就交由audioflinger和surfaceflinger來完成了。具體的調用實現,下一篇videoplayerback將會慢慢討論和學習。

相關文章
相關標籤/搜索