android的多媒体框架如今已经演变得非常复杂的,这里面原因多种多样,后续争取逐步总结完整。
我们先用一个最基础的mediaplayer播放视频示意图看一下与架构之间的关联(实际android各种完整的媒体通路要更复杂数十倍以上),用户创建一个播放器APK或者APK需要播放一个视频,通过framework层的mediaplayer进行调用播放,mediaplayer会通过mediaserver在native服务层取找到解码器,通过软件解码 或者 硬件解码(如GPU等来实现)进行解码,然后通过surface进行显示。最后surface要送显示。这个时候需要通过linux的显示驱动 framebuffer来送到底层硬件驱动中,操作硬件把画面显示出来。

一个视频播放总体思路还是:APK触发媒体业务,通过Application Framework封装的API进行业务播放,然后Framework到本地系统库层级去指定 解码与显示 通路组合(这里选择非常多样,一部分与APK传递的参数相关,更多的还和不同媒体使用场景决策,设备类型与配置相关,后面会提到),从解码选择 的硬解码还是软解码不同 决定是否要使用底层linux硬件解码驱动,根据显示通路选择 对应 linux底层驱动进行画面显示。

————————————————

安卓音视频播放-总体架构 - 简书