安卓系统里面有两类主流的多媒体服务实现, mediaserver和mediacodec server,两套方案作为安卓系统多媒体架构的基础支撑框架,为安卓设备提供视频解码方案.
关于mediacodec和mediaserver是安卓多媒体实现的两种框架,mediaplayer是一个server ,应用是通过binder请求多媒体服务的,这方面,mediacodec也一样,它也是server,应用也是通过binder请求media codec 服务的。mediacodec也有独立的进程,通过binder请求服务。
安卓系统默认的多媒体应用是nuplayer,它用的是软解,所以有研发能力的芯片原厂都会基于自己的VPU开发一套框架,来替换掉安卓原生的框架,对接安卓的播放器接口。
平板上用mediacodec比较多,手机上用mediaserver比较多。厂商也会给予开源框架比如FFMPEG,开发一套独立于上面两套框架的第三套框架,它的目的是为了和方案解耦,不依赖于原厂VPU的特性构建自己的播放器,这种对算力有要求,必须要用强一些的芯片,所以一般再手机上用的比较多,比如bilibili的手机播放器ijkPlayer,就是基于ffmpeg.
MediaServer VS MediaCodec:
接下来我们看一下MediaCodec和MediaServer在android sdk中的位置:
首先看MediaCodec: