Android多媒體開發筆記[3]-- 上層mediaPlayer 是如何調到Stagefright的

來源:互聯網
上載者:User

[java]
mediaPlayer=new MediaPlayer(); 
mediaPlayer.setDataSource(path); 
mediaPlayer.setDisplay(surfaceView.getHolder()); 
mediaPlayer.prepare(); 
mediaPlayer.start();  
不用考慮檔案來源、協議、檔案容器格式、檔案音視頻格式等等有關技術,只需遵循SDK介面規範簡單幾步就能把視頻播出來。這也是android這個軟體棧所要達到的目的。但是真正的播放器功能實現是在frameworks層,主要是Stagefright。
在我們研究Stagefright之前,有個問題需要解決:上層mediaPlayer 是如何調到Stagefright的?


先來張android的架構圖,android的分層結構還是很清晰的。但是上層的java程式是不是順序的一層一層調到media framework的呢?,如果按照傳統的這種思想看代碼的話你的腦袋都會看大。所以這裡要先稍稍解釋一下android的靈魂 binder,理解了binder 就成功了一半。
android的靈魂binder
binder是android 系統下的一種IPC機制。是進程間互動的一種方式。在開發android應用時,腦袋一定要一直保持C/S結構的思想。
android應用的開發說白了就是通過android提供的一系列的服務來完成自己的目的,咱們剛才也的那個播放器的apk也是需要android提供的播放器的服務來完成的。
apk是一個獨立的進程,android的系統服務也是很多個獨立的進程。binder的功能就是把client 和 service 串連起來。


來張簡圖


在你我開發應用之前,android已 經為我們提供了很多種service服務。包括mediaplayerser 這種視頻播放的服務,所以我們開發應用就會很簡單,只需申請這些服務就行。
如果把這些服務看成是姑娘們,當然需要一個嬤嬤來管理這些姑娘,因為在你沒給錢之前嬤嬤不會讓你和姑娘見面,為你服務。
這個嬤嬤就是Service Manager,Service Manager這個嬤嬤手中有個姑娘的表,新來的姑娘都會先來這裡登記一下姓名和住址資訊。
這個時候你(client)來了,你需要一個擅長播放的姑娘為你服務。你需要先聯絡嬤嬤,嬤嬤會根據你的需求查表來找到這個播放的姑娘,接下來這個姑娘就為你服務了。
binder 機制支援了這些人之間的互動通訊 工作。可見binder是一個非常基礎的組件。

 


 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.