normandie是一套播放框架及其實現,而且90%的接口與android mediaplayer一致,包括生命週期狀態機的實現等等。方便原來android框架的開發者遷移。html
在android上作音視頻開發的同窗應該比較清楚,除了mediaplayer,android還提供了其它播放音視頻的類,好比視頻播放的還有videoview。
normandie在設計之初,就沒有打算實現相似videoview這樣的類。
videoview的優勢是接口更簡單,但它的缺點也是接口太簡單,這裏簡單的意思是不夠靈活。android
音視頻播放尤爲是在線音視頻播放的狀況更爲複雜,mediaplayer能夠爲開發者提供更爲靈活的接口,更貼近底層框架的能力,讓開發者去發揮,videoview大大的限制了開發者能夠利用底層框架的能力。api
下圖是mediaplayer的狀態機,設計的比較靈活
https://developer.android.com...框架
android mediaplayer
https://developer.android.com...ide
android videoview
https://developer.android.com...spa
1.開發者能夠基於normandie的mediaplayer api本身根據須要定製,videoview,baseplayerview均可以。
2.有開發者這麼作了,而且將這個定製提供給其它業務使用,擴大了normandie的覆蓋範圍。可是以後隨着一些業務的發展,這個定製就出現了以前提到的相似videoview不能知足業務需求的問題。
舉兩個例子:
(1).相似videoview的定製不容易實現預加載,由於它提供的接口不能讓開發者知道更多狀態信息。
預加載:同時多個palyer進行加載,但只有一個在前臺播放。
(2).開發者想關心,拉取的內容的一些信息,好比分辨率等,相似videoview定製沒有接口能夠作。設計
有時候少便是多。orm