https://developer.android.com/reference/android/media/MediaPlayer
android的多媒体框架如今已经演变得非常复杂的,这里面原因多种多样,后续争取逐步总结完整。
我们先用一个最基础的mediaplayer播放视频示意图看一下与架构之间的关联(实际android各种完整的媒体通路要更复杂数十倍以上),用户创建一个播放器APK或者APK需要播放一个视频,通过framework层的mediaplayer进行调用播放,mediaplayer会通过mediaserver在native服务层取找到解码器,通过软件解码 或者 硬件解码(如GPU等来实现)进行解码,然后通过surface进行显示。最后surface要送显示。这个时候需要通过linux的显示驱动 framebuffer来送到底层硬件驱动中,操作硬件把画面显示出来。
一个视频播放总体思路还是:APK触发媒体业务,通过Application Framework封装的API进行业务播放,然后Framework到本地系统库层级去指定 解码与显示 通路组合(这里选择非常多样,一部分与APK传递的参数相关,更多的还和不同媒体使用场景决策,设备类型与配置相关,后面会提到),从解码选择 的硬解码还是软解码不同 决定是否要使用底层linux硬件解码驱动,根据显示通路选择 对应 linux底层驱动进行画面显示。
————————————————
原文链接:https://blog.csdn.net/runafterhit/article/details/109020673
Android Media (Audio) Framework 多媒体系统框架 - maxiongying - 博客园
android 多媒体框架服务之StagefrightPlayer和OMXCodec实现原理学习_zds05的专栏-CSDN博客
https://developer.android.com/reference/android/media/MediaPlayer
Android MediaPlayer+Stagefright框架(音频)图解_landishu的专栏-CSDN博客
吾皇的博客_yanbixing123_CSDN博客-i.MX6-IPU子系统,i.MX6Q---IPU总结笔记,嵌入式领域博主