Android多媒体开发【3】-- 上层mediaPlayer 是如何调到Stagefright的【1】

基于android 4.1.1 源码

前文Android多媒体开发笔记【1】-- 利用SurfaceView + MediaPlayer开发最简单的视频播放器已经利用android SDK接口实现了个简单的视频播放器,对于上层应用开发者来说,想实现一个播放器只要非常简单的几步:

mediaPlayer=new MediaPlayer();
mediaPlayer.setDataSource(path);
mediaPlayer.setDisplay(surfaceView.getHolder());
mediaPlayer.prepare();
mediaPlayer.start(); 

不用考虑文件来源、协议、文件容器格式、文件音视频格式等等有关技术,只需遵循SDK接口规范简单几步就能把视频播出来。这也是android这个软件栈所要达到的目的。但是真正的播放器功能实现是在frameworks层,主要是Stagefright。

在我们研究Stagefright之前,有个问题需要解决:上层mediaPlayer 是如何调到Stagefright的?



先来张android的架构图,android的分层结构还是很清晰的。但是上层的java程序是不是顺序的一层一层调到media framework的呢?,如果按照传统的这种思想看代码的话你的脑袋都会看大。所以这里要先稍稍解释一下android的灵魂 binder,理解了binder 就成功了一半。

android的灵魂binder

binder是android 系统下的一种IPC机制。是进程间交互的一种方式。在开发android应用时,脑袋一定要一直保持C/S结构的思想。

android应用的开发说白了就是通过android提供的一系列的服务来完成自己的目的,咱们刚才也的那个播放器的apk也是需要android提供的播放器的服务来完成的。

apk是一个独立的进程,android的系统服务也是很多个独立的进程。binder的功能就是把client 和 service 连接起来。


来张简图



在你我开发应用之前,android已 经为我们提供了很多种service服务。包括mediaplayerser 这种视频播放的服务,所以我们开发应用就会很简单,只需申请这些服务就行。

如果把这些服务看成是姑娘们,当然需要一个嬷嬷来管理这些姑娘,因为在你没给钱之前嬷嬷不会让你和姑娘见面,为你服务。

这个嬷嬷就是Service Manager,Service Manager这个嬷嬷手中有个姑娘的表,新来的姑娘都会先来这里登记一下姓名和住址信息。 

这个时候你(client)来了,你需要一个擅长播放的姑娘为你服务。你需要先联系嬷嬷,嬷嬷会根据你的需求查表来找到这个播放的姑娘,接下来这个姑娘就为你服务了。

binder 机制支持了这些人之间的交互通讯 工作。可见binder是一个非常基础的组件。



下文会详细解析咱写的meidaplayer的apk是如果通过binder机制调用到  Stagefright 核心库的 。

同步发 个人网站 http://it6655.com/2012/09/android-3-html







  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值