]android多媒體本地播放流程video playback--base on jellybean (二)

來源:互聯網
上載者:User

    我們學習一種新事物必然首先都要對該事物要有個大體的瞭解,熟悉它的整體架構,然後進行劃分歸類,接下來才是各個擊破,逐步學習乃至掌握。對於要學習android Multimedia的人來說也是如此,先來個總括吧 !我打算分三部分來講解,請聽我娓娓道來....
一:多媒體簡介
     為啥要講多媒體的概念呢?可能很多人都對這個名稱解釋不怎麼瞭解,所以在這普及普及。
     媒體(Media)就是人與人之間實現資訊交流的中介,簡單地說,就是資訊的載體,也稱為媒介。多媒體是電腦和視頻技術的結合,實際上它是兩個媒體;聲音和映像,或者用現在的術語:音響和電視。多媒體本身有兩個方面,和所有現代技術一樣它是由硬體和軟體,或機器和思想混合組成。可以將多媒體技術和功能在概念上區分為控制系統和資訊。多媒體之所以能夠實現是依靠數字技術。多媒體代表數字控制和數位媒體的匯合,電腦是數字控制系統,而數位媒體是當今音頻和視頻最先進的儲存和傳播形式。事實上有人就簡單地認為多媒體是電腦和電視的結合。電腦的能力達到即時處理電視和聲音資料流的水平,這時多媒體就誕生了。
二:android多媒體架構演變曆史
       android 的多媒體架構從android誕生以來,發生了天翻地覆的變化,包括引擎的更改,單獨處理流媒體的播放器nuplayer的加入,到最新jellybean(android4.1)nuplayer逐步加入stagefrightplayer的功能,可能以後stagefight引擎會被nuplayer取代,那都是後話了。但是openomx(即引擎串連codec的紐帶)一直都得到了保持。
       在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 ,總體架構沒有多大變化。
      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/下就可以調試了。記得重啟!講了好多廢話,還是沒有看到總體架構,罪      
 
 
 
 
     
 我們可以發現上層APK要播放視頻,首先得獲得一個player,而這個player的類型根據你媒體檔案的類型來決定的,分配的任務由mediaplayerservice來完成,除了獲得player外最主要的是到底選用哪種編碼器進行編解碼,這個過程由awesomeplayer和omxcodec來完成,至於聲音和映像就交由audioflinger和surfaceflinger來完成了。具體的調用實現,下一篇videoplayerback將會慢慢討論和學習。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.