Android中真正的Player

來源:互聯網
上載者:User

1.  在前面的介紹中,從Java到MediaPlayer---Binder---MediaPlayerService::Client已經講清楚了。可是,在MediaPlayerService::Client <MediaPlayerService::create-> new Client / MediaPlayerService::Client::setDataSource->getPlayerType/createPlayer->android::createPlayer>中調用android::createPlayer之後,並把新建立的真正的Player儲存到MediaPlayerService::Client中的mPlayer之後就沒有下文了。

 

2. 真正的Player到底是什麼樣的?

根據本人的瞭解,有PVPlayer, StagefrightPlayer,MidiFile,VorbisPlayer,每個Player處理不同的媒體類型,他們通過getPlayerType(const char* url)的傳回值進行分工完成。每個Player都有自己的特長,並做自己善於做的事情。詳細分工情況見代碼:sp<MediaPlayerBase> createPlayer(player_type
playerType, void* cookie,
        notify_callback_f notifyFunc)函數。

3. 如果要在自己的晶片上實現硬體Demux和硬體Decoder(如對於機頂盒中的TS流),怎麼辦呢?

據本人瞭解,有兩種辦法:

1)基於MediaPlayerInterface介面,實現其中所有的介面函數,自已建立一個XXPlayer,並增加到android::createPlayer中。每個介面函數的具體實現就與以前在Linux環境下實現的方式一樣,簡單吧,以前的成果都可以用上了。

2)在現在的Player(如StagefrightPlayer)中寫Extractor和Decoder外掛程式。

為了實現第二種方案,需要先瞭解StagefrightPlayer的架構。為什麼兩種方案都需要瞭解呢,因為怎麼做,取決於你的首席架構師或CTO等。

 

 

 

 

 

相關文章

聯繫我們

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