normandie为什么不碰videoview

normandie是一套播放框架及其实现,并且90%的接口与android mediaplayer一致,包括生命周期状态机的实现等等。方便原来android框架的开发者迁移。

在android上做音视频开发的同学应该比较清楚,除了mediaplayer,android还提供了其它播放音视频的类,比如视频播放的还有videoview。
normandie在设计之初,就没有打算实现类似videoview这样的类。
videoview的优点是接口更简单,但它的缺点也是接口太简单,这里简单的意思是不够灵活。

音视频播放尤其是在线音视频播放的情况更为复杂,mediaplayer可以为开发者提供更为灵活的接口,更贴近底层框架的能力,让开发者去发挥,videoview大大的限制了开发者可以利用底层框架的能力。

下图是mediaplayer的状态机,设计的比较灵活
https://developer.android.com...
normandie为什么不碰videoview_第1张图片

android mediaplayer
https://developer.android.com...

android videoview
https://developer.android.com...

1.开发者可以基于normandie的mediaplayer api自己根据需要定制,videoview,baseplayerview都可以。
2.有开发者这么做了,并且将这个定制提供给其它业务使用,扩大了normandie的覆盖范围。但是之后随着一些业务的发展,这个定制就出现了之前提到的类似videoview不能满足业务需求的问题。
举两个例子:
(1).类似videoview的定制不容易实现预加载,因为它提供的接口不能让开发者知道更多状态信息。
预加载:同时多个palyer进行加载,但只有一个在前台播放。
(2).开发者想关心,拉取的内容的一些信息,比如分辨率等,类似videoview定制没有接口可以做。

有时候少即是多。

你可能感兴趣的:(android,播放器)